You are on page 1of 5

Môn học: Hệ thống nhúng Mạng không dây

(Wireless Embedded Network Systems)


Người soạn: Nguyễn Khánh Thuật; Nguyễn Văn Bảo
Email: thuatnk@uit.com; baonv@uit.edu.vn

LAB 3: MÔ PHỎNG OLSR

Ghi chú: định dạng file bài nộp <Hoten>_<MSSV>_BTn.doc hoặc .zip nếu có yêu cầu chỉnh
sửa source
VD: NguyenVanA_13020010_BT1.doc

I. Nội dung
Tìm hiểu về giao thức định tuyến Optimized Link State Routing (OLSR) sử dụng trong
Mobile Ad-hoc Network (MANET). Ns-3 cung cấp một loạt các phương thức và các tiện
ích để mô phỏng được sự dịch chuyển của các node trong mô hình truyền thông mạng
không dây (MANET) và các Routing Protocol Helper để cài đặt lên các chuẩn giao tiếp
không dây IEEE 802.11 MAC.

Mục tiêu:

• Hiểu về cách vận hành của OLSR và cấu trúc gói tin
• Hiểu về cách cài đặt giao thức định tuyến trên trong ns-3.
20 m/s
3

0s 0 300 m 1 300 m

10 m/s
2

20 m/s
3

UDP Sender
UDP Sink App on
20s 0 300 m 1
port 6

2
10 m/s

Hình 1. Mô hình các node trong mô phỏng giao thức OLSR

Trong mô hình sẽ có tổng cộng 4 node, node0 và node1 sẽ đứng cố định một chỗ trong
khi 2 node2 và node3 sẽ di chuyển lần lược với các vận tốc 10 m/s và 20 m/s theo 2 hướng
ngược nhau để đi vào vùng truyền thông của giao thức định tuyến OLSR (được thiết lập
trong khoảng cách 250m).

Trên node1 sẽ được cài đặt một UDP Sink Application, node0 được cài đặt một UDP
sender liên tục gửi các packet đến địa chỉ IP của node1.

Sau khi node2 hoặc node3 đi vào giữa node0 và node1, giao thức định tuyến OLSR sẽ
thiết lập một kênh truyền Mobile Ad-hoc Network (MANET) giữa node0 và node1, từ đó
thiết lập kết nối UDP giữa node0 và node1.

II. Hướng dẫn xây dựng mô hình mô phỏng OLSR trong ns-3

1. Chuẩn bị mô hình di chuyển cho các node trong mô phỏng


Ptr<ConstantVelocityMobilityModel> cvmm2;
Ptr<ConstantVelocityMobilityModel> cvmm3;

2. Tạo kênh kết nối wifi (YansWifiChannel trong ns-3)


WifiHelper wifi;
YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
wifiPhy.SetPcapDataLinkType(YansWifiPhyHelper::DLT_IEEE802_11);

3. Cài đặt thông số về công suất truyền để khoảng cách truyền tối đa là 250m
wifiPhy.Set ("TxPowerStart", DoubleValue(33));
wifiPhy.Set ("TxPowerEnd", DoubleValue(33));
wifiPhy.Set ("TxPowerLevels", UintegerValue(1));
wifiPhy.Set ("TxGain", DoubleValue(0));
wifiPhy.Set ("RxGain", DoubleValue(0));
wifiPhy.Set ("EnergyDetectionThreshold",DoubleValue(-1.8));
wifiPhy.Set ("CcaMode1Threshold", DoubleValue(-64.8));

4. Cấu hình chế độ ad-hoc cho kênh truyền cài đặt lên các NetDevices
NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default ();
wifiMac.SetType ("ns3::AdhocWifiMac");
// Set 802.11b standard
wifi.SetStandard (WIFI_PHY_STANDARD_80211b);
NetDeviceContainer devices;
devices = wifi.Install (wifiPhy, wifiMac, c);

5. Cấu hình OSLR sử dụng trong quá trình truyền thông


// Khởi tạo protocol list
OlsrHelper olsr;
Ipv4ListRoutingHelper list;
list.Add (olsr, 10);
// Cài đặt OLSR cho các node trong nodeContainer “c”
InternetStackHelper internet;
internet.SetRoutingHelper (list);
internet.Install (c);

6. Các IP address cho các netDevices thuộc các nodes


Ipv4AddressHelper ipv4;
NS_LOG_INFO ("Assign IP Addresses.");
ipv4.SetBase ("10.1.1.0", "255.255.255.0");
Ipv4InterfaceContainer ifcont = ipv4.Assign (devices);

7. Các bước cài đặt UDP Sink app và UDP Sender có thể tham khảo source code
8. Cài đặt vị trí cho các node
MobilityHelper mobility;
Ptr<ListPositionAllocator> positionAlloc = CreateObject
<ListPositionAllocator>();
positionAlloc ->Add(Vector(0, 0, 0)); // node0
positionAlloc ->Add(Vector(300, 0, 0)); // node1
positionAlloc ->Add(Vector(0, 110, 0)); // node2
positionAlloc ->Add(Vector(600, -150, 0)); // node3
mobility.SetPositionAllocator(positionAlloc);

9. Cài đặt tốc độ và hướng di chuyển cho các node


// Vận tốc theo trục x cho node2 và node3
Vector vel2 (10, 0, 0);
Vector vel3 (-20, 0, 0);
Ptr<Node> mover2 = c.Get(2);
Ptr<Node> mover3 = c.Get(3);

mobility.SetMobilityModel("ns3::ConstantVelocityMobilityModel");
mobility.Install(c);
cvmm2 = mover2->GetObject<ConstantVelocityMobilityModel>();
cvmm2->SetVelocity(vel2);
cvmm3 = mover3->GetObject<ConstantVelocityMobilityModel>();
cvmm3->SetVelocity(vel3);
III. Yêu cầu:

1. Compile và chạy lại mô phỏng, quan sát quá trình chạy. (2đ)
2. Dùng phần mềm Wireshark để xem các file pcap thu được và trả lời các câu hỏi
sau (chụp hình hoặc copy nội dung gói tin)
a. Xác định các gói OLSR thể hiện quá trình định tuyến giữa các node0, node2,
node1 từ giây thứ 1 đến 20. Yêu nêu rõ loại và nội dung các cũ (3đ)
b. Xác định các gói UDP từ node0 -> node1 trước giây thứ 20 (Gợi ý: tìm port
của UDP Sink App) (1đ)
c. Xác định các gói tin OLSR, ARP thể hiện lại quá trình tái định tuyến giữa
node0 và node1 sau giây thứ 20 khi node3 đi vào vùng giữa node0 và node1.
Nêu rõ các neighbor nodes của node2 lúc này (3đ).

Ghi chú: yêu cầu chụp hình hoặc copy nội dung các packet trong các câu trên
(gồm loại, size và chức năng của gói tin đó)

3. Chỉnh sửa source code để tăng khoảng cách của node1 lên 400m. Yêu cầu: chỉnh
sửa vị trí ban đầu của node3, vận tốc của node1 và node3 sao cho ở giây thứ 20 cả
hai node2 và node3 sẽ gặp nhau ở cùng một tọa độ x. Nộp lại file source đã chỉnh
sửa. (1đ)

You might also like