試験のために、私たちは LISP Mobile (Locator/Identifier Separation Protocol) を研究しており、ドイツの大学の何人かの研究者に、Omnet++/Inet を備えた LISP シミュレーターを送るよう依頼しました。内部では、非常に役立つ次のシナリオが見つかりました。
ここでは、standardHost と呼ばれるモバイルではない対応ノードから UDP パケット (特に VoIP またはビデオ) を受信する 2 つの wlan インターフェースを備えたマルチホームの lispMobileNode があります。このシナリオは期待どおりに完全に機能し、ルーターは LISP プロトコルを正しく実装しています。ここで、教師からこのシナリオを拡張するように依頼されました。特に、3 つの異なる LISP ネットワーク間で 2 つのハンドオーバー/ハンドオフを使用してデータを収集する必要があるため、必要なモジュールを追加すると、シナリオは次のようになります。
The problem is that even if the lispMobileNode correctly connects to wirelessRouter 3 and gets a relative correct IP address after stopping receiving from wirelessRouter2, however this information is not forwarded to the LISP routers networks below and thus the UDP packets coming from the standardHost keep on being routed to wirelessRouter2. I am sure that there must be a problem with the .irt routing files we have written for each new component and so I am wondering if you can help me dealing with them because in my previous Omnet++ experiences I didn't need to manage with .irt files and so I am not an expert. First of all here are the files we have found in the simulator:
lisprouter1.irt
ifconfig:
# interface 0 to router
name: ppp0 inet_addr: 192.168.0.1 MTU: 1500 Metric: 1
name: ppp1 inet_addr: 192.168.0.1 MTU: 1500 Metric: 1
name: eth0 inet_addr: 132.187.1.1 Mask: 255.255.255.0 MTU: 1500 Metric: 1
ifconfigend.
route:
192.168.0.0 0.0.0.0 255.255.255.0 H 0 ppp0
132.187.1.0 0.0.0.0 255.255.255.0 H 0 eth0
routeend.
lisprouter2.irt
ifconfig:
# interface 0 to router
name: ppp0 inet_addr: 192.168.0.2 MTU: 1500 Metric: 1
name: ppp1 inet_addr: 192.168.0.2 MTU: 1500 Metric: 1
name: eth0 inet_addr: 132.187.2.1 Mask: 255.255.255.0 MTU: 1500 Metric: 1
ifconfigend.
route:
192.168.0.0 0.0.0.0 255.255.255.0 H 0 ppp0
132.187.2.0 0.0.0.0 255.255.255.0 H 0 eth0
routeend.
lispRouter3.irt
ifconfig:
# interface 0 to router
name: ppp0 inet_addr: 192.168.0.3 MTU: 1500 Metric: 1
name: eth0 inet_addr: 132.187.3.1 Mask: 255.255.255.0 MTU: 1500 Metric: 1
ifconfigend.
route:
192.168.0.0 0.0.0.0 255.255.255.0 H 0 ppp0
132.187.3.0 0.0.0.0 255.255.255.0 H 0 eth0
routeend.
mapserver.irt
ifconfig:
# interface 0 to router
name: ppp0 inet_addr: 192.168.0.254 MTU: 1500 Metric: 1
ifconfigend.
route:
192.168.0.0 0.0.0.0 255.255.0.0 G 0 ppp0
132.187.0.0 192.168.0.4 255.255.0.0 G 0 ppp0
routeend.
PITR.irt
ifconfig:
# interface 0 to router
name: ppp0 inet_addr: 192.168.0.5 MTU: 1500 Metric: 1
name: ppp1 inet_addr: 192.168.0.5 MTU: 1500 Metric: 1
ifconfigend.
route:
192.168.0.4 0.0.0.0 255.255.255.255 H 0 ppp0
192.168.0.1 0.0.0.0 255.255.255.255 H 0 ppp1
192.168.0.2 0.0.0.0 255.255.255.255 H 0 ppp2
192.168.0.254 0.0.0.0 255.255.255.255 H 0 ppp0
routeend.
WirelessRouter1.irt
ifconfig:
name: wlan inet_addr: 132.187.1.2 Mask: 255.255.255.0 MTU: 1500 Metric: 1
name: eth0 inet_addr: 132.187.1.2 Mask: 255.255.255.0 MTU: 1500 Metric: 1
ifconfigend.
route:
132.187.1.0 * 255.255.255.0 H 0 wlan
default: 132.187.1.1 0.0.0.0 G 0 eth0
routeend.
wirelessRouter2.irt
ifconfig:
name: wlan inet_addr: 132.187.2.2 Mask: 255.255.255.0 MTU: 1500 Metric: 1
name: eth0 inet_addr: 132.187.2.2 Mask: 255.255.255.0 MTU: 1500 Metric: 1
ifconfigend.
route:
132.187.2.0 * 255.255.255.0 H 0 wlan
default: 132.187.2.1 0.0.0.0 G 0 eth0
routeend.
そして最後に、これらが追加したファイルです (いくつかの行のみを追加した router.irt を除く)。
lispRouter4.irt
ifconfig:
# interface 0 to router
name: ppp0 inet_addr: 192.168.0.7 MTU: 1500 Metric: 1
name: ppp1 inet_addr: 192.168.0.7 MTU: 1500 Metric: 1
name: eth0 inet_addr: 132.187.7.1 Mask: 255.255.255.0 MTU: 1500 Metric: 1
ifconfigend.
route:
192.168.0.0 0.0.0.0 255.255.255.0 H 0 ppp0
132.187.7.0 0.0.0.0 255.255.255.0 H 0 eth0
routeend.
PITR2.irt
ifconfig:
# interface 0 to router
name: ppp0 inet_addr: 192.168.0.6 MTU: 1500 Metric: 1
name: ppp1 inet_addr: 192.168.0.6 MTU: 1500 Metric: 1
ifconfigend.
route:
192.168.0.4 0.0.0.0 255.255.255.255 H 0 ppp0
192.168.0.7 0.0.0.0 255.255.255.255 H 0 ppp1
192.168.0.254 0.0.0.0 255.255.255.255 H 0 ppp0
routeend.
ルーター.irt
ifconfig:
# interface 0 to router
name: ppp0 inet_addr: 192.168.0.4 MTU: 1500 Metric: 1
name: ppp1 inet_addr: 192.168.0.4 MTU: 1500 Metric: 1
name: ppp2 inet_addr: 192.168.0.4 MTU: 1500 Metric: 1
ifconfigend.
route:
192.168.0.3 0.0.0.0 255.255.255.255 H 0 ppp0
192.168.0.1 0.0.0.0 255.255.255.255 H 0 ppp1
192.168.0.2 0.0.0.0 255.255.255.255 H 0 ppp2
192.168.0.254 0.0.0.0 255.255.255.255 H 0 ppp3
192.168.0.5 0.0.0.0 255.255.255.255 H 0 ppp4
192.168.0.6 0.0.0.0 255.255.255.255 H 0 ppp5
192.168.0.7 0.0.0.0 255.255.255.255 H 0 ppp6
132.187.1.0 192.168.0.5 255.255.0.0 G 0 ppp4
132.187.2.0 192.168.0.5 255.255.0.0 G 0 ppp4
132.187.7.0 192.168.0.6 255.255.0.0 G 0 ppp5
routeend.
wirelessRouter3.irt
ifconfig:
name: wlan inet_addr: 132.187.7.2 Mask: 255.255.255.0 MTU: 1500 Metric: 1
name: eth0 inet_addr: 132.187.7.2 Mask: 255.255.255.0 MTU: 1500 Metric: 1
ifconfigend.
route:
132.187.7.0 * 255.255.255.0 H 0 wlan
default: 132.187.7.1 0.0.0.0 G 0 eth0
routeend.
最後になりますが、ここで最も重要なのはomnet.iniファイルです。
[General]
network = MultiHomingNetwork
tkenv-plugin-path = ../../../etc/plugins
#debug-on-errors = true
*.playgroundSizeX = 900
*.playgroundSizeY = 600
**.debug = true
**.coreDebug = false
sim-time-limit = 36s
seed-set = 1
cmdenv-express-mode = true
cmdenv-autoflush = false
cmdenv-status-frequency = 10000000s
repeat = 1
# channel physical parameters
*.channelcontrol.carrierFrequency = 2.4GHz
*.channelcontrol.pMax = 3.0mW
*.channelcontrol.sat = -82dBm
*.channelcontrol.alpha = 2
*.channelcontrol.numChannels = 2
#*.channelcontrol.numChannels = 2
# wireless channels
#**.wirelessRouter.wlan.radio.channelNumber = 1
#**.ap2.wlan.radio.channelNumber = 2
**.wirelessRouter1.wlan.radio.channelNumber = 0 # just initially -- it'll scan
**.wirelessRouter2.wlan.radio.channelNumber = 1
**.wirelessRouter3.wlan.radio.channelNumber = 0
**.lispMobileNode.wlan[0].radio.channelNumber = 0
**.lispMobileNode.wlan[1].radio.channelNumber = 1
**.lispMobileNode.numWirelessInterfaces = 2
**.mapResolver.processRequestsInterval = 0
**.lispMobileNode.mapResolver.usePiggy = ${usePiggy=true,false}
**.lispMobileNode.mapResolver.useSMR = !${usePiggy}
# wireless configuration
**.wlan*.agent.activeScan = true
**.wlan[0].agent.channelsToScan = "0" # "" means all
**.wlan[1].agent.channelsToScan = "1" # "" means all
**.wlan*.agent.probeDelay = 0.1s
**.wlan*.agent.minChannelTime = 0.15s
**.wlan*.agent.maxChannelTime = 0.3s
**.wlan*.agent.authenticationTimeout = 5s
**.wlan*.agent.associationTimeout = 5s
**.mac.address = "auto"
**.mac.maxQueueSize = 14
**.mac.rtsThresholdBytes = 4000B
**.mac.bitrate = 2Mbps
**.wlan.mac.retryLimit = 7
**.wlan.mac.cwMinData = 7
**.wlan.mac.cwMinBroadcast = 31
**.radio.bitrate = 54Mbps
**.radio.transmitterPower = 2.0mW
**.radio.thermalNoise = -110dBm
**.radio.sensitivity = -85mW
**.radio.pathLossAlpha = 2
**.radio.snirThreshold = 4dB
# access point
**.mgmt.frameCapacity = 10
# bandwidth settings
**.txrate = 1000Mbps
# mobility
**.lispMobileNode.mobilityType = "LinearMobility"
**.lispMobileNode.mobility.speed = 30 mps
**.lispMobileNode.mobility.angle = 0
**.lispMobileNode.mobility.acceleration = 0
**.lispMobileNode.mobility.updateInterval = 100ms
# DHCP Server
**.dhcpServer.dhcpServer.net = "132.187.3.0"
**.dhcpServer.dhcpServer.mask = "255.255.255.0"
**.dhcpServer.dhcpServer.ip_begin = "132.187.3.10"
**.dhcpServer.dhcpServer.client_num = 100
**.dhcpServer.dhcpServer.gateway = "132.187.3.1"
**.dhcpServer.dhcpServer.dns = "132.187.3.1"
**.dhcpServer.dhcpServer.lease_time = 900s # seconds
# Applications
**.standardHost.numUdpApps = 1
**.standardHost.udpAppType = "UDPVideoStreamSvr"
**.standardHost.udpApp[0].serverPort = 4711
**.standardHost.udpApp[0].waitInterval = 0.055s
**.standardHost.udpApp[0].packetLen = 100 B
**.standardHost.udpApp[0].videoSize = 1000000000 B
**.lispMobileNode.numUdpApps = 1
**.lispMobileNode.udpAppType = "UDPVideoStreamCli"
**.lispMobileNode.udpApp[0].serverPort = 4711
**.lispMobileNode.udpApp[0].localPort = 4710
**.lispMobileNode.udpApp[0].serverAddress = "standardHost"
**.lispMobileNode.udpApp[0].startTime = 3s
**.lispRouter2.lisp.assignedEID = "132.187.2.0"
**.lispRouter2.lisp.assignedEIDLength = 24
**.lispRouter1.lisp.assignedEID = "132.187.1.0"
**.lispRouter1.lisp.assignedEIDLength = 24
**.lispRouter3.lisp.assignedEID = "132.187.3.0"
**.lispRouter3.lisp.assignedEIDLength = 24
**.lispRouter4.lisp.assignedEID = "132.187.7.0"
**.lispRouter4.lisp.assignedEIDLength = 24
**.lispRouter*.mappingCacheTimeout = 60s
# all nodes use enhanced version
**.useLocatorTypeBit = true
# Wireless Router DHCP Server
**.wirelessRouter1.udpApp[0].net = "132.187.1.0"
**.wirelessRouter1.udpApp[0].mask = "255.255.255.0"
**.wirelessRouter1.udpApp[0].ip_begin = "132.187.1.10"
**.wirelessRouter1.udpApp[0].client_num = 100
**.wirelessRouter1.udpApp[0].gateway = "132.187.1.2"
**.wirelessRouter1.udpApp[0].dns = "132.187.1.1"
**.wirelessRouter1.udpApp[0].iface = "wlan"
**.wirelessRouter1.udpApp[0].lease_time = 12s # seconds
# Wireless Router 2 DHCP Server
**.wirelessRouter2.udpApp[0].net = "132.187.2.0"
**.wirelessRouter2.udpApp[0].mask = "255.255.255.0"
**.wirelessRouter2.udpApp[0].ip_begin = "132.187.2.10"
**.wirelessRouter2.udpApp[0].client_num = 100
**.wirelessRouter2.udpApp[0].gateway = "132.187.2.2"
**.wirelessRouter2.udpApp[0].dns = "132.187.2.1"
**.wirelessRouter2.udpApp[0].iface = "wlan"
**.wirelessRouter2.udpApp[0].lease_time = 12s # seconds
############### new added wireless Router 3
**.wirelessRouter3.udpApp[0].net = "132.187.7.0"
**.wirelessRouter3.udpApp[0].mask = "255.255.255.0"
**.wirelessRouter3.udpApp[0].ip_begin = "132.187.7.10"
**.wirelessRouter3.udpApp[0].client_num = 100
**.wirelessRouter3.udpApp[0].gateway = "132.187.7.2"
**.wirelessRouter3.udpApp[0].dns = "132.187.7.1"
**.wirelessRouter3.udpApp[0].iface = "wlan"
**.wirelessRouter3.udpApp[0].lease_time = 12s # seconds
長い投稿をお許しください。これらのルーティング ファイルでばかげた間違いを犯していると確信していますが、どこにあるのかわかりません。ご清聴ありがとうございました。
ps:ここで必要な場合は、.NED の完全なソース コードをファイルできます。
編集: 問題が初期構成フェーズにある可能性があることに気付きました。実際、コンソール EV では、このタイプのメッセージをいくつか読むことができます。
INFO(lispRouter4): srcAddress=192.168.0.7, dstAddress=192.168.0.254
INFO: Source IP=192.168.0.7 address not in EID space.
Destination IP=192.168.0.254 address not in EID space.
Handing over packet to regular IPv4-routing
output interface is ppp0, next-hop address: <unspec>
** Event #26 T=0 MultiHomingNetwork.lispRouter1.networkLayer.arp (ARP, id=109), on `LISPMapRegister-#1' (IPDatagram, id=263)
Packet (IPDatagram)LISPMapRegister-#1 arrived from higher layer, output interface ppp0 is not broadcast, skipping ARP
** Event #27 T=0 MultiHomingNetwork.lispRouter2.networkLayer.arp (ARP, id=185), on `LISPMapRegister-#2' (IPDatagram, id=264)
Packet (IPDatagram)LISPMapRegister-#2 arrived from higher layer, output interface ppp0 is not broadcast, skipping ARP
** Event #28 T=0 MultiHomingNetwork.lispRouter3.networkLayer.arp (ARP, id=233), on `LISPMapRegister-#3' (IPDatagram, id=265)
Packet (IPDatagram)LISPMapRegister-#3 arrived from higher layer, output interface ppp0 is not broadcast, skipping ARP
** Event #29 T=0 MultiHomingNetwork.lispRouter4.networkLayer.arp (ARP, id=307), on `LISPMapRegister-#4' (IPDatagram, id=266)
Packet (IPDatagram)LISPMapRegister-#4 arrived from higher layer, output interface ppp0 is not broadcast, skipping ARP
192.168.0.7 に関するこのメッセージの多くがあり、ある時点であきらめます。言い換えれば、PITR2 は、lispRouter4 から MapServer と中央ルーターに MapRequest を転送しません。代わりに、PITR2 は MapRequest を lispRouter4 に送り返します。では、lispRouter4 の ppp0 について何かあるのでしょうか?