TF gatewaylessの経路をVyOSに配布
Tungsten Fabric (以下、TF) のgatewayless では、vrouter 上に存在し、ip fabric forwarding が有効になっているvmi (通常は、コンテナを想定) について、その経路を、bgp (family inet) で配布する機能がある。
https://github.com/Juniper/contrail-specs/blob/master/gateway-less-forwarding.md
このため、vrouter と同じセグメントのルーター (vrouterのデフォルトゲートウェイを想定) に対して、peer を張ることで、ルーターとコンテナの間で、直接ping が飛ぶようにすることが出来る。
※ 以前のブログでは、/32 で static route を定義していたが、bgp で経路を渡せるようにしておけば、経路を個別に定義する必要は無くなる
http://aaabbb-200904.hatenablog.jp/entry/2018/05/14/003319
準備として、前回同様、k8s+TF の環境をaws上に構築し、default-k8s-pod-network に ip fabric forwarding の設定を行っておく。
この後、上記の k8s master / slave と同じサブネットに、vyos (ami-6946f70f) のインスタンスを作成する。
※ t2.small (1 cpu, 2 GB mem), 4GB disk を指定
※ TF controller: 172.31.11.86, TF vrouter: 172.31.2.194, vyos: 172.31.10.140 の環境を使用
vyos が起動してきたら、以下のように、TF controller とのbgp設定を実施しておく。
# set protocols bgp 65311 neighbor 172.31.11.86 remote-as 64512
上記の設定が終わったら、TFのwebui の Configure > Infrastructure > BGP Routers から、以下の画面のように、BGP の定義を作成する。
設定が終わった後、vyos に戻って、bgp が上がってくることを確認する (上がってくるまで 45秒-1分程度かかった)
vyos@VyOS-AMI:~$ show ip bgp summary BGP router identifier 172.31.10.140, local AS number 65311 IPv4 Unicast - max multipaths: ebgp 1 ibgp 1 RIB entries 5, using 480 bytes of memory Peers 1, using 4560 bytes of memory Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 172.31.11.86 4 64512 14 13 0 0 0 00:00:08 3 Total number of neighbors 1 vyos@VyOS-AMI:~$
vyos 上でbgp の経路を確認すると、以下のようにコンテナへの経路 (next-hop は vrouter のip) が流れてきており、bgp inetでの経路配布が、正しく行われていることが確認出来る。
vyos@VyOS-AMI:~$ show ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - ISIS, B - BGP, > - selected route, * - FIB route S>* 0.0.0.0/0 [210/0] via 172.31.0.1, eth0 B>* 10.47.255.250/32 [20/100] via 172.31.2.194, eth0, 00:00:30 B>* 10.47.255.251/32 [20/100] via 172.31.2.194, eth0, 00:00:30 B>* 10.47.255.252/32 [20/100] via 172.31.2.194, eth0, 00:00:30 C>* 127.0.0.0/8 is directly connected, lo C>* 172.31.0.0/20 is directly connected, eth0 vyos@VyOS-AMI:~$
また、この状態で、コンテナからvyosに対してping が飛ぶことを確認出来る。
※ 前回同様、aws上の ネットワーク&セキュリティ > インターフェース、の定義で、"送信元・送信先の変更チェック"、を無効にする必要があるので注意 (vrouter 用のec2インスタンスに対して実施する必要あり)
/ # ip -o a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000\ link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 1: lo inet 127.0.0.1/8 scope host lo\ valid_lft forever preferred_lft forever 1: lo inet6 ::1/128 scope host \ valid_lft forever preferred_lft forever 11: eth0@if12: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue \ link/ether 02:dd:9c:4e:dc:6b brd ff:ff:ff:ff:ff:ff 11: eth0 inet 10.47.255.251/12 scope global eth0\ valid_lft forever preferred_lft forever 11: eth0 inet6 fe80::c0cd:54ff:fefc:4ce0/64 scope link \ valid_lft forever preferred_lft forever / # / # / # ping 172.31.10.140 PING 172.31.10.140 (172.31.10.140): 56 data bytes 64 bytes from 172.31.10.140: seq=0 ttl=63 time=0.762 ms 64 bytes from 172.31.10.140: seq=1 ttl=63 time=0.529 ms ^C --- 172.31.10.140 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0.529/0.645/0.762 ms / #
ネットワーク分離の要件が無い、等の理由で、オーバーレイを使う必要がない環境では、上記の構成を検討してみるのもよいのではなかろうか。