メインコンテンツまでスキップ

IPv6 dual-stack BGP と VIP

routerd は 1 つの BGPRouter から FRR の IPv4 unicast と IPv6 unicast を 同時に描画できます。spec.importPolicy.allowedPrefixesspec.exportPolicy.allowedPrefixesredistribute.*.allowedPrefixes は IPv4/IPv6 混在のままでよく、routerd が prefix-list、route-map、 address-family block を address family ごとに分けます。

BGPPeer.spec.peers には IPv6 peer address をそのまま指定します。

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 や service VIP は VirtualAddressspec.family: ipv4spec.family: ipv6 を指定した並列 resource として宣言します。IPv4 VIP は 従来通り keepalived の host prefix として描画し、IPv6 VIP は keepalived VRRPv3 の family inet6 として描画します。FreeBSD では どちらも parent interface の 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 resource が同じ hostname を持ち、対応する DNSResolverDNSZone がある場合、A record と AAAA record が自動で追加されます。firewall renderer は routerd 管理 resource に必要な BGP TCP/179 と IPv4/IPv6 VRRP protocol 112 の control traffic も開きます。

examples/dualstack-bgp.yaml は BGP 単体の形、 examples/k8s-api-vip-dualstack.yaml は Kubernetes API VIP の構成例です。