Open vSwitch 入门实践(3)使用 OVS 构建分布式隔离网络

2020-12-15 23:33:08 +08:00
 FreeEx

使用 OVS 构建分布式隔离网络

前言

上一节我们使用 OVS 构建了单机隔离网络,但是随着网络规模的扩张,单节点已经不再能满足业务的需要,分布式网络成了必不可少的环节。分布式网络与单节点网络在细节实现上基本一致,只有物理环境网络连线上的一点区别。

实验 1:分布式无隔离网络

网络拓扑如下图所示,我们每一台节点都有两张网卡,一张用于管理,一张用于业务。之所以使用两张网卡有两个原因:

  1. 管理网卡用于日常的维护登录,业务网卡用于传输虚拟节点的数据报文,避免相互之间影响。
  2. 我们要将业务网卡绑定到 OVS 网桥上,也就是Normal类型的Port。这种方式添加的Port不支持分配 IP 地址,如果之前网卡上配置的有 IP,挂载到 OVS 上面之后将不可访问。

需要注意的是,如果是使用物理环境搭建网络拓扑,需要把业务网卡对应的交换机端口配置为trunk模式。如果是使用 VmWare 搭建网络拓扑,业务网卡需要配置网络类型为仅主机模式

![分布式无隔离网络]( https://oss.typesafe.cn/ovs-分布式隔离网络 0.png?t=2)

配置

ovs-vsctl add-br br-int
# 请修改 eth1 为当前实验环境的业务网卡名称
ovs-vsctl add-port br-int eth1

# 添加两个内部端口
ovs-vsctl add-port br-int vnet0 -- set Interface vnet0 type=internal
ovs-vsctl add-port br-int vnet1 -- set Interface vnet1 type=internal
# 添加两个 netns
ip netns add ns0
ip netns add ns1
# 将内部端口分别移动到 netns 中
ip link set vnet0 netns ns0
ip link set vnet1 netns ns1

# 启动端口并配置 IP
ip netns exec ns0 ip link set lo up
ip netns exec ns0 ip link set vnet0 up
ip netns exec ns0 ip addr add 10.0.0.1/24 dev vnet0

ip netns exec ns1 ip link set lo up
ip netns exec ns1 ip link set vnet1 up
ip netns exec ns1 ip addr add 10.0.0.2/24 dev vnet1
ovs-vsctl add-br br-int
# 请修改 eth1 为当前实验环境的业务网卡名称
ovs-vsctl add-port br-int eth1

# 添加两个内部端口
ovs-vsctl add-port br-int vnet0 -- set Interface vnet0 type=internal
ovs-vsctl add-port br-int vnet1 -- set Interface vnet1 type=internal
# 添加两个 netns
ip netns add ns0
ip netns add ns1
# 将内部端口分别移动到 netns 中
ip link set vnet0 netns ns0
ip link set vnet1 netns ns1

# 启动端口并配置 IP
ip netns exec ns0 ip link set lo up
ip netns exec ns0 ip link set vnet0 up
ip netns exec ns0 ip addr add 10.0.0.3/24 dev vnet0

ip netns exec ns1 ip link set lo up
ip netns exec ns1 ip link set vnet1 up
ip netns exec ns1 ip addr add 10.0.0.4/24 dev vnet1

测试

ip netns exec ns0 ping 10.0.0.3
ip netns exec ns0 ping 10.0.0.4
ip netns exec ns1 ping 10.0.0.3
ip netns exec ns1 ping 10.0.0.4
ip netns exec ns0 ping 10.0.0.1
ip netns exec ns0 ping 10.0.0.2
ip netns exec ns1 ping 10.0.0.1
ip netns exec ns1 ping 10.0.0.2

| 主机 A | 主机 B | ping 结果 | | --- | --- | --- | | ns0 | ns0 | 可通信 ✅ | | ns0 | ns1 | 可通信 ✅ | | ns1 | ns0 | 可通信 ✅ | | ns1 | ns1 | 可通信 ✅ |

根据测试结果可以看到我们使用 OVS 成功的联通了分布在不同主机上的虚拟网络设备。

实验 2:分布式隔离网络

构建分布式隔离网络和单节点的操作方法一致,即给对应的端口配置 VLAN tag 。如下图所示,我们分别给主机 A 、B 上的端口配置 VLAN tag 为 100 和 200 。

![分布式无隔离网络]( https://oss.typesafe.cn/ovs-分布式隔离网络 1.png?t=2)

配置

ovs-vsctl set Port vnet0 tag=100
ovs-vsctl set Port vnet1 tag=200
ovs-vsctl set Port vnet0 tag=100
ovs-vsctl set Port vnet1 tag=200

测试

ip netns exec ns0 ping 10.0.0.3
ip netns exec ns0 ping 10.0.0.4
ip netns exec ns1 ping 10.0.0.3
ip netns exec ns1 ping 10.0.0.4
ip netns exec ns0 ping 10.0.0.1
ip netns exec ns0 ping 10.0.0.2
ip netns exec ns1 ping 10.0.0.1
ip netns exec ns1 ping 10.0.0.2

| 主机 A | 主机 B | ping 结果 | | --- | --- | --- | | ns0 | ns0 | 可通信 ✅ | | ns0 | ns1 | 不通信 ❌ | | ns1 | ns0 | 不通信 ❌| | ns1 | ns1 | 可通信 ✅ |

根据测试结果可以看到我们使用 OVS 成功的隔离了分布在不同主机上的虚拟网络设备。

本文首发我的微信公众号:我在对面的角落 欢迎关注,接收第一时间更新通知。

773 次点击
所在节点    推广
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/735824

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX