'Network/Ns2_simulation'에 해당되는 글 4건

  1. 2009.02.18 ns2 802.11 MAC에서 현제 큐의 size를 알 수 있는 방법.
  2. 2009.02.18 TCP와 UDP
  3. 2009.02.09 거지같은... 논문들... ㅡㅡㅋ 믿을게 없다. ns2 802.11b udp 실험에서.. 1
  4. 2009.01.21 Node 30개인 경우 CWmin 8 CWmax8의 결과와 재전송의 변화에 따른 결과

ns2 802.11 MAC에서 현제 큐의 size를 알 수 있는 방법.

|
이전에 addr()을 사용하면 현제 무선 노드의 node 번호를 알 수 있다고 했다.
본인은 0번을 BS로 설정했기 때문에 결과가 0이 나오면 AP이다.

현제의 큐 상태를 확인하기 위한 소스의 수정은 크게 2가지로 나뉜다.
먼저 ns-2.33/queue/Queue.h에서 dequeue로 현재 패킷이 이벤트가 일어날 때의 큐 사이즈를 불러온다.

virtual Packet* enque(Packet* p) { // Returns previous tail
  Packet* pt = tail_;
  if (!tail_) head_= tail_= p;
  else {
   tail_->next_= p;
   tail_= p;
  }
  tail_->next_= 0;
  ++len_;
  ++num_p_; //들어오는 패킷에 시퀀스 넘버를 할당하여 deq와 비교할 때 썼다.
  hdr_cmn::access(p)->num_en=num_p_; //packet.h에 접근하여 현제 이벤트의 패킷 정보를 변경한다.
  bytes_ += hdr_cmn::access(p)->size();
  hdr_cmn::access(p)->enq_q_len_=len_; // 현제 큐 길이를 저장한다.
  return pt;
 }

 virtual Packet* deque() {
  if (!head_) return 0;
  Packet* p = head_;
  head_= p->next_; // 0 if p == tail_
  if (p == tail_) head_= tail_= 0;
  --len_;
  bytes_ -= hdr_cmn::access(p)->size();
  hdr_cmn::access(p)->deq_q_len_=len_; //실제 사용한 변수 여러 변수를 선언하고 사용하지 않더라도 남겨 둔 이유는
                                                             차 후 다른 실험들을 할 때 사용하기 위해서이다. 주석처릴 잘해야하는데 잘 안된다.
  return p;
 }

ns-2.33/common/packet.h의 struct hdr_cmn에 필요한 변수를 넣는다.
나는 
 int enq_q_len_;
 int deq_q_len_;
 int num_en;
세 변수를 넣어두었다.

ns-2.33/mac/mac-802_11.cc에서 사용하기 위해선 다음과 같은 절차를 수행한다.

struct hdr_cmn *hdr = HDR_CMN(p);
hdr->deq_q_len_
이렇게 하면 원하는 패킷의 정보를 얻을 수 있다.
And

TCP와 UDP

|
알고리즘을 적용 하였을 경우, UDP는 불공평성이 0.2대로 떨어지는 것을 확인 하였다.
이 결과는 노드가 10개인 경우에서이다.
하지만 TCP의 경우 불공평성은 50개의 노드에서 0.7대로 떨어지는 것을 확인 하였다.
구간별 실험이 더 필요하지만..
예상은 TCP가 더 많은 불공평성이 발생할 것이다였는데.
의외의 결과였다.
TCP의 성질상.. 불공평성은 더 커져야 하것만....
일단 문제의 핵심을 살펴보기 위해,
IFQ와 MAC의 손실률 알고리즘의 적용 상태를 각각 내가 정의한 trace파일로 만들어 출력해 볼 생각이다.

다음은 결과 파일이다.
And

거지같은... 논문들... ㅡㅡㅋ 믿을게 없다. ns2 802.11b udp 실험에서..

|

일반적인 환경에서 rts, cts를 사용하는 환경에서 조차..
1:1 환경의 UDP는 최대 4.9Mbps영역을 벗어나지 못한다..
걍.... 그렇다.
하지만 현재 나온 논문들의 결과들을 보았을 때, 7Mbps를 상회하는 결과들이 보인다.
나쁜넘들.. 오늘 그 이유를 알았다.
완전한 11Mbps만을 위한 환경을 구축하고선.. 테스트 한거다.
실제 완벽하게 모든 파라미터값들을 언급한 논문은 없었다.
그렇다만, 내가 알아낸 방법에 의해..
UDP가  최대 8Mbps에 근접해지는 방법을 서술하겠다.
아래는 실험 결과~
하나의 무선 단말기에 10개의 단말기가 전송을 하였을 경우..
AP는 걍 이렇게 만들어 짐다~

10 : 10 _ 31 _ 1023   up: total_byte1  7.80553   down: total_byte2  0  fairness_index:  inf   total =  7.80553

무선 파라미터 값이다.

#=================================================================
  Mac/802_11 set dataRate_          11.0e6          ;# 11Mbps
  Mac/802_11 set basicRate_         11.0e6           ;# 1Mbps
#본 실험은 거리에 따른 전송의 영향을 무시한다. 또한 1Mbps 영역의 전송 또한 무시한다.
이 파라미터 값은 상당한 영향을 미친다.
 Mac/802_11 set CWMin_         31
 Mac/802_11 set CWMax_         1023
 Mac/802_11 set SlotTime_      0.000020        ;# 20us
 Mac/802_11 set SIFS_          0.000010        ;# 10us
 Mac/802_11 set PreambleLength_        72             ;#long 144 bit, short 72
#최적의 성능을 위해 보시다시피 short PreambleLength_를 72로 할당한다. 성능이 덕분에 좀 높게 나온다.
 Mac/802_11 set PLCPHeaderLength_      48              ;# 48 bits
 Mac/802_11 set PLCPDataRate_  11.0e6           ;# 1Mbps
#이 부분 또한 엄청나게 중요한 부분이다.
보충 설명을 하자면

<802.11b의 물리 계층은 비트 동기 및 프레임 동기를 설정하고 현재의 무선채널에 대한 idle 상태와 busy상태를 MAC에 보고 하는 clear cchannel assessment(CCA)기능을 수행함으로써 하나의 무선채널을 여러 단말이 공유하는 CSMA/CA MAC이 동작할 수 있도록 하고 있다.
이를 위하여 128비트의 비트 동기용 프리앰블 영역과 48비트의 PLCP(Physical Layer Convergence Protocol)헤더로 구성된 물리 계층용 헤더가 별도로 사용되고 있다. 주의할 사항은 PLCP영역은 기존 저속 무선 LAN과의 호환을 위하여 1Mbps로 전송된다는 점이다.>

참고사항:  http://book.naver.com/bookdb/book_detail.php?bid=2620611&menu=dview&dencrt=xQFdkdw8Y5VjlEneeHdFREZKYlNGclZheUVqUGhiSmx1TE1TR3FTYi9CZGdFZng4S28yMHg3eHBjQ1BpcmYvYg==&query=plcp&term=plcp#middle_tab


 Mac/802_11 set RTSThreshold_  0               ;# bytes
#이것도 매우 웃긴다.. 구글의 많은 블러그에 펌질되어 있던 결과는 다음을 참조하면..
참조: http://www.ece.rice.edu/~jpr/ns/docs/ns-802_11b.html
RTS를 사용하지 않을경우가 처리량이 더 높다. 실험결과에서는 노드가 증가할 수록 UDP는 RTS를 사용할 경우 더 높은 처리량을 나타낸다.

 Mac/802_11 set ShortRetryLimit_       7               ;# retransmittions
 Mac/802_11 set LongRetryLimit_        4               ;# retransmissions

Mac/802_11 set bugFix_timer_ true;         # fix for when RTS/CTS not used
# details at http://www.dei.unipd.it/wdyn/?IDsezione=2435

 Mac/802_11 set BeaconInterval_        0.1  ;# 100ms 
 Mac/802_11 set ScanType_ PASSIVE
 Mac/802_11 set ProbeDelay_ 0.0001  ;# 0.1 ms
 Mac/802_11 set MaxChannelTime_ 0.011  ;# 11 ms
 Mac/802_11 set MinChannelTime_ 0.005  ; # 5 ms
 Mac/802_11 set ChannelTime_ 0.12  ;# 120 ms
#=================================================================
Phy/WirelessPhy set CPThresh_ 10.0
Phy/WirelessPhy set CSThresh_ 1.559e-11
Phy/WirelessPhy set RXThresh_ 3.652e-10
Phy/WirelessPhy set bandwidth_ 11e6
Phy/WirelessPhy set Pt_ 0.28183815
Phy/WirelessPhy set freq_ 914e+6
Phy/WirelessPhy set L_ 1.0 
#=================================================================

이 파라미터 값들은 아직도 완벽한 11Mbps를 위한 구성은 아니다.
안테나 반경이라던지 파워 등은 시중의 정확한 기본 값을 설정하기엔 내가 알고 있는 지식이 부족하기 때문이다.

하지만 여러 논문들의 환경들을 테스트 한 결과, 무선피지컬 레이어는 큰 영향을 미치지 않는다. 물론 에드혹이나 핸드오프에서는 큰 영향을 줄 수 있을지도 모르겠다.
차후 실험으로 유선망과 결합한 실험에서의 불공평성을 할 것이며
불공평성 실험후, 구현 알고리즘을 적용할 것이다.

UDP 실험이 끝나고 나면 TCP 실험으로 바로 넘어가 UDP와 동일한 실험들을 할 계획이다.
결과는 같이 정리해 놓도록 하겠다.

훗.. 안올리려다.. 고생할 이들을 위해... 소스 업~

And

Node 30개인 경우 CWmin 8 CWmax8의 결과와 재전송의 변화에 따른 결과

|
실험을 토대로 네트워크의 혼잡상태가 심하지 않은 경우와 그렇지 않은 경우에서 불공평성 상태는 점차 1로 그리고 1 아래로 떨어지게 된다.

이것은 무선 단말기에서의 재전송 수가 7번을 넘어 패킷을 포기하게 되는 경우가 증가하게 되기 때문이었으며 30개의 단말에서의 공평성을 제공하기 위한 재전송 수 제어에 따른 실험 결과는 다음과 같다.



And
prev | 1 | next