跳至主要内容

CloudEdge SAM transport layering

CloudEdge SAM 不應把 mobile /32 放進 WireGuard AllowedIPs。WireGuard 的 AllowedIPs 是 cryptokey routing;而 SAM delivery plane 中 /32 owner 會隨著 BGP best path、route reflector 與 ECMP 變化,兩者職責不同。

CloudEdge SAM transport 圖:SAMTransportProfile 產生 IPIP delivery,可運行在 endpoint-only WireGuard underlay 上,mobile /32 由 BGP 與 kernel FIB 處理

推薦 layer

可信 underlay,或已經透過其他方式加密的 underlay,優先使用 IPIP:

physical underlay
IPIP tunnel
SAM overlay packets

需要加密時,將 WireGuard 作為 endpoint-only transport,再在其上承載 IPIP:

physical underlay
WireGuard endpoint transport
IPIP tunnel
SAM overlay packets

此時 WireGuard peer 的 AllowedIPs 只包含 10.252.0.2/32 這類 router-to-router endpoint prefix。SAM mobile /32 由 BGP、kernel FIB 與 SAM resource 處理。

SAMTransportProfile

目前 CloudEdge example 使用 SAMTransportProfile 產生每個 peer 的 TunnelInterface、endpoint /32 IPv4RouteBGPPeer

apiVersion: mobility.routerd.net/v1alpha1
kind: SAMTransportProfile
metadata:
name: cloudedge-transport
spec:
selfNodeRef: onprem-router
mode: ipip
encryption: wireguard
innerPrefix: 10.255.0.0/24
topologyNodeRefs:
- onprem-router
- aws-router-a
- azure-router
underlayInterface: wg-hybrid
localEndpointFrom:
resource: Interface/wg-hybrid
field: primaryIPv4
bgp:
routerRef: BGPRouter/mobility
peerASN: 64512
timersPreset: fast
peers:
- nodeRef: aws-router-a
remoteEndpoint: 10.252.0.2

spec.selfNodeRef 是每台 router 的穩定 ID。一個 profile 有多個 peer 時,所有 router 必須使用相同的 spec.topologyNodeRefs。routerd 會排序這份共享 node list,並為每個 unordered node pair 從 innerPrefix 分配 deterministic /31

cleanup

profile 會為每個 self node 寫入一個 DynamicConfigPart。刪除 peer 時,該 part 被新的產生 resource set 取代;刪除 profile 時,則變成空的 active part,產生的 tunnel、BGP peer 與 endpoint route 會從 effective config 消失。

cleanup 由目前 lifecycle GC path 負責。desired set 使用 dynamic SAM 產生後的 effective view,因此 profile 存在時產生的 transport resource 會被保留,只有從 profile output 消失後 才成為 GC 對象。