Omnet++/Inet: как настроить файлы маршрутизации при добавлении компонентов в сценарий.NED
Для экзамена мы изучаем LISP Mobile (протокол разделения локатора / идентификатора) и попросили некоторых исследователей из немецкого университета прислать нам свой симулятор LISP с Omnet++/Inet. Внутри мы нашли следующий сценарий, который очень полезен для нас:
где у нас есть lispMobileNode, многосетевой с двумя интерфейсами wlan, который принимает пакеты UDP (в частности, VoIP или видео) от узла-корреспондента, который не является мобильным, называется standardHost. Этот сценарий работает отлично, как и ожидалось, и маршрутизаторы правильно реализуют протокол LISP. Теперь наш учитель попросил нас расширить этот сценарий: в частности, мы должны собрать данные с двумя хэндоверами / хэндоверами между тремя различными сетями LISP и поэтому добавили необходимые модули, и сценарий стал таким:
Проблема заключается в том, что даже если lispMobileNode правильно подключается к wirelessRouter 3 и получает относительный правильный IP-адрес после прекращения приема от wirelessRouter2, однако эта информация не пересылается в сети маршрутизаторов LISP ниже и, таким образом, пакеты UDP, поступающие от стандартного хоста, продолжают оставаться маршрутизируется на wirelessRouter2. Я уверен, что должна быть проблема с файлами маршрутизации.irt, которые мы написали для каждого нового компонента, и поэтому мне интересно, можете ли вы помочь мне разобраться с ними, потому что в моем предыдущем опыте с Omnet ++ мне не нужно было управлять. irt файлы и поэтому я не эксперт. Прежде всего, вот файлы, которые мы нашли в симуляторе:
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.
router.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 не пересылает MapRequest из lispRouter4 на MapServer и на центральный маршрутизатор; вместо этого PITR2 отправляет MapRequest обратно в lispRouter4. Так есть что-то об этом ppp0 на lispRouter4?