Omnet ++/Inet:2个lisp路由器不断发送信息而不被转发

Omnet ++/Inet:2个lisp路由器不断发送信息而不被转发

问题描述:

在Omnet ++/Inet场景中,我有一对LISP路由器无法通信。我的意思是发送从LISP router1LISP router2MapRequest消息不被转发到预期*网络,但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.254PITR2收到此数据包的路由器,检查任何他自己的地址不等于目的地址,因此看起来到自己的路由表,发现如下条目:

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
意味着为了PITR2lispRouter4连接,在PITR2下一pppg端口创建和使用,例如与pppg[2]名称ppp2。而且我们不知道此端口的确切索引,因为它取决于在.ned文件中创建连接的顺序。
建议解决办法:修改您的.ned文件和:

  1. 在你的路由器的.ned你可能有类似inout pppg[]。将其更改为inout pppg[5]而不是5写入所需数量的该路由器的ppp端口(根据您的网络拓扑结构)。方括号中的数字是此端口的大小。
  2. 在你的网络改变其使用pppg++弄成这样每个连接定义的.ned
    PITR2.pppg[0] <--> ppLink <--> lispRouter4.pppg[2];
    记住,你不能在同一个路由器使用端口的同一指标的两倍,而指数不能超过端口的总大小减1。
  3. 根据您在前一点做出的端口索引,在文件中修改您的路由表。港口pppg[X]的名称是pppX
+0

我认为这可能是您要求的完整拓扑:http://*.com/questions/31525065/omnet-inet-how-to-adjust-routing-files-when-adding-components-to -a-NED-scena – user4786271