找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2579

积分

0

好友

361

主题
发表于 3 天前 | 查看: 10| 回复: 0

基于之前的笔记,由 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

ACI数据包转发决策流程图


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

ARP Glean(静默主机跟踪)处理流程图

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转发机制更深入的讨论,欢迎前往云栈社区的网络技术板块交流。




上一篇:SpringBoot如何对接第三方系统?详解HTTP客户端与数据同步方案
下一篇:提升C++开发效率:五个避免重复造轮子的实用库推荐
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-24 02:49 , Processed in 0.412864 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表