Omnet ++/Inet:2个lisp路由器不断发送信息而不被转发
在Omnet ++/Inet场景中,我有一对LISP路由器无法通信。我的意思是发送从LISP router1
到LISP router2
MapRequest
消息不被转发到预期*网络,但router2
发回的消息,router1
并生成以下消息错误Omnet ++/Inet:2个lisp路由器不断发送信息而不被转发
Setting source IP=192.168.0.7
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
我不明白为什么发生这种情况是因为在系统中我有另外几个lisp路由器,它们按预期完美工作。所以我认为在文件中一定有错误。与工作路由器相比,我已经以镜面写入文件,只更改IP地址。我不知道这意味着什么是“界面ppp0的不播” ...这里是添加路由器的文件:
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.
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.
最后这些都在.NED文件的链接:
lispRouter4: LISPRouter {
parameters:
routingFile = "lispRouter4.irt";
@display("p=640,322");
}
PITR2: LISPRouter {
parameters:
mapServerAddress = "mapServer";
routingFile = "PITR2.irt";
@display("p=442,314;is=n");
}
...
PITR2.pppg++ <--> ppLink <--> lispRouter4.pppg++;
你有什么想法吗? 谢谢
根据日志,路由器lispRouter4
发送数据报到目标地址192.168.0.254
。 PITR2
收到此数据包的路由器,检查任何他自己的地址不等于目的地址,因此看起来到自己的路由表,发现如下条目:
192.168.0.254 0.0.0.0 255.255.255.255 H 0 ppp0
该路由的目标地址的目标相匹配数据报地址,所以PITR2
通过ppp0
转发这个数据报。
消息interface ppp0 is not broadcast, skipping ARP
表示PPP不支持ARP协议,因为不可能通过PPP向所有其他节点发送消息。通常,ARP用于获取知道其IP地址的节点的MAC地址,并且广播是实现该目标所必需的。
如果没有完整的拓扑结构和路由器的所有路由,很难提出解决方案。但是,我建议验证所需的路由器是否具有与192.168.0.254
地址(在其*.irt
文件的ifconfig:
部分中定义)的接口。
编辑该问题可能是由于在.ned
文件中使用++
运算符而造成的。条目
3210
意味着为了PITR2
与lispRouter4
连接,在PITR2
下一pppg
端口创建和使用,例如与pppg[2]
名称ppp2
。而且我们不知道此端口的确切索引,因为它取决于在.ned
文件中创建连接的顺序。
建议解决办法:修改您的.ned
文件和:
- 在你的路由器的
.ned
你可能有类似inout pppg[]
。将其更改为inout pppg[5]
而不是5写入所需数量的该路由器的ppp
端口(根据您的网络拓扑结构)。方括号中的数字是此端口的大小。 - 在你的网络改变其使用
pppg++
弄成这样每个连接定义的.ned
:PITR2.pppg[0] <--> ppLink <--> lispRouter4.pppg[2];
记住,你不能在同一个路由器使用端口的同一指标的两倍,而指数不能超过端口的总大小减1。 - 根据您在前一点做出的端口索引,在文件中修改您的路由表。港口
pppg[X]
的名称是pppX
。
我认为这可能是您要求的完整拓扑:http://*.com/questions/31525065/omnet-inet-how-to-adjust-routing-files-when-adding-components-to -a-NED-scena – user4786271