4、创建第一个OVS网桥:使用ovs-vsctl创建网桥、查看网桥状态、删除网桥
好,咱们正式开始动手了。前面铺垫了那么多概念,说白了就是为了这一刻——亲手创建出第一个OVS网桥。
我记得刚接触OVS那会儿,心里还挺忐忑的,总觉得虚拟交换机这东西很神秘。结果第一条命令敲下去,发现其实没那么复杂。今天我就带你走一遍最基础的操作流程:创建、查看、删除。这三板斧学会了,后面再玩patch port、QoS什么的,心里就有底了。
4.1 准备工作:确认OVS服务在跑
动手之前,先确认一下环境。我习惯用这条命令看看OVS守护进程是否活着:
systemctl status openvswitch
如果看到绿色的 active (running),那就没问题。要是没启动,执行:
systemctl start openvswitch
嗯,这里要注意:有些发行版的服务名可能叫 ovsdb-server 或 ovs-vswitchd。不过大部分情况下,openvswitch 这个服务会把它们一起拉起来。
ovs-vsctl show 看一眼当前状态。如果返回空或者只有版本信息,说明系统里还没有任何网桥——正好适合我们从头开始。
4.2 创建网桥:ovs-vsctl add-br
创建网桥的命令非常简单,就一句话:
ovs-vsctl add-br br0
这条命令会在OVS中创建一个名为 br0 的网桥。你可能会问:为什么叫br0?其实名字可以随便起,比如 ovs-bridge、mybridge 都行。但业界约定俗成用 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 实战小练习
光看不练假把式。我建议你按这个顺序操作一遍:
- 创建两个网桥:
br0和br1 - 用
ovs-vsctl show查看它们的状态 - 给
br0配一个IP:192.168.10.1/24 - 验证IP是否生效:
ip addr show br0 - 删除
br1,确认只剩br0 - 最后删除
br0,恢复干净环境
这个练习做完,你对OVS网桥的基本操作就心里有数了。后面我们会在网桥上挂端口、做流表、甚至跨网桥互联——但今天这一步,是地基。
- 创建网桥:
ovs-vsctl add-br 网桥名- 查看状态:
ovs-vsctl show- 删除网桥:
ovs-vsctl del-br 网桥名- 网桥创建后默认DOWN,记得
ip link set 网桥名 up- 名字要有意义,别乱起
下一章,咱们聊聊怎么往网桥上挂端口。说白了,就是让网桥真正开始干活儿。