Opendaylight、Mininet和Ubuntu。没有ARP,就没有ping

Opendaylight、Mininet和Ubuntu。没有ARP,就没有ping,ubuntu,opendaylight,mininet,sdn,Ubuntu,Opendaylight,Mininet,Sdn,总结: 我无法在使用Opendaylight和Mininet的主机之间ping,希望您能提供一些关于可能出现的问题的指导 设置和我到目前为止所做的工作: 这件事我已经纠缠了两天了,似乎什么也找不到。我有一台运行VMware Workstation 10.0.3的Win7笔记本电脑。我已经用Opendaylight安装了Ubuntu12.04,并且运行了MiniNet2.0。所有NIC均桥接。我可以在他们之间打乒乓球。在Win7上运行Firefox、Putty和Xming。我可以登录到Openda

总结: 我无法在使用Opendaylight和Mininet的主机之间ping,希望您能提供一些关于可能出现的问题的指导

设置和我到目前为止所做的工作: 这件事我已经纠缠了两天了,似乎什么也找不到。我有一台运行VMware Workstation 10.0.3的Win7笔记本电脑。我已经用Opendaylight安装了Ubuntu12.04,并且运行了MiniNet2.0。所有NIC均桥接。我可以在他们之间打乒乓球。在Win7上运行Firefox、Putty和Xming。我可以登录到Opendaylight

打开Putty并启动Mininet:sudo mn--mac--controller=remote,ip=192.168.0.118,port=6633 我得到创建网络等的正常响应。Ping失败。在Wireshark中,我看到ARP请求,但没有应答。控制器现在显示开关。添加网关10.0.0.254/8使控制器可以看到主机,但仍然没有ping。我仍然看到ARP请求,但没有应答。我按照说明移除了网关并安装了流。没有平

我试着从虚拟机本身开始做这一切,跳过Putty和笔记本电脑,得到了同样的结果。我也尝试过使用Ubuntu 14.04和Mininet 2.10。同样的结果。我一直在读Opendaylight维基,显然没有其他人有这个问题。这意味着我肯定错过了一些基本的东西。我就是搞不懂那是什么

编辑,MININET输出: (如下文所述)

那么在控制器上创建的流还没有转移到Mininet

你好,再次感谢你的投入。我试着以你为榜样,下面是我得到的:

Last login: Thu Jul 10 13:56:17 2014

mininet@mininet-vm:~$ sudo mn --mac --controller=remote,ip=192.168.0.115,port=6633
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2
*** Adding switches:
s1
*** Adding links:
(h1, s1) (h2, s1)
*** Configuring hosts
h1 h2
*** Starting controller
*** Starting 1 switches
s1
*** Starting CLI:
mininet> pingall
*** Ping: testing ping reachability
h1 -> X
h2 -> X
*** Results: 100% dropped (0/2 received)

mininet> s1 ovs-ofctl show "s1"
OFPT_FEATURES_REPLY (xid=0x1): dpid:0000000000000001
n_tables:255, n_buffers:256
capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
actions: OUTPUT SET_VLAN_VID SET_VLAN_PCP STRIP_VLAN SET_DL_SRC SET_DL_DST SET_NW_SRC SET_NW_DST SET_NW_TOS SET_TP_SRC SET_TP_DST ENQUEUE
 1(s1-eth1): addr:a6:fc:ac:e6:ab:2a
     config:     0
     state:      0
     current:    10GB-FD COPPER
     speed: 10000 Mbps now, 100 Mbps max
 2(s1-eth2): addr:2e:8a:70:b0:48:82
     config:     0
     state:      0
     current:    10GB-FD COPPER
     speed: 10000 Mbps now, 100 Mbps max
 LOCAL(s1): addr:1a:74:aa:bb:5a:49
     config:     PORT_DOWN
     state:      LINK_DOWN
     speed: 100 Mbps now, 100 Mbps max
OFPT_GET_CONFIG_REPLY (xid=0x3): frags=normal miss_send_len=0
mininet>
mininet>
mininet> s1 ovs-ofctl add-flow "s1" priority=1,ip,nw_dst=10.0.0.2,actions=mod_dl_dst:00:00:00:00:00:02,output=2
mininet> s1 ovs-ofctl add-flow "s1" priority=1,ip,nw_dst=10.0.0.1,actions=mod_dl_dst:00:00:00:00:00:01,output=1
mininet>
mininet>
mininet> s1 ovs-ofctl dump-flows "s1"
NXST_FLOW reply (xid=0x4):
 cookie=0x0, duration=44.765s, table=0, n_packets=0, n_bytes=0, idle_age=44, priority=1,ip,nw_dst=10.0.0.1 actions=mod_dl_dst:00:00:00:00:00:01,output:1
 cookie=0x0, duration=71.05s, table=0, n_packets=0, n_bytes=0, idle_age=71, priority=1,ip,nw_dst=10.0.0.2 actions=mod_dl_dst:00:00:00:00:00:02,output:2
mininet>
mininet>
mininet> pingall
*** Ping: testing ping reachability
h1 -> X
h2 -> X
*** Results: 100% dropped (0/2 received)
mininet> h1 ping -c2 h2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
From 10.0.0.1 icmp_seq=1 Destination Host Unreachable
From 10.0.0.1 icmp_seq=2 Destination Host Unreachable

--- 10.0.0.2 ping statistics ---
2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 999ms
pipe 2
mininet>
我运行了与上面清单中相同的命令,得到了相同的结果。然后我运行了您建议的命令,如下所示,下面是输出。我不知道输出中列出了两个控制器,但连接的控制器是具有正确IP地址的正确控制器

mininet>
mininet> s1 ovs-vsctl list controller
_uuid               : 5c50bc34-725b-497c-86f2-e0b8eafc34f9
connection_mode     : []
controller_burst_limit: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : true
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : 1000
other_config        : {}
role                : other
status              : {sec_since_connect="395", state=ACTIVE}
target              : "tcp:192.168.0.115:6633"

_uuid               : e5ba6cf2-dd48-4c2b-88b7-4546e90f98d0
connection_mode     : []
controller_burst_limit: []
controller_rate_limit: []
enable_async_messages: []
external_ids        : {}
inactivity_probe    : []
is_connected        : false
local_gateway       : []
local_ip            : []
local_netmask       : []
max_backoff         : 1000
other_config        : {}
role                : []
status              : {}
target              : "ptcp:6634"
mininet>

我确实在控制器上运行了ss命令,所有显示为“活动”或“已解决”。

开关似乎没有任何流量规则。您必须手动添加它们

如果网络中有多台主机(ping主机之间没有隧道),mininet CLI中的“pingall”应该可以工作,因为它会自动向交换机添加流规则

我使用相同的配置

mn --mac --controller=remote,ip=192.168.2.4,port=6633

我可以ping主机,但是让我们考虑它没有工作,删除现有的规则。< /P> 我使用的网络是默认网络,即连接到同一交换机的两台主机

mininet> net
h1 h1-eth0:s1-eth1
h2 h2-eth0:s1-eth2
s1 lo:  s1-eth1:h1-eth0 s1-eth2:h2-eth0
c0
由于流表为空,我们需要将流添加到交换机。 所以我们必须知道它使用的端口

mininet> s1 ovs-ofctl show "s1"
OFPT_FEATURES_REPLY (xid=0x2): dpid:0000000000000001
n_tables:254, n_buffers:256
capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
actions: OUTPUT SET_VLAN_VID SET_VLAN_PCP STRIP_VLAN SET_DL_SRC SET_DL_DST SET_NW_SRC SET_NW_DST SET_NW_TOS SET_TP_SRC SET_TP_DST ENQUEUE
 1(s1-eth1): addr:6e:ab:c5:6d:e5:ad
     config:     0
     state:      0
     current:    10GB-FD COPPER
     speed: 10000 Mbps now, 0 Mbps max
 2(s1-eth2): addr:da:64:44:ec:d9:66
     config:     0
     state:      0
     current:    10GB-FD COPPER
     speed: 10000 Mbps now, 0 Mbps max
 LOCAL(s1): addr:c2:53:40:c8:d9:4b
     config:     0
     state:      0
     speed: 0 Mbps now, 0 Mbps max
OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0
我们现在知道,«h1连接到s1-eth1,即端口1»,«h2连接到s1-eth2,即端口2»

要从h1 ping到h2,请添加更改主机ip和主机mac的规则(最终适应您自己的网络拓扑)

现在,主机可以相互ping

mininet> h1 ping -c2 h2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_req=1 ttl=64 time=43.9 ms
64 bytes from 10.0.0.2: icmp_req=2 ttl=64 time=0.100 ms

如果你的人际网络不同,你可以调整规则,但步骤是相同的

我仍然不知道问题出在哪里,但解决办法是回到原点,重新开始。这次我没有下载预构建的Opendaylight应用程序,而是自己构建的。我在任何方面都不是Linux专家,这就是为什么我以前不愿意这么做的原因。然而,从源头建设显然起了作用。安装并配置了所有设备,现在我有了一个工作的控制器


非常感谢所有的帮助和提示,关于在哪里找,找什么。非常感谢。

我的处境与上述相同。这个命令对我起了作用:

 sudo mn --mac --arp --controller=remote,ip=192.168.1.33,port=6633

我认为您应该添加另一个允许ARP请求的流,如下所示:


mininet>sh ovs ofctl add flow s1 dl_type=0x806,nw_proto=1,actions=flow

您的确切要求有点不清楚。我建议您编辑并添加一个简短的问题摘要。您是否为桥接器添加了流规则?我通过单击“添加流”按钮将流(每个方向一个)添加到“流”选项卡下的控制器中。还有其他地方需要添加吗?我想我有点被“桥”这个词搞糊涂了,我以为它们叫做交换机。我将再次浏览文档,以确保我们讨论的是同一件事。我们讨论的是同一件事,因为OvS文档中到处都使用“桥”,即使它是一个开关(请参阅常见问题解答)。«Q:我原以为OpenVSwitch是一个虚拟以太网交换机,但文档一直在谈论网桥。什么是桥?答:在网络中,“网桥”和“交换机”是同义词。Open vSwitch实现了一个以太网交换机,这意味着它也是一个以太网桥。»您能在xterm或mininet CLI中编辑帖子并添加“ovs ofctl转储流s1”的结果吗?(如果您使用默认的mininet网络,我认为s1是网桥(交换机)的名称)。我将您建议的结果添加到原始帖子中。首先,您的控制器正在运行吗
mininet>s1 ovs vsctl列表控制器
(您应该将已连接设置为true)如果控制器未运行,请登录OpenDayLight VM并运行它。然后在osgi CLI中,通过键入
ss
在原始post中添加命令输出,验证是否已加载所有模块(即处于活动状态)。但是没有任何区别…现在我没有解决您的问题的方法,因为即使我重新安装并重新启动您的配置,我也没有这个问题。可能尝试使用选项-v debug打印调试消息为了确保问题不是您的标准拓扑,您可以更改mininet使用的交换机版本--swith=ivs或ovsk或ovsl或user。您也可以更改网络的标准拓扑(使用选项--topo=linear=2和2个交换机,或者--topo=tree,2和2高树拓扑,即3个交换机)
mininet> s1 ovs-ofctl dump-flows "s1"
NXST_FLOW reply (xid=0x4):
 cookie=0x0, duration=14.02s, table=0, n_packets=0, n_bytes=0, idle_age=14, priority=1,ip,nw_dst=10.0.0.2 actions=mod_dl_dst:00:00:00:00:00:02,output:2
 cookie=0x0, duration=7.692s, table=0, n_packets=0, n_bytes=0, idle_age=7, priority=1,ip,nw_dst=10.0.0.1 actions=mod_dl_dst:00:00:00:00:00:01,output:1
mininet> h1 ping -c2 h2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_req=1 ttl=64 time=43.9 ms
64 bytes from 10.0.0.2: icmp_req=2 ttl=64 time=0.100 ms
 sudo mn --mac --arp --controller=remote,ip=192.168.1.33,port=6633