2015-07-21 79 views
0

在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++; 

你有什麼想法嗎? 謝謝

回答

0

根據日誌,路由器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://stackoverflow.com/questions/31525065/omnet-inet-how-to-adjust-routing-files-when-adding-components-to -a-NED-scena – user4786271