2015-06-29 70 views
0

我有一個模擬,其中兩個模塊UDPBasicApp(客戶端和服務器)通過以太網鏈路連接在一起。相反,我希望它們通過無線通道連接在一起。該網絡由以下NED文件中定義:通過OMNeT中的無線通道連接兩個UDP模塊++

package udpbasic; 

import inet.networklayer.autorouting.ipv4.IPv4NetworkConfigurator; 
import inet.nodes.ethernet.Eth10M; 
import inet.nodes.inet.StandardHost; 

network ClientServer 
{ 
    @display("bgb=380,247"); 
    submodules: 
     client: StandardHost 
     { 
      @display("p=84,100"); 
     } 
     server: StandardHost 
     { 
      @display("p=278,100"); 
     } 
     configurator: IPv4NetworkConfigurator 
     { 
      @display("p=181,188"); 
     } 
    connections: 
     client.ethg++ <--> Eth10M <--> server.ethg++; 
} 

我知道,我必須要改變,其中以太網鏈路被定義行

client.ethg++ <--> Eth10M <--> server.ethg++; 

。我可以通過無線鏈接連接客戶端和服務器槽 嗎?顯然,我正在尋找最基本的配置。 我是新的OMNeT ++和INET;我已經搜索了INET API參考資料,並且它不會幫助你。我會感謝任何建議。

回答

1

我推薦閱讀INET 3.0中的無線教程。 https://github.com/inet-framework/inet/blob/master/tutorials/wireless/omnetpp.ini

INI文件:

[General] 
# Some global configuration to make the model simpler 

# At this point you should take a look at the NED files corresponding to this Ini file. 
# They are rather simple. The only interesting thing is that they are using parametrized types 
# (i.e. like) so we will be able to change the type of the different modules from the Ini file. 
# This allows us go through the tutorial only by changing parameter values in this file. 

# Limit the simulation to 25s 
sim-time-limit = 25s 

# Let's configure ARP 
# ARP in the real world is used to figure out the MAC address of a node from its IPv4 address. 
# We do not want to use it in this wireless tutorial as it just adds some uninteresting 
# message exchanges before the real communication between the nodes can start. We will use 
# the GlobalARP module instead that can automatically provide all the MAC-IP assocoations 
# for the nodes out of band. 
**.arpType = "GlobalARP" 

# Now we are ready to jump into the tutorial 

[Config Wireless01] 
description = Two nodes communicating via UDP 
network = WirelessA 

# Configure an application for hostA that sends a constant 
# UDP traffic around 800Kbps (+ protocol overhead) 
*.hostA.numUdpApps = 1 
*.hostA.udpApp[0].typename = "UDPBasicApp" 
*.hostA.udpApp[0].destAddresses = "hostB" 
*.hostA.udpApp[0].destPort = 5000 
*.hostA.udpApp[0].messageLength = 1000B 
*.hostA.udpApp[0].sendInterval = exponential(10ms) 

# Configure an app that receives the USP traffic (and simply drops the data) 
*.hostB.numUdpApps = 1 
*.hostB.udpApp[0].typename = "UDPSink" 
*.hostB.udpApp[0].localPort = 5000 

# Configure the hosts to have a single "ideal" wireless NIC. An IdealWirelessNic 
# can be configured with a maximum communication range. All packets withing range 
# are always received successfully while out of range messages are never received. 
# This is useful if we are not interested how the actual messages get to their destination, 
# we just want to be sure that they get there once the nodes are in range. 
*.host*.wlan[*].typename = "IdealWirelessNic" 

# All radios and MACs should run on 1Mbps in our examples 
**.bitrate = 1Mbps 

# Mandatory physical layer parameters 
*.host*.wlan[*].radio.transmitter.maxCommunicationRange = 500m 

# Simplify the IdealWirelessNic even further. We do not care even if there are 
# transmission collisions. Any number of nodes in range can transmit at the same time 
# and the packets will be still successfully delivered. 
*.host*.wlan[*].radio.receiver.ignoreInterference = true 

# Result: HostA can send data to hostB using almost the whole 1Mbps bandwidth. 

通訊NED文件:

package inet.tutorials.wireless; 

import inet.networklayer.configurator.ipv4.IPv4NetworkConfigurator; 
import inet.node.inet.INetworkNode; 
import inet.physicallayer.contract.packetlevel.IRadioMedium; 


// - create a network and specify the size to 500x500 
// - drop an IPv4NetworkConfigurator and rename it to "configurator" 
// - drop an IdealRadioMedium module and rename to "radioMedium" 
// - drop two standardhosts at the 100,100 and 400,400 position and 
// rename them to hostA and hostB 
network WirelessA 
{ 
    @display("bgb=500,500"); 
    @figure[thruputInstrument](type=gauge; pos=370,90; size=120,120; maxValue=2500; tickSize=500; colorStrip=green 0.75 yellow 0.9 red;label=Number of packets received; moduleName=hostB.udpApp[0]; signalName=rcvdPk); 
    string hostType = default("WirelessHost"); 
    string mediumType = default("IdealRadioMedium"); 
    submodules: 
     configurator: IPv4NetworkConfigurator { 
      @display("p=149,29"); 
     } 
     radioMedium: <mediumType> like IRadioMedium { 
      @display("p=309,24"); 
     } 
     hostA: <hostType> like INetworkNode { 
      @display("p=50,250"); 
     } 
     hostB: <hostType> like INetworkNode { 
      @display("p=450,250"); 
     } 
}