2. Bond模式详解:Active-Backup模式原理与适用场景

好,咱们来聊聊Bond模式里最基础、也最常用的一种——Active-Backup模式。说白了,这就是一主一备的干活方式。我刚开始接触Open vSwitch的时候,第一个上手的就是这个模式,因为它逻辑简单,不容易出幺蛾子。

2.1 核心原理:一主一备,绝不抢活

Active-Backup模式,也叫主备模式。它的工作机制特别直白:

  • 任何时候,只有一块网卡在干活(Active状态)
  • 其他网卡都在旁边歇着(Backup状态)
  • 干活的那块挂了,备用的立刻顶上

你想想看,这就像咱们公司里的值班制度。今天张三值班,李四在家待命。张三要是生病了,李四马上接替。绝对不会出现两个人同时处理同一个工单的情况——那不乱套了吗?

在OVS里,Active-Backup模式通过bond_mode=active-backup来配置。它的核心判断依据是网卡的链路状态(Link State)。只要Active网卡的链路是up的,它就一直在干活。一旦检测到down了,OVS会立刻把流量切换到下一块可用的Backup网卡上。

关键点:Active-Backup模式下,不需要对端交换机做任何特殊配置。这是它最大的优势之一。你随便插两根网线到两台不同的交换机上,甚至插到同一个傻瓜交换机上,都能正常工作。

2.2 流量走向:同一时刻只有一条路

我记得有一次在客户现场排查问题,客户说“为什么我抓包只看到一块网卡有流量,另一块完全没有?”我笑了笑说:“这就对了,Active-Backup模式就是这样设计的。”

具体来说:

  • 发送流量:全部从Active网卡出去
  • 接收流量:也全部由Active网卡接收
  • Backup网卡:只做一件事——监听链路状态,随时准备接班

这里有个细节要注意。虽然Backup网卡不转发数据,但它的MAC地址和Active网卡是保持一致的。嗯,这是通过OVS内部的MAC地址共享机制实现的。这样做的好处是,当发生切换时,对端交换机不需要重新学习MAC地址,切换速度会快很多。

小技巧:我个人习惯在生产环境中,把两块网卡分别接到不同的物理交换机上。这样即使一台交换机整机挂了,另一块网卡也能立刻接管。这叫“设备级冗余”,比单纯的双链路更靠谱。

2.3 故障切换:到底有多快?

切换速度是大家最关心的问题。我在项目中实测过,Active-Backup模式的切换时间通常在1秒以内。具体取决于几个因素:

影响因素 说明 建议
链路检测间隔 OVS默认每1秒检查一次链路状态 可以调小到200ms,但会增加CPU开销
ARP缓存超时 对端设备的ARP表项老化时间 建议设置为30秒以内
STP收敛时间 如果用了生成树协议,切换会变慢 建议关闭STP或启用快速生成树

我曾经在一个数据中心项目里,把链路检测间隔调到了100ms。结果呢?切换速度确实快了,但CPU占用率从5%飙到了15%。后来我折中了一下,设成了300ms,效果还不错。所以啊,别一味追求极致速度,得看你的硬件扛不扛得住。

2.4 适用场景:什么时候该用它?

Active-Backup模式不是万能的,但它有几个特别擅长的场景:

  • 场景一:对带宽要求不高,但对可靠性要求极高

    比如管理网络、带外管理口。这些流量不大,但绝对不能断。Active-Backup模式正好合适。

  • 场景二:对端交换机不支持LACP

    很多老旧交换机或者傻瓜交换机,压根不认识LACP协议。这时候Active-Backup就是你的救星。

  • 场景三:需要跨交换机做冗余

    Active-Backup模式天生支持跨交换机。你把两块网卡插到不同的交换机上,完全没问题。这在LACP模式下反而需要额外配置(比如MLAG)。

  • 场景四:虚拟机热迁移场景

    我记得有一次做VMware的vMotion测试,发现Active-Backup模式配合OVS的流表规则,迁移过程中几乎感觉不到丢包。嗯,这个组合我后来推荐给了好几个客户。

避坑指南:我曾经犯过一个低级错误——把Active-Backup模式用在了需要高带宽的场景下。两块10G网卡,结果只有一块在干活,带宽硬生生被砍了一半。后来我换成了Balance-SLB模式才解决问题。所以记住:Active-Backup不提升带宽,只提升可靠性。

2.5 配置示例:动手试试

光说不练假把式。咱们来看看在OVS里怎么配Active-Backup模式。假设你有两块网卡eth1eth2

# 创建一个网桥
ovs-vsctl add-br br0

# 添加两块网卡,并设置bond模式
ovs-vsctl add-bond br0 bond0 eth1 eth2 \
  bond_mode=active-backup \
  lacp=off \
  other_config:bond-detect-mode=miimon \
  other_config:bond-miimon-interval=100

# 查看bond状态
ovs-appctl bond/show bond0

配置完成后,你可以用ovs-appctl bond/show命令查看哪块网卡是Active状态。输出结果里会明确告诉你:

---- bond0 ----
bond_mode: active-backup
bond may use recirculation: no
bond-hash-basis: 0
updelay: 0 ms
downdelay: 0 ms
next rebalance: 0 ms
lacp_status: off
active slave mac: 00:0c:29:ab:cd:01(eth1)
slave eth1: enabled
slave eth2: enabled backup

看到active slave mac那一行了吗?那就是当前干活的网卡。如果eth1的链路断了,你会看到它自动切换到eth2。

2.6 优缺点总结

最后,咱们来做个总结。Active-Backup模式就像一把瑞士军刀里的主刀——简单、可靠、通用。但它也有自己的脾气:

优点 缺点
配置简单,无需交换机配合 不提升带宽,总带宽等于单块网卡
切换速度快,通常小于1秒 负载不均衡,Active网卡压力大
支持跨交换机冗余 不适合大流量场景
兼容性好,几乎所有交换机都支持 链路利用率低,Backup网卡闲置

我个人觉得,Active-Backup模式是每个网络工程师都应该掌握的“基本功”。它可能不是最炫酷的,但绝对是最稳的。下次遇到“既要高可靠,又要简单配”的需求时,别犹豫,就用它。

好了,这一章就聊到这儿。下一章咱们会深入讲讲Balance-SLB模式,那个就有意思多了——能让两块网卡同时干活,带宽翻倍。到时候见!