Cài đặt mạng WLAN trên OMNeT:

Một phần của tài liệu Tìm hiểu hệ mô phỏng mạng OMNeT++ và mô phỏng WLAN (Trang 38 - 47)

CHƯƠNG 3: MÔ PHỎNG MẠNG WLAN

3.4 Cài đặt mạng WLAN trên OMNeT:

a) Mạng WLAN1:

Thiết lập 7 host, lần lượt là hostA, hostB, hostR1, hostR2, hostR3, hostR4,

hostR5. Hai host hostA và hostB sẽ giao tiếp với nhau, trong đó hostA sẽ gửi một

thông điệp đến hostB. Ta sẽ thiết lập 2 máy chủ này không thể giao tiếp trực tiếp được với nhau mà cần phải chuyển tiếp các gói tin thơng qua các máy chủ trung gian (là các máy chủ còn lại)

Để gửi thông điệp đến cho máy chủ B, máy chủ A sẽ được cấu hình để chứa một module UdpBasicApp, còn máy chủ B chứa module UdpSink dùng để nhận gói tin. Các gói tin sẽ được gửi trong mơi trường khơng dây bằng sóng vơ tuyến, cung cấp bởi module radioMedium

Địa chỉ IP cho các host sẽ được cấu hình bởi module Ipv4NetworkConfigurator và thuộc lớp mạng 192.168.10.0/24, và các máy chủ

cũng cần biết địa chỉ MAC để giao tiếp với nhau, và điều này được thực hiện bằng giao thức ARP, cung cấp bởi module GlobalArp cho mỗi máy chủ. Đồng thời, để có thể chuyển tiếp các gói tin từ hostA đến hostB, các host trong mạng sẽ được định tuyến tĩnh (tức là bảng định tuyến sẽ không thay đổi trong suốt q trình mơ phỏng) Trong q trình truyền gói tin, tín hiệu sóng vơ tuyến phát ra từ các máy chủ có khả năng đụng độ, dẫn đến chúng sẽ bị cắt xén và việc tiếp nhận gói tin sẽ thất bại. Để khắc phục điều này, giao thức CSMA sẽ được sử dụng, cụ thể là CSMA/CA. Khi một nút có dữ liệu để gửi, nó sẽ kiểm tra xem có nút nào khác đang sử dụng đường truyền hay khơng, nếu có thì nút này sẽ không được phép truyền, ngược lại nút mạng sẽ bắt đầu truyền dữ liệu

+ File WLAN1.ned import inet.networklayer.configurator.ipv4.Ipv4NetworkConfigurator; import inet.node.inet.INetworkNode; import inet.physicallayer.contract.packetlevel.IRadioMedium; import inet.visualizer.contract.IIntegratedVisualizer; network WLAN1 { parameters: @display("bgb=922.32,499.96802;bgg=100,1,grey95");

@figure[title](type=label; pos=0,-1; anchor=sw; color=darkblue);

@figure[rcvdPkText](type=indicatorText; pos=380,20; anchor=w; font=,18; textFormat="packets received: %g"; initialValue=0);

@statistic[packetReceived](source=hostB.app[0].packetReceived; record=figure(count); targetFigure=rcvdPkText);

submodules:

visualizer: <default("IntegratedCanvasVisualizer")> like IIntegratedVisualizer if hasVisualizer() { @display("p=822.528,69.552"); } configurator: Ipv4NetworkConfigurator { @display("p=822.528,144.144"); }

radioMedium: <default("UnitDiskRadioMedium")> like IRadioMedium { @display("p=822.528,218.73601");

}

hostA: <default("WirelessHost")> like INetworkNode { @display("p=459,289;i=device/laptop");

}

hostB: <default("WirelessHost")> like INetworkNode { @display("p=800,289;i=device/pc4");

}

hostR1: <default("WirelessHost")> like INetworkNode { @display("p=672.5075,218.7675;i=misc/house"); }

Hình 3. 5 Mạng WLAN1

+ File omentpp.ini

[Config WLAN1]

description = Two hosts communicating wirelessly network = WLAN1

*.host*.ipv4.arp.typename = "GlobalArp" *.hostA.numApps = 1 *.hostA.app[0].typename = "UdpBasicApp" *.hostA.app[0].destAddresses = "hostB" *.hostA.app[0].destPort = 5000 *.hostA.app[0].messageLength = 1000B *.hostA.app[0].sendInterval = exponential(12ms) *.hostA.app[0].packetName = "Go to the beach " *.hostB.numApps = 1

*.hostB.app[0].typename = "UdpSink" *.hostB.app[0].localPort = 5000

*.host*.**.bitrate = 54Mbps #Tốc độ dữ liệu vô tuyến

#Radio wave *.hostA.wlan[0].radio.displayCommunicationRange = true *.visualizer.sceneVisualizer.descriptionFigure = "title" #*.visualizer.mediumVisualizer.displaySignals = true #3 *.host*.wlan[0].radio.transmitter.communicationRange = 220m #*.hostB.wlan[0].radio.displayCommunicationRange = true #4: Static Routing *.host*.forwarding = true

*.configurator.config = xml("<config><interface hosts='**' address='192.168.10.x' netmask='255.255.255.0'/><autoroute metric='errorRate'/></config>") *.visualizer.interfaceTableVisualizer.displayInterfaceTables = true *.configurator.optimizeRoutes = false *.host*.ipv4.routingTable.netmaskRoutes = "" *.visualizer.physicalLinkVisualizer.displayLinks = true *.visualizer.dataLinkVisualizer.displayLinks = true *.visualizer.networkRouteVisualizer.displayRoutes = true *.visualizer.*LinkVisualizer.lineShift = 0 *.visualizer.networkRouteVisualizer.lineShift = 0 #5: Them do nhieu *.host*.wlan[0].radio.receiver.ignoreInterference = false *.host*.wlan[0].radio.transmitter.interferenceRange = 500m

#6: Using CSMA to better utilize the medium

*.host*.wlan[0].typename = "WirelessInterface" *.host*.wlan[0].radio.typename = "UnitDiskRadio" *.host*.wlan[0].mac.typename = "CsmaCaMac" *.host*.wlan[0].mac.ackTimeout = 300us *.host*.wlan[0].mac.headerLength = 23B #7: Use ACK *.host*.wlan[0].mac.useAck = true + Kết quả chạy chương trình

Hình 3. 6 Kết quả mơ phỏng mạng WLAN1

b) Mạng WLAN2:

Kế thừa từ WLAN1, trong mạng WLAN 2 thì các host (ngoại trừ hostA, hostB, hostR1) sẽ di chuyển, tức không cố định tại một vị trí, chúng sẽ di chuyển thành vịng trịn quang hostA với bán kính 220m. Tệp omnetpp.ini sẽ thêm các dịng code sau:

[Config WLAN2]

description = Node is moving and AODV extends = WLAN1 #9. Node move *.hostR5.mobility.typename = "CircleMobility" *.hostR5.mobility.cx = 455m *.hostR5.mobility.cy = 289m *.hostR5.mobility.r = 220m *.hostR5.mobility.speed = 60mps *.hostR5.mobility.startAngle = 0deg *.hostR4.mobility.typename = "CircleMobility" *.hostR4.mobility.cx = 455m *.hostR4.mobility.cy = 289m *.hostR4.mobility.r = 220m *.hostR4.mobility.speed = 60mps *.hostR4.mobility.startAngle = 90deg *.hostR3.mobility.typename = "CircleMobility" *.hostR3.mobility.cx = 455m *.hostR3.mobility.cy = 289m *.hostR3.mobility.r = 220m *.hostR3.mobility.speed = 60mps *.hostR3.mobility.startAngle = 180deg

*.hostR2.mobility.typename = "CircleMobility" *.hostR2.mobility.cx = 455m *.hostR2.mobility.cy = 289m *.hostR2.mobility.r = 220m *.hostR2.mobility.speed = 60mps *.hostR2.mobility.startAngle = 270deg *.visualizer.mobilityVisualizer.displayVelocities = true *.host*.wlan[0].mac.queue.packetCapacity = 10 #10. AODV *.configurator.addStaticRoutes = false *.host*.typename = "AodvRouter"

Vì mạng WLAN1 là định tuyến tĩnh cho nên bảng định tuyến sẽ khơng được câp nhật. Thoạt đầu, gói tin sẽ đi từ hostA → hostR5 → hostB, nhưng sau một khoảng thời gian khi hostR5 chuyển động xung quanh hostA thì hostR5 sẽ ngày càng tiến xa khỏi hostB và khi hostB nằm ngồi phạm vi truyền nhận tín hiệu từ hostR5, dữ liệu từ hostA sẽ khơng thể truyền được đến hostB, do đó hostA và hostB sẽ phải chờ đến lúc hostR5 quay lại vị trí thích hợp cho việc chuyển tiếp gói tin thì việc truyền nhận gói tin mới diễn ra thành cơng

Hình 3. 8 hostR5 nằm ngồi phạm vi chuyển tiếp gói tin giữa hostA và hostB

Điều này có thể được giải quyết bằng cách sử dụng giao thức AODV, bảng định tuyến sẽ được tạo và cập nhật khi thực sự cần thiết. Và đây là kết quả khi sử dụng giao thức AODV:

• Khi hostR5 ra khỏi phạm vi chuyển tiếp, bảng định tuyến sẽ được cập nhật sao cho hostA → hostR2 →hostB

• Tương tự, khi hostR2 ra khỏi phạm vi chuyển tiếp, bảng định tuyến sẽ được cập nhật sao cho hostA → hostR3 →hostB

loại hình mạng trong thực tế cũng như cách hoạt động của nó, hiểu sâu hơn về các loại giao thức trong mạng cùng với các giải thuật định tuyến

Mặc dù đã hồn thiện, song trình mơ phỏng mà em thực hiện vẫn chưa thể hiện hết được các loại mơ hình mạng khác trong WLAN, bao gồm có tập hợp dịch vụ cơ sở và tập hợp dịch vụ mở rộng. Vì vậy, hướng phát triển trong tương lai của em là sẽ thực hiện và bổ sung thêm các loại mơ hình mạng khác nhau trong WLAN

Một phần của tài liệu Tìm hiểu hệ mô phỏng mạng OMNeT++ và mô phỏng WLAN (Trang 38 - 47)

Tải bản đầy đủ (DOCX)

(47 trang)
w