跳到主要内容

IPv6 双协议栈 BGP 与 VIP

dual-stack BGPPeer address family、IPv4 与 IPv6 VirtualAddress、DNS A/AAAA record、BGP/VRRP firewall opening 的流程

routerd 可从单一 BGPRouter 同时处理 routerd-bgp GoBGP 的 IPv4 unicast 与 IPv6 unicast。 spec.importPolicy.allowedPrefixesspec.exportPolicy.allowedPrefixesredistribute.*.allowedPrefixes 中 IPv4/IPv6 混合指定皆可, routerd 会直接映射至对应类型的 GoBGP address family。

BGPPeer.spec.peers 中可直接指定 IPv6 的对等地址:

apiVersion: net.routerd.net/v1alpha1
kind: BGPPeer
metadata:
name: k8s-speakers
spec:
routerRef: BGPRouter/lan
peerASN: 64513
peers:
- 192.168.70.21
- fd00:70::21

API VIP 与服务 VIP 以并列资源的方式声明,分别在 VirtualAddress 中指定 spec.family: ipv4spec.family: ipv6。 IPv4 VIP 依惯例以 keepalived 主机前缀生成;IPv6 VIP 以 keepalived VRRPv3 的 family inet6 生成。在 FreeBSD 上,两者皆作为父接口的 CARP alias 处理。

apiVersion: net.routerd.net/v1alpha1
kind: VirtualAddress
metadata:
name: k8s-api-vip-v6
spec:
interface: lan
address: fd00:70::10/128
family: ipv6
hostname: k8s-api.cluster.example
mode: vrrp
vrrp:
virtualRouterID: 71
priority: 150
peers:
- fd00:70::3

当 IPv4/IPv6 的 VIP 资源拥有相同的 hostname,且有对应的 DNSResolverDNSZone 时, A 记录与 AAAA 记录会自动新增。防火墙生成时,也会开放 routerd 受管资源所需的 BGP TCP/179, 以及 IPv4/IPv6 VRRP protocol 112 的控制流量。

examples/dualstack-bgp.yaml 为纯 BGP 的配置示例; examples/k8s-api-vip-dualstack.yaml 为 Kubernetes API VIP 的配置示例。