Omnet ++ / Inet:2个lisp路由器继续在不转发的情况下相互消息

时间:2015-07-21 07:46:09

标签: mobile router omnet++ ppp inet

在Omnet ++ / Inet场景中,我有几个无法通信的LISP路由器。我的意思是,从MapRequest发送到LISP router1的{​​{1}}邮件不会按预期转发到中央网络,但是LISP router2会将邮件发送回router2并且生成以下消息错误

router1

我不明白为什么会这样,因为在系统中我有另外几个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 文件中必定存在错误。与工作路由器相比,我以镜面方式编写了.irt个文件,只更改了IP地址。我不知道&#34;接口ppp0是不是广播&#34; ...这意味着添加的路由器的文件:

PITR2.irt

.irt

lispRouter4.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.

最后这些是.NED文件中的链接:

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.
你知道吗? 感谢

1 个答案:

答案 0 :(得分:0)

根据日志,路由器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地址的接口(在其ifconfig:文件的*.irt部分中定义)。
编辑问题可能是由于++文件中的密码使用.ned运算符引起的。条目
PITR2.pppg++ <--> ppLink <--> lispRouter4.pppg++;
表示为了将PITR2lispRouter4联系起来,在PITR2 中创建并使用下一个 pppg端口,例如{{1}名称为pppg[2]的名称。并且我们不知道此端口的确切索引,因为它取决于在ppp2文件中创建连接的顺序。
建议的解决方案:修改您的.ned文件并:

  1. 在路由器的.ned中,您可能有.ned之类的内容。将其更改为inout pppg[],而不是5写入该路由器所需数量的inout pppg[5]端口(根据您的网络拓扑)。方括号中的数字是此端口的大小。
  2. 在您网络的ppp中,将使用.ned的每个连接定义更改为以下内容:
    pppg++
    请记住,您不能在同一路由器中使用两次相同的端口索引,并且索引不能超过端口的总大小减去一。
  3. 根据您在上一点中创建的端口索引,修改PITR2.pppg[0] <--> ppLink <--> lispRouter4.pppg[2];个文件中的路由表。端口.irt的名称为pppg[X]