docker 将两台容器化(OVS)交换机连接到SDN控制器

fdbelqdn  于 2023-08-03  发布在  Docker
关注(0)|答案(2)|浏览(163)

我正在尝试创建以下配置。两个(Docker)容器,让我们按照下面描述的主机名(s1和s2)来调用它们,每个容器都包含Open vSwitch。我想将两个OVS相互连接,并连接到(POX)控制器。
这就是我所做的(如果需要,所有命令都使用root权限运行):
1.运行第一个容器
第一个月
运行第二个容器作为
docker run -itd -P --hostname=s2 --cap-add NET_ADMIN %DOCKER_IMAGE%
2.
docker exec CID_s1 ovs-vsctl add-br s1
(其中CID_s1是容器s1的CID)
docker exec CID_s2 ovs-vsctl add-br s2
3.
在主机上:
ip link add s1-eth1 type veth peer name s2-eth1
ip link set s1-eth1 netns PID_s1(其中PID_s1是容器s1的PID)
ip link set s2-eth1 netns PID_s2
4.
在s1上打开一个终端并写入:
ovs-vsctl add-port s1 s1-eth1
ip link set s1-eth1 up
ifconfig s1-eth1 10.0.0.1
ovs-vsctl set-controller s1 tcp:172.17.0.1:6633
在s2上打开一个终端并写入:
ovs-vsctl add-port s2 s2-eth1
ip link set s2-eth1 up
ifconfig s2-eth1 10.0.0.2
ovs-vsctl set-controller s2 tcp:172.17.0.1:6633
此时,控制器显示交换机已连接,我可以看到控制器已安装流(控制器充当集线器,因此所有操作实际上都是泛洪)。
但是,我不能从s1 ping到s2或其他方式(当然使用它们的IP地址)。

wribegjk

wribegjk1#

您必须使用openflow协议的控制器或使用ovs命令手动将流安装到每个交换机,以便使用转发规则建立它们的连接,或者在控制器(如onos)的情况下,您可以安装并激活可连接性组件(如Learning Switch),它会自动为您生成这些转发规则

bgibtngc

bgibtngc2#

可能接口没有连接到容器。试试这个:

ovs-vsctl set Interface s1-eth0 external-ids:iface-id='"${UUID}"',vm-id='"${s1-VM-ID}"'

字符串

相关问题