【发布时间】:2018-09-12 12:31:43
【问题描述】:
我正在创建以 OVS 和 docker 容器为主机的 SDN 拓扑。我的示例拓扑是:一个 ovs 交换机和 2 个主机(docker 容器)连接到它。
HOST1 (container1) OVS HOST2 (container2)
首先我启动我的 opendaylight 控制器并通过“ovs-vsctl set-controller s1 tcp:ip:port”将我的 ovs 开关连接到它,然后我使用“”运行 2 个 docker 容器docker run -dit --net=none --name host1 ubuntu:16.04 /bin/bash" 然后我使用 "ovs-docker" 命令将我的容器连接到 ovs。我可以看到我的开关出现在 opendaylight dlux 上,但我无法从一个容器 ping 到另一个容器。问题是odl不会自动更新流表 这是“ovs-ofctl dump-flows s1”输出
cookie=0x2b00000000000001, duration=2494.398s, table=0, n_packets=0, n_bytes=0, idle_age=2494, priority=100,dl_type=0x88cc actions=CONTROLLER:65535
cookie=0x2b00000000000001, duration=2494.387s, table=0, n_packets=18, n_bytes=756, idle_age=665, priority=0 actions=drop
但是当我再次重新启动控制器时,一切正常,流被添加到我的 ovs 开关,我可以从一个容器 ping 到另一个容器。
cookie=0x2b00000000000000, duration=3.087s, table=0, n_packets=0, n_bytes=0, idle_age=3, priority=2,in_port=1 actions=output:2,CONTROLLER:65535
cookie=0x2b00000000000001, duration=3.087s, table=0, n_packets=0, n_bytes=0, idle_age=3, priority=2,in_port=2 actions=output:1,CONTROLLER:65535
cookie=0x2b00000000000001, duration=2919.471s, table=0, n_packets=0, n_bytes=0, idle_age=2919, priority=100,dl_type=0x88cc actions=CONTROLLER:65535
cookie=0x2b00000000000001, duration=2919.46s, table=0, n_packets=18, n_bytes=756, idle_age=1090, priority=0 actions=drop
我知道我可以通过 openflow pluing rest api 将流推送到流表,但假设您有太多端口(主机)连接到交换机,您必须一一发送流条目。那么有没有办法向 Opendaylight 控制器发送事件以使其自动更新开关流表?
【问题讨论】:
-
您在这里使用 l2switch 功能吗?我只是想知道谁在重新启动时对您的流程进行编程?
-
是的,我正在使用 l2switch 功能......但我认为它不会触发,直到我重新启动控制器或在开关上再次设置控制器(ovs-vsctl set-controller)。在重新启动控制器或再次设置控制器后,一切正常,,,
标签: docker opendaylight openflow openvswitch