4、创建第一个OVS网桥:使用ovs-vsctl创建网桥、查看网桥状态、删除网桥

好,咱们正式开始动手了。前面铺垫了那么多概念,说白了就是为了这一刻——亲手创建出第一个OVS网桥。

我记得刚接触OVS那会儿,心里还挺忐忑的,总觉得虚拟交换机这东西很神秘。结果第一条命令敲下去,发现其实没那么复杂。今天我就带你走一遍最基础的操作流程:创建、查看、删除。这三板斧学会了,后面再玩patch port、QoS什么的,心里就有底了。

4.1 准备工作:确认OVS服务在跑

动手之前,先确认一下环境。我习惯用这条命令看看OVS守护进程是否活着:

systemctl status openvswitch

如果看到绿色的 active (running),那就没问题。要是没启动,执行:

systemctl start openvswitch

嗯,这里要注意:有些发行版的服务名可能叫 ovsdb-serverovs-vswitchd。不过大部分情况下,openvswitch 这个服务会把它们一起拉起来。

小技巧: 我个人习惯在操作前先跑 ovs-vsctl show 看一眼当前状态。如果返回空或者只有版本信息,说明系统里还没有任何网桥——正好适合我们从头开始。

4.2 创建网桥:ovs-vsctl add-br

创建网桥的命令非常简单,就一句话:

ovs-vsctl add-br br0

这条命令会在OVS中创建一个名为 br0 的网桥。你可能会问:为什么叫br0?其实名字可以随便起,比如 ovs-bridgemybridge 都行。但业界约定俗成用 br 开头,后面跟数字,方便管理。

我在项目中遇到过有人把网桥命名为 test123,结果三个月后回来一看,完全想不起这个网桥是干嘛用的。所以建议你从一开始就养成好习惯——名字要有意义。

创建成功后,你可以用 ip link 看看系统里多了什么:

ip link show br0

你会看到一个虚拟网络接口出现了,状态是 DOWN。别慌,这是正常的。网桥刚创建时默认是关闭的,需要手动启用:

ip link set br0 up
注意:ip link set br0 up 只是让这个接口在Linux内核里处于UP状态。OVS内部的转发逻辑不受这个影响。但如果你不把它UP起来,有些上层应用可能会觉得这个接口不可用。

4.3 查看网桥状态:ovs-vsctl show

创建完了,总得看看它长什么样吧?我最常用的查看命令就是:

ovs-vsctl show

输出大概是这样:

a1b2c3d4-e5f6-7890-abcd-ef1234567890
    Bridge "br0"
        Port "br0"
            Interface "br0"
                type: internal
    ovs_version: "2.17.0"

我来帮你解读一下这几行信息:

  • UUID:那一长串十六进制数字,是OVS数据库里这个网桥的唯一标识。平时用不到,但排错时可能会查。
  • Bridge "br0":告诉你网桥名字叫br0。
  • Port "br0":每个网桥至少有一个端口,就是它自己。这个端口关联着一个内部接口。
  • Interface "br0":接口类型是 internal,说明这是一个虚拟接口,可以配置IP地址。
  • ovs_version:OVS的版本号。不同版本功能有差异,这个信息在排查兼容性问题时很有用。

如果你想看更详细的信息,可以用:

ovs-ofctl show br0

这条命令会展示OpenFlow层面的端口信息,包括端口号、状态、MAC地址等。不过这是后话了,咱们先掌握 ovs-vsctl show 就够用。

4.4 给网桥配个IP(可选)

有时候你需要让网桥本身能通信,比如做管理用途。那就给它配个IP:

ip addr add 192.168.100.1/24 dev br0

配完之后,你可以用 ping 192.168.100.1 测试一下。如果能通,说明网桥的协议栈工作正常。

我曾经在调试一个跨主机通信的问题时,发现网桥的IP配错了子网,结果两边怎么都ping不通。折腾了半小时才发现是掩码写成了 /16 而不是 /24。这种低级错误,犯过一次就记住了。

4.5 删除网桥:ovs-vsctl del-br

有创建就有删除。删除网桥的命令是:

ovs-vsctl del-br br0

执行完后,再用 ovs-vsctl show 看看,你会发现br0已经消失了。同时,系统里的 br0 网络接口也会自动消失。

警告: 删除网桥前,请确认上面没有重要的流量。我曾经在测试环境里手快删了一个网桥,结果导致上面挂着的几个容器瞬间断网。虽然测试环境无所谓,但生产环境这么干就等着挨骂吧。

另外,如果网桥上还有其他的端口(比如veth pair、patch port),删除网桥时会一并清理掉。但如果你只是删除了某个端口,网桥本身还在。

4.6 实战小练习

光看不练假把式。我建议你按这个顺序操作一遍:

  1. 创建两个网桥:br0br1
  2. ovs-vsctl show 查看它们的状态
  3. br0 配一个IP:192.168.10.1/24
  4. 验证IP是否生效:ip addr show br0
  5. 删除 br1,确认只剩 br0
  6. 最后删除 br0,恢复干净环境

这个练习做完,你对OVS网桥的基本操作就心里有数了。后面我们会在网桥上挂端口、做流表、甚至跨网桥互联——但今天这一步,是地基。

核心要点回顾:
- 创建网桥:ovs-vsctl add-br 网桥名
- 查看状态:ovs-vsctl show
- 删除网桥:ovs-vsctl del-br 网桥名
- 网桥创建后默认DOWN,记得 ip link set 网桥名 up
- 名字要有意义,别乱起

下一章,咱们聊聊怎么往网桥上挂端口。说白了,就是让网桥真正开始干活儿。