Overlay アーキテクチャ¶
Overlay を読むときの中心は、設定テーブルそのものではなく「誰がどの table を見て、最終的にどの SAI object を作るか」です。VXLAN/VNET/EVPN は入口が違っても、VTEP、tunnel map、tunnel nexthop、VRF/VNI map、route の組み合わせに落ちます。
主要コンポーネント¶
| コンポーネント | 役割 |
|---|---|
vxlanmgrd / config CLI |
CONFIG_DB の VXLAN/VNET 設定を検証・投影する |
VxlanTunnelOrch / VxlanTunnelMapOrch |
VXLAN tunnel、termination、VLAN/VRF/VNI map を SAI に作る |
VnetOrch |
VNET の VRF / bridge、VNET route、tunnel nexthop、ECMP group を管理する |
FRR bgpd |
EVPN Type-2 / Type-3 / Type-5 を BGP で交換する |
fpmsyncd / route sync 経路 |
FRR から SONiC DB / orchagent 側へ route 情報を渡す |
BfdOrch |
Overlay ECMP の endpoint 生存性を BFD で監視する |
| SAI / ASIC | tunnel、tunnel map、tunnel nexthop、next-hop group、VRF を実装する |
HLD 名では VxlanOrch と書かれる箇所がありますが、現行の整理では VXLAN tunnel、map、EVPN NVO などが複数の orch クラスに分かれています。読み物としては「VXLAN 系 orch が tunnel と mapper を担当し、VNET 系 orch が route と nexthop を担当する」と捉えるのが実用的です。
Type-2 / Type-5 と VNET route¶
EVPN Type-2 は MAC/IP の到達性、Type-5 は IP prefix の到達性を配ります。一方、VNET route は SONiC の DB で local / tunnel route を表す形式です。両者は同一ではありませんが、最終的には remote endpoint への tunnel nexthop や route として ASIC へ入ります。
flowchart TB
subgraph Control[Control plane]
FRR[FRR BGP-EVPN]
T2[Type-2 MAC/IP]
T5[Type-5 IP Prefix]
FRR --> T2
FRR --> T5
end
subgraph Sonic[SONiC DB / Orch]
VXT[VXLAN_TUNNEL]
MAP[VXLAN_TUNNEL_MAP]
VNET[VNET]
VRT[VNET_ROUTE_TUNNEL_TABLE]
VXORCH[VXLAN tunnel orch]
VORCH[VnetOrch]
end
subgraph ASIC[SAI / ASIC]
TUN[SAI tunnel + term]
NH[Tunnel nexthop]
NHG[Next-hop group]
ROUTE[Route / FDB]
end
VXT --> VXORCH --> TUN
MAP --> VXORCH
VNET --> VORCH
T2 --> VORCH
T5 --> VORCH
VRT --> VORCH
VORCH --> NH --> NHG --> ROUTE
VNET route の流れ¶
VNET_ROUTE_TABLE は VNET 内の subnet / local route、VNET_ROUTE_TUNNEL_TABLE は remote endpoint へ encapsulate する route として扱います。tunnel route では endpoint、必要なら endpoint monitor、MAC、VNI、BFD profile、primary/secondary、custom monitoring などが判断材料になります。
Overlay ECMP では、同じ prefix に複数 endpoint を持たせ、VnetOrch が tunnel nexthop group を作ります。BFD monitoring が有効な設計では、monitoring IP の BFD state に応じて NHG member を出し入れします。拡張版では primary/secondary、custom monitoring、pinned_state、per-route BFD timer、directly connected nexthop が追加されます。
Local endpoint forwarding¶
SmartSwitch / DPU 連携では、remote endpoint に見える nexthop が実は local DPU と直結している場合があります。check_directly_connected=true を使うと、VnetOrch は ARP / neighbor を確認し、直結なら tunnel route ではなく通常 ECMP route として扱います。failover の transient state では、tunnel decap 後のパケットを local nexthop へ redirect する高優先 ACL が使われます。
EVPN multihoming の位置¶
EVPN multihoming は、Type-1 / Type-4、ESI、DF election、split-horizon を使って host を複数 leaf に接続する発展機能です。基本の Type-2 / Type-5 VXLAN EVPN の上に乗るため、この章では境界だけを扱い、詳細は EVPN VXLAN Multihoming へ譲ります。