簡體   English   中英

無法在我的mininet仿真拓撲中的任何主機之間ping

[英]can't ping between any of the hosts in my mininet emulated topology

我的mininet拓撲圖片:

微型網絡拓撲


有人可以幫我查一下環路拓撲中的主機嗎? 靜態痘控制器在下面。 我的拓撲有4個交換機和3個主機。 左邊一台主機,右邊兩台主機。 很顯然,我必須為每個主機實現路由,以使數據包可以到達其目的地,並且不會無限循環地漫游網絡。 但我無法使它正常工作

任何幫助將不勝感激,並提前感謝您

from pox.core import core
import pox.openflow.libopenflow_01 as of
from pox.lib.util import dpidToStr
log = core.getLogger()
s1_dpid=0

s2_dpid=0
s3_dpid=0
s4_dpid=0

def _handle_ConnectionUp (event):
 global s1_dpid, s2_dpid, s3_dpid, s4_dpid
 print "ConnectionUp: ", dpidToStr(event.connection.dpid)
#remember the connection dpid for switch
 for m in event.connection.features.ports:
  if m.name == "s1-eth1":
     s1_dpid = event.connection.dpid
     print "s1_dpid=", s1_dpid
  elif m.name == "s2-eth3":
    s2_dpid = event.connection.dpid
    print "s2_dpid=", s2_dpid
  elif m.name == "s3-eth3":
    s3_dpid = event.connection.dpid
    print "s3_dpid=", s3_dpid
  elif m.name == "s4-eth4":
    s4_dpid = event.connection.dpid
    print "s4_dpid=", s4_dpid
def _handle_PacketIn (event):
   global s1_dpid, s2_dpid, s3_dpid, s4_dpid
   print "PacketIn: ", dpidToStr(event.connection.dpid)
   if event.connection.dpid==s1_dpid:
     msg = of.ofp_flow_mod()
     msg.priority =1
     msg.idle_timeout = 0
     msg.hard_timeout = 0
     msg.match.dl_type = 0x0806
     msg.actions.append(of.ofp_action_output(port = of.OFPP_ALL))
     event.connection.send(msg)
     msg = of.ofp_flow_mod()
     msg.priority =10
     msg.idle_timeout = 0
     msg.hard_timeout = 0
     msg.match.dl_type = 0x0800
     msg.match.nw_dst = "10.0.0.1"
     msg.actions.append(of.ofp_action_output(port = 1))
     event.connection.send(msg)
     msg = of.ofp_flow_mod()
     msg.priority =10
     msg.idle_timeout = 0
     msg.hard_timeout = 0
     msg.match.dl_type = 0x0800
     msg.match.nw_dst = "10.0.0.6"
     msg.actions.append(of.ofp_action_output(port = 3))
     event.connection.send(msg)
     msg = of.ofp_flow_mod()
     msg.priority =10
     msg.idle_timeout = 0
     msg.hard_timeout = 0
     msg.match.dl_type = 0x0800
     msg.match.nw_dst = "10.0.0.2"
     msg.actions.append(of.ofp_action_output(port = 2))
     event.connection.send(msg)


   elif event.connection.dpid==s2_dpid:
     msg = of.ofp_flow_mod()
     msg.priority =1
     msg.idle_timeout = 0
     msg.hard_timeout = 0
     msg.match.in_port =3
     msg.actions.append(of.ofp_action_output(port =4))
     event.connection.send(msg)
     msg = of.ofp_flow_mod()
     msg.priority =1
     msg.idle_timeout = 0
     msg.hard_timeout = 0
     msg.match.in_port =4
     msg.actions.append(of.ofp_action_output(port =3))
     event.connection.send(msg)

   elif event.connection.dpid==s4_dpid:
     msg = of.ofp_flow_mod()
     msg.priority =1
     msg.idle_timeout = 0
     msg.hard_timeout = 0
     msg.match.in_port =3
     msg.actions.append(of.ofp_action_output(port = 4))
     event.connection.send(msg)
     msg = of.ofp_flow_mod()
     msg.priority =1
     msg.idle_timeout = 0
     msg.hard_timeout = 0
     msg.match.in_port =4
     msg.actions.append(of.ofp_action_output(port = 3))
     event.connection.send(msg)
     elif event.connection.dpid==s3_dpid:
     msg = of.ofp_flow_mod()
     msg.priority =1
     msg.idle_timeout = 0
     msg.hard_timeout = 0
     msg.match.dl_type = 0x0806
     msg.actions.append(of.ofp_action_output(port = of.OFPP_ALL))
     event.connection.send(msg)
     msg = of.ofp_flow_mod()
     msg.priority =10
     msg.idle_timeout = 0
     msg.hard_timeout = 0
     msg.match.dl_type = 0x0800
     msg.match.nw_dst = "10.0.0.6"
     msg.actions.append(of.ofp_action_output(port = 2))
     event.connection.send(msg)

     msg = of.ofp_flow_mod()
     msg.priority =10
     msg.idle_timeout = 0
     msg.hard_timeout = 0
     msg.match.dl_type = 0x0800
     msg.match.nw_src="10.0.0.6"
     msg.match.nw_dst = "10.0.0.1"
     msg.actions.append(of.ofp_action_output(port = 4))
     event.connection.send(msg)
     # msg = of.ofp_flow_mod()
     # msg.priority =10
     #msg.idle_timeout = 0
     #msg.hard_timeout = 0
     #msg.match.dl_type = 0x0800
     #msg.match.nw_src="10.0.0.5"
     #msg.match.nw_dst = "10.0.0.1"
     #msg.actions.append(of.ofp_action_output(port = 4))
     #event.connection.send(msg)
     def launch ():
     core.openflow.addListenerByName("ConnectionUp",_handle_ConnectionUp)
     core.openflow.addListenerByName("PacketIn",_handle_PacketIn)

在Mininet中,一台OVS交換機不能連接多於一台主機。 如果刪除h2h3 ,則應該可以ping通。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM