각 인터페이스 큐를 찾아보면 해당 인터페이스 큐는 항상 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);
}
}
}
}*/
'Network > Simulation' 카테고리의 다른 글
NS2의 802_11에 대한 의문점.. (0) | 2009.02.03 |
---|---|
모니터링 시스템 구현을 위한 동작 (0) | 2009.02.03 |
필요하면 어디서든 선언해 놓아야 한다... ns2 WLAN (0) | 2009.02.03 |
DIFS제어 방법 ns2 (0) | 2009.02.03 |
NS2에서 802_11의 재전송 수 포기에 따른 카운터를 세고 싶을 때 (0) | 2009.02.03 |