재전송 수를 구간별로 적용시키기 위해 NS2 WLAN

|

각 인터페이스 큐를 찾아보면 해당 인터페이스 큐는 항상 Queue를 참조한다는 것을 알 수 있다.
결국 Queue에 선언해 놓으면 어떤 인터페이스 큐든 적용된다는 것이다.
그리고 직접 인터페이스 큐에 인큐 디큐를 재정의 해 놓지 않는한 대부분 Queue의 인큐 디큐를 사용한다.
만약 현재 패킷이 들어갔을 때의 큐 길이를 보고 싶다면...
독시즌으로 만든 파일에서 hdr_cmn을 따라가라... 그리고 임의의 변수를 선언하고..
패킷이 들어갈때 저장해라
그러면 맥에서 항상 그 당시의 큐 길이를 확인할 수 있다.
재미있는 방법이다.

RED 방식을 조금 적용해 봤다.
//ssrc_=0;  
//slrc_=0;
/*
if(addr()==0)
{
if (strcmp(check_name,"tcp")==0){ 
  ssrc_=7;  
 slrc_=4;   
 //printf("\nslrc_ %d ssrc_ %d ch->limit_of_q %d\n",slrc_,ssrc_,ch->langth_of_q);
}

/*

if (strcmp(check_name,"ack")==0){ 
   ssrc_=5;  
 slrc_=2;   
 //printf("\nslrc_ %d ssrc_ %d ch->limit_of_q %d\n",slrc_,ssrc_,ch->langth_of_q);
}
/* 
 if( ch->langth_of_q != 0)
 {
  block_rt=ch->limit_of_q/7;
  cur_q=ch->langth_of_q;
 
   if(0<=cur_q&&cur_q<7)
   {
    if (strcmp(check_name,"ack")==0)
    {
     ssrc_=0;  
   slrc_=0;   
//   printf("\nACK 7 avr_ssrc_ %d avr_slrc_slrc_ %d ch->limit_of_q %d\n",ssrc_,slrc_,cur_q);
  }
  if(strcmp(check_name,"tcp")==0)
  { 
   ssrc_=0;  
   slrc_=0;   
//   printf("\nTCP 7 avr_ssrc_ %d avr_slrc_slrc_ %d ch->limit_of_q %d\n",ssrc_,slrc_,cur_q);
  }
   }
   else if(7<=cur_q&&cur_q<14)
   {
    if (strcmp(check_name,"ack")==0)
    {
     ssrc_=3;  
   slrc_=2;   
//   printf("\nACK 14 avr_ssrc_ %d avr_slrc_slrc_ %d ch->limit_of_q %d\n",ssrc_,slrc_,cur_q);
  }
  if(strcmp(check_name,"tcp")==0)
  { 
   ssrc_=0;  
   slrc_=0;   
//   printf("\nTCP 14 avr_ssrc_ %d avr_slrc_slrc_ %d ch->limit_of_q %d\n",ssrc_,slrc_,cur_q);
  }
   }
   if(14<=cur_q&&cur_q<21)
   {
    if (strcmp(check_name,"ack")==0)
    {
     ssrc_=6;  
   slrc_=3;   
//   printf("\nACK 21 avr_ssrc_ %d avr_slrc_slrc_ %d ch->limit_of_q %d\n",ssrc_,slrc_,cur_q);
  }
  if(strcmp(check_name,"tcp")==0)
  { 
   ssrc_=0;  
   slrc_=0;   
//   printf("\nTCP 21 avr_ssrc_ %d avr_slrc_slrc_ %d ch->limit_of_q %d\n",ssrc_,slrc_,cur_q);
  }
   }
   else if(21<=cur_q&&cur_q<28)
   {
    if (strcmp(check_name,"ack")==0)
    {
     ssrc_=7;  
   slrc_=4;   
//   printf("\nACK 28 avr_ssrc_ %d avr_slrc_slrc_ %d ch->limit_of_q %d\n",ssrc_,slrc_,cur_q);
  }
  if(strcmp(check_name,"tcp")==0)
  { 
   ssrc_=0;  
   slrc_=0;   
//   printf("\nTCP 28 avr_ssrc_ %d avr_slrc_slrc_ %d ch->limit_of_q %d\n",ssrc_,slrc_,cur_q);
  }
   }
   else if(28<=cur_q&&cur_q<35)
   {
    if (strcmp(check_name,"ack")==0)
    {
     ssrc_=7;  
   slrc_=4;   
//   printf("\nACK 35 avr_ssrc_ %d avr_slrc_slrc_ %d ch->limit_of_q %d\n",ssrc_,slrc_,cur_q);
  }
  if(strcmp(check_name,"tcp")==0)
  { 
   ssrc_=2;  
   slrc_=1;   
//   printf("\nTCP 35 avr_ssrc_ %d avr_slrc_slrc_ %d ch->limit_of_q %d\n",ssrc_,slrc_,cur_q);
  }
   }
   else if(35<=cur_q&&cur_q<42)
   {
    if (strcmp(check_name,"ack")==0)
    {
     ssrc_=7;  
   slrc_=4;   
//   printf("\nACK 42 avr_ssrc_ %d avr_slrc_slrc_ %d ch->limit_of_q %d\n",ssrc_,slrc_,cur_q);
  }
  if(strcmp(check_name,"tcp")==0)
  { 
   ssrc_=4;  
   slrc_=2;   
//   printf("\nTCP 42 avr_ssrc_ %d avr_slrc_slrc_ %d ch->limit_of_q %d\n",ssrc_,slrc_,cur_q);
  }
   }
   else if(42<=cur_q&&cur_q<49)
   {
    if (strcmp(check_name,"ack")==0)
    {
     ssrc_=7;  
   slrc_=4;   
//   printf("\nACK 49 avr_ssrc_ %d avr_slrc_slrc_ %d ch->limit_of_q %d\n",ssrc_,slrc_,cur_q);
  }
  if(strcmp(check_name,"tcp")==0)
  { 
   ssrc_=6;  
   slrc_=3;   
//   printf("\nTCP 49 avr_ssrc_ %d avr_slrc_slrc_ %d ch->limit_of_q %d\n",ssrc_,slrc_,cur_q);
  }
   }
   else if(49<=cur_q)
   {
    if (strcmp(check_name,"ack")==0)
    {
     ssrc_=7;  
   slrc_=4;   
//   printf("\nACK over avr_ssrc_ %d avr_slrc_slrc_ %d ch->limit_of_q %d\n",ssrc_,slrc_,cur_q);
  }
  if(strcmp(check_name,"tcp")==0)
  { 
   ssrc_=7;  
   slrc_=4;   
//   printf("\nTCP over avr_ssrc_ %d avr_slrc_slrc_ %d ch->limit_of_q %d\n",ssrc_,slrc_,cur_q);
  }
   }

}
}*/

And