Phần đầu của mụ phỏng, chỳng ta cần định nghĩa kiểu của mỗi thành phần mạng. Thờm nữa, chỳng ta cần định nghĩa cỏc cỏc tham số như là kiểu ăng-ten, kiểu truyền súng radio, kiểu giao thức định tuyến sử dụng cho cỏc nỳt khụng dõy,... Danh sỏch cỏc tham số khỏc nhau được mụ tả như sau:
set opt(chan) Channel/WirelessChannel ;# kiểu kờnh
set opt(prop) Propagation/TwoRayGround ;# kiểu súng radio set opt(netif) Phy/WirelessPhy ;# kiểu giao tiếp mạng set opt(mac) Mac/802_11 ;# kiểu MAC
set opt(ifq) Queue/DropTail/PriQueue ;# kiểu hàng đợi set opt(ll) LL ;# kiểu tầng liờn kết set opt(ant) Antenna/OmniAntenna ;# kiểu ăng-ten
set opt(ifqlen) 50 ;# chiều dài tối đa của hàng đợi
set opt(nn) 1 ;# số nỳt khụng dõy set opt(adhocRouting) DSDV ;# giao thức định tuyến set opt(err) TwoStatesMarkovExpoProc ; mụ hỡnh lỗi
set opt(x) 670 ;# tọa độ x set opt(y) 670 ;# tọa độ y
set opt(stop) 150 ;# thời điểm kết thỳc set opt(ftp-start) 1.0 ;# thời điểm bắt đầu ứng dụng
truyền tệp set num_wired_nodes 2 ;# số nỳt cú dõy set num_bs_nodes 1 ;# số trạm cơ sở
2 ADSL 2Mbps, 10ms 128Kbps, 20ms 2.048Mbps, 20ms Full Duplex TCP Sink 3 1 0 FTP 2 Mbps, 5ms Full Duplex wireless
90
Bây giờ chúng ta đến phần chính của ch-ơng trình. Để mô phỏng mạng hỗn hợp chúng ta cần phải sử dụng ph-ơng pháp định tuyến phân cấp để định tuyến các gói số liệu giữa vùng không dây và có dây, trong NS-2, thông tin định tuyến cho các nút có dây dựa trên cấu trúc kết nối, tức là các nút đ-ợc nối với nhau nh- thế nào qua các liên kết. Thông tin liên kết đ-ợc sử dụng nằm trong các bảng chuyển tiếp trong mỗi nút có dây. Tuy nhiên, các nút không dây không có khái niệm liên kết. Các gói số liệu đ-ợc định tuyến trong cấu trúc không dây sử dụng các giao thức định tuyến adhoc, nó cho phép xây dựng các bảng chuyển tiếp bằng cách trao đổi thông tin định tuyến giữa các nút láng giềng. Do đó, để trao đổi các gói tin giữa các nút có dây và không dây, chúng ta sử dụng các trạm cơ sở, nó làm việc nh- một cổng nối giữa hai miền. Chúng ta cô lập các nút có dây và không dây bằng cách đặt chúng vào các vùng khác nhau. Các miền và các miền con (hay các cụm) đ-ợc định nghĩa bởi cấu trúc phân cấp nh- sau.
$ns_ node-config -addressType hierarchical AddrParams set domain_num_ 2 ;# số vựng
lappend cluster_num 2 1 ;# số cụm trong mỗi vựng AddrParams set cluster_num_ $cluster_num
lappend eilastlevel 1 1 2 ;# số nỳt ở mỗi cụm trong mỗi vựng AddrParams set nodes_num_ $eilastlevel
Trong cỏc dũng trờn đầu tiờn chỳng ta định cấu hỡnh (configure) cho nỳt với kiểu địa chỉ dạng phõn cấp. Tiếp theo là định nghĩa cấu trỳc phõn cấp. Số vựng trong cấu trỳc này là 2 (một cho cỏc nỳt cú dõy một cho cỏc nỳt khụng dõy). Số lượng cụm trong mỗi vựng được định nghĩa là "2 1" nú chỉ vựng thứ nhất (cú dõy) cú 2 cụm và vựng thứ hai cú 1 cụm. Dũng tiếp theo định nghĩa số nỳt trong mỗi cụm là "1 1 2"; tức là ở hai cụm đầu (trong vựng cú dõy) mỗi cụm cú một nỳt và 2 nỳt trong cụm của vựng khụng dõy.
Tiếp theo chỳng ta cài đặt việc ghi lại vết cho mụ phỏng. Chỳ ý rằng, vết của cỏc mụ phỏng mạng hỗn hợp cú dõy và khụng dõy cú thể được sinh ở
91
đầu ra ở đõy là tệp 'wireless2-out.tr'. Để phõn biệt vết của phần mạng khụng dõy và cú dõy, tất cả phần vết khụng dõy bắt đầu bằng "WL". Chỳng ta cũng cú thể tạo ra file vết cho chương trỡnh nam, như được viết ở dũng chương trỡnh thứ 2 dưới đõy. Như đó đề cập phần vết của cỏc nỳt khụng dõy cho chương trỡnh nam chỉ thể hiện sự di chuyển của nỳt.
set tracefd [open wireless2-out.tr w] set namtrace [open wireless2-out.nam w] $ns_ trace-all $tracefd
$ns_ namtrace-all-wireless $namtrace $opt(x) $opt(y)
Tiếp theo chỳng ta cần tạo cỏc nỳt cú dõy, khụng dõy, cỏc nỳt BS (base- station). Chỳ ý rằng, tất cả cỏc nỳt được tạo ra cần phải cú địa chỉ phõn cấp của nỳt. Vỡ vậy, sau dũng "create-god $opt(nn)", cần thờm cỏc dũng sau để thờm cỏc nỳt cú dõy:
# create wired nodes
set temp {0.0.0 0.1.0} ;# hierarchical addresses to be used set n3 [$ns_ node [lindex $temp 0]]
set n2 [$ns_ node [lindex $temp 1]]
Để tạo nỳt BS, chỳng ta cần cấu hỡnh cấu trỳc nỳt như mụ tả ở sau. # configure for base-station node
$ns_ node-config -adhocRouting $opt(adhocRouting) \ -llType $opt(ll) \ -macType $opt(mac) \ -ifqType $opt(ifq) \ -ifqLen $opt(ifqlen) \ -antType $opt(ant) \ -propType $opt(prop) \ -phyType $opt(netif) \ -channelType $opt(chan) \ -topoInstance $topo \ -wiredRouting ON \ -agentTrace ON \ -routerTrace OFF \ -macTrace OFF \ -errProc $opt(err)
#create base-station node
set temp {1.0.0 1.0.1 } ;# hier address to be used for ;# wireless domain
92
#provide some co-ordinates (fixed) to base station node $n1 set X_ 1.0
$n1 set Y_ 2.0 $n1 set Z_ 0.0
# create mobilenodes in the same domain as BS(0)
# note the position and movement of mobilenodes is as defined # in $opt(sc)
# Note there has been a change of the earlier AddrParams # function 'set-hieraddr' to 'addr2id'.
#configure for mobilenodes
$ns_ node-config -wiredRouting OFF
# now create mobilenodes
set n0 [ $ns_ node [lindex $temp [expr $j+1]] ]
$n0 base-station [AddrParams addr2id [$n1 node-addr]]
;# provide each mobilenode with
;# hier address of its base-station
Tiếp theo là kết nối cỏc nỳt cú dõy với BS và tạo lưu lượng TCP giữa nỳt nỳt cú dõy (nỳt 3) với khụng dõy (nỳt 0) như phần cài đặt sau:
# liờn kết từ nỳt 1 đến nỳt 2 $ns simplex-link $n1 $n2 2Mb 10ms DropTail # liờn kết từ nỳt 2 đến nỳt 1 $ns simplex-link $n2 $n1 $rbw 100ms $rgw # liờn kết giữa nỳt 2 và nỳt 3 $ns duplex-link $n2 $n3 2.048Mb 20ms DropTail
# tạo kết nối TCP dạng Reno/Asym – Reno với bất đối xứng set tcp [createTcpSource "TCP/Reno/Asym" $maxburst $tcpTick]
set sink [createTcpSink "TCPSink/Asym" $sinktrace $ackSize $maxdelack]
# tạo một kết nối ftp trờn kết nối TCP set src $n3
set dst $n0
set ftp [createFtp $ns $src $tcp $dst $sink]
Ngoài ra, chỳng tụi cũn sử dụng mụ hỡnh lỗi markov hai trạng thỏi vào đường truyền khụng dõy. Thủ tục thực hiện việc đưa mụ hỡnh này vào được mụ tả như sau:
proc TwoStatesMarkovExpoProc {} {
global mean_good_state_error_inter_arrival mean_bad_state_error_inter_arrival error_unit
93
set good_state [new ErrorModel/Expo
$mean_good_state_error_inter_arrival $error_unit] set bad_state [new ErrorModel/Expo
$mean_bad_state_error_inter_arrival $error_unit] set m_states [list $good_state $bad_state]
set m_periods [list 0.66 0.2] ;#bad_state ranges from 0-0.2, step 0.01
set m_transmx {{0 1} {1 0} }
set m_trunit $error_unit ;#$error_unit set m_sttype time
set m_nstates 2
set m_nstart [lindex $m_states 0]
set err [new ErrorModel/MultiState $m_states $m_periods $m_transmx $m_trunit $m_sttype $m_nstates $m_nstart]
return $err }
Cỏc tham số về lỗi như sau:
set mean_good_state_error_inter_arrival 166 ;#trạng thỏi good 166 gúi cú 1 lỗi
set mean_bad_state_error_inter_arrival 2.6 ;#trạng thỏi bad 2.6 gúi cú 1 lỗi
set error_unit pkt ;lỗi theo dạng gúi số liệu
Cỏc thành phần khỏc như sử dụng cỏc tham số đầu vào cho mụ phỏng,… tương tự như kịch bản mụ phỏng mạng cú dõy.
Sau khi thực hiện kịch bản mụ phỏng này sẽ sinh ra cỏc tệp vết. Nếu ta sử dụng chương trỡnh NAM, lấy đầu vào là tệp vết "wireless2-out.nam" thỡ sẽ thấy được hỡnh ảnh mụ phỏng trờn màn hỡnh đồ họa.
94
Chương 4: Đỏnh giỏ hiệu suất giao thức TCP trờn mạng cú đường truyền ADSL.
Chỳng tụi sử dụng bộ mụ phỏng mạng NS-2 (phiờn bản 2.29) để mụ phỏng hai dạng mạng khỏc nhau (cú dõy và khụng dõy). Cỏc mụ phỏng dựa trờn tớnh bất đối xứng của đường truyền ADSL cỏc đường truyền khỏc tựa ADSL chỳng ta cú thể xem như là tương tự. Chỳng tụi sẽ xoay quanh hai vấn đề chớnh trong đỏnh giỏ hiệu suất là tớnh bất đối xứng của đường truyền ADSL khi chỉ dựng mạng cú dõy và mạng cú đường truyền ADSL nối với mạng khụng dõy.
4.1 Thiết lập cấu hỡnh mạng mụ phỏng
4.1.1 Mạng mụ phỏng với mỏy của người sử dụng kết nối Internet bằng đường truyền ADSL
Chỳng tụi thực hiện mụ phỏng mạng nối từ nhà cung cấp dịch vụ đến người sử dụng bằng đường truyền ADSL như trong hỡnh 4.1. Giả sử người dựng, ký hiệu là nỳt 0, nối với đường truyền ADSL thụng qua mạng LAN, đường nối giữa hai nỳt 1 và 2 là đường ADSL. Ngoài ra, cũn cú nỳt 3 nối với nỳt 2 qua một WAN.