基于之前的笔记,由 anthropic-claude-opus-4.5 重构。
概述
在数据中心软件定义网络(SDN)领域,思科的应用中心基础设施(ACI)采用了独特的FTAG(Forwarding Tags)机制来处理BUM流量。与依赖PIM协议的传统网络架构不同,ACI完全不使用PIM协议,而是通过ISIS协议构建多棵以Spine交换机为树根的转发树来实现高效的负载均衡。
📚 参考文档:BRKACI-3545 - Mastering ACI Forwarding
1. FTAG 转发机制
1.1 基本概念
| 组件 |
说明 |
| FTAG |
Forwarding Tags,用于BUM流量转发的树结构 |
| 树根 |
Spine交换机 |
| 建立协议 |
ISIS |
| 负载均衡 |
多棵FTAG树 + Hash算法 |
1.2 Flood 流量类型
- Link-local组播(224.0.0.x)
- 广播(Broadcast)
- L2组播(L2 Multicast)
- 未知单播(Unknown Unicast)
1.3 默认转发行为
默认:Flood in BD → 泛洪到BD内所有FD(Encaps)
例外:STP BPDU → 仅在FD/VLAN内泛洪(等同于EPG内泛洪)
2. VPC 环境下的多目标流量处理
2.1 DF(Designated Forwarder)机制
- 每对VPC Peer中,仅一个为DF(指定转发器),另一个为Non-DF。
- 此机制的核心目的是避免组播流量在VPC域内被重复转发。
2.2 组播源位置与转发行为
| 组播源位置 |
转发行为 |
| VPC Peer 后端 |
流量始终本地转发到VPC |
| 非 VPC 域 |
基于Hash算法选择某个VPC Peer作为DF进行转发 |
3. BD 级别 Flood 配置详解
3.1 L2 Unknown Unicast
| 模式 |
行为 |
适用场景 |
| Flood |
在BD内泛洪(目标TOR需存在该BD) |
Silent L2 Host友好 |
| Proxy |
发送到Spine Proxy查询 |
减少泛洪流量 |
Proxy 模式处理流程
Spine 查询结果:
├── Known(已知)
│ ├── MAC 已知 → Fabric 二层桥接
│ └── IP 已知 → Fabric 三层路由(发送到Router MAC)
│
└── Unknown(未知)
├── L2 流量 → Drop
└── L3 流量 → ARP Glean(Silent Host Tracking)
3.2 ARP Flooding
| 模式 |
行为 |
| Flood |
ARP在BD内泛洪(传统行为) |
| Unicast Routing |
ARP Request以L3单播形式在Fabric内传递 |
Unicast Routing 模式的 Egress TOR 行为
Egress TOR 查询 (VRF, Target IP):
├── Physical Port (PL) → ARP 在目标 FD 内泛洪
└── Virtual Port (VL) → ARP 发送到目标 VTEP
需要开启 ARP Flooding 的典型场景
场景描述:Active/Standby高可用环境
- Standby IP/MAC已被Leaf学习。
- Source端对Standby的ARP表项超时后,会发起单播ARP Request。
- Standby设备通常不响应发往自身的单播ARP(仅Active设备响应)。
解决方案:开启ARP Flooding,使ARP Request在BD内广播,从而让Active设备能够响应。
⚠️ 对于K8s环境,由于服务器IP/MAC地址频繁变化,通过延长Source端的ARP老化时间来规避此问题通常不合理。
3.3 Multi Destination Flooding
| 模式 |
说明 |
| Flood in BD |
默认行为,泛洪范围最大 |
| Drop |
丢弃多目标流量 |
| Flood in Encapsulation |
仅在相同Encap(VLAN)内泛洪 |
3.4 Unknown IP Multicast
| 模式 |
Ingress TOR 行为 |
Egress TOR 行为 |
| Flood |
泛洪 |
若BD有Router Port则泛洪到前端口;Transit场景发送到Fabric |
| Opt-Flood |
- |
仅发送到Fabric内的Router Ports |

4. Silent Host Tracking(Glean 机制)
4.1 机制概述
目的:当数据平面(Data Plane)学习到未知目标终端IP(或原有表项已过期)时,通过ARP协议来解析该终端IP。
类似功能:NXOS中的 ip glean 命令。
4.2 适用条件
| 条件 |
说明 |
| ✅ 适用 |
L3流量(跨EPG/BD子网的路由流量) |
| ✅ 要求 |
目标子网在ACI Fabric内部定义(非L3Out外部路由) |
| ❌ 不适用 |
L2未知单播(在非Flood模式下会被直接丢弃) |
4.3 处理流程
Unknown Destination Unicast Packet
│
▼
Redirect 到 Spine/Leaf CPU
(kpm_inb, knet200/knet201 接口)
│
▼ (受 CoPP 限速,默认 100 pps)
│
Spine 发送 Glean 报文到每个 TOR
(Ethertype: 0xfff2)
│
▼
TOR 处理逻辑:
├── 有对应 BD → Flood ARP
├── 无对应 VRF → istack Drop
└── 无对应 BD → ARP Process Drop

4.4 关键参数
# 查看 CoPP 策略统计
show copp policy stats
5. 要点小结
| 主题 |
关键点 |
| FTAG |
ISIS协议建立,Spine为根,多树Hash实现负载均衡 |
| VPC DF |
每对VPC中仅有一个DF负责转发组播流量 |
| L2 Unknown Unicast |
Flood与Proxy模式,Proxy模式下未知L2流量会被丢弃 |
| ARP Flooding |
Active/Standby高可用场景中通常需要开启 |
| Silent Host |
仅对L3流量有效,且受CoPP默认100pps速率限制 |
| Glean 报文 |
Ethertype为0xfff2,由Spine分发至所有TOR交换机 |
对思科ACI转发机制更深入的讨论,欢迎前往云栈社区的网络技术板块交流。
|