Cumulus LinuxでIPv6環境のOSPF, BGPを試しました
概要
Cumulus Linuxを触ったことがなかったので、動かしてみました。
Cumulus Linux 3.7.2でOSPFv3とIPv6でのiBGPピアリングを試しました。
検証
- OSPFv3 (
lo
への到達性を確保) - iBGP (
lo
でピアリング)
検証環境
設定手順
設定は図の cumulus-01
のみを例示します。他の5台についても、同様の設定をします。
Cumulus VXの導入
ダウンロードサイトからCumulus VXのOVAファイルをダウンロードします (要アカウント) 。 そして、OVAファイルからVMを作成していきます。
仮想マシンのリンクの接続用に、ESXiの仮想スイッチを1台作成します。 リンクごとにポートグループを作成し、リンクを接続していきます。
Cumulus VXには、デフォルトでは
- user:
cumulus
- password:
CumulusLinux!
でログインできます。
NCLU
設定にはNCLU (Network Command Line Utility) というCumulusのCLIを利用しました。
なお、Cumulus Linuxでは、NCLUの net
コマンドのほか vtysh
によるCiscoライクなCLIも利用可能です。
ホスト名の設定
まずはホスト名を設定します。
cumulus@cumulus:~$ net add hostname cumulus-01
設定内容を確認し、設定を反映させます。
以降の手順では、 net commit
を省略しています。設定後に適宜反映させてください。
cumulus@cumulus:~$ net pending cumulus@cumulus:~$ net commit
ループバックインタフェースの設定
今回は、iBGPのピアをループバックインタフェースで設定していきます。
そのため、ループバックインタフェース lo
にIPアドレスを設定しておきます。
IPv4アドレスは今回使いませんが、OSPFやBGPの router-id
として使うものと同じ値を設定しておきます。
cumulus@cumulus-01:~$ net add loopback lo ip address 10.1.1.1/32 cumulus@cumulus-01:~$ net add loopback lo ipv6 address 2001:db8::1/128
OSPFv3の設定
iBGPのピアリングのために、IPv6用のOSPFv3で到達性を確保しておきます。
まずは router-id
を設定します。
cumulus@cumulus-01:~$ net add ospf6 router-id 10.1.1.1
そして、インタフェースをエリアに登録しておきます。
cumulus@cumulus-01:~$ net add ospf6 interface swp2 area 0.0.0.0 cumulus@cumulus-01:~$ net add ospf6 interface swp3 area 0.0.0.0 cumulus@cumulus-01:~$ net add ospf6 interface lo area 0.0.0.0
今回の検証環境では、ノード間がL2で1:1で接続されています。
そのため、他のノードと接続されているインタフェース (swp2
, swp3
) に対し、
ネットワークタイプ point-to-point
を設定しておきます。
cumulus@cumulus-01:~$ net add interface swp2 ospf6 network cumulus@cumulus-01:~$ net add interface swp3 ospf6 network
OSPFv3では、ネクストホップへの転送がIPv6 link local addressによって行われます。 そのため、ルータ間のインタフェースにIPv6アドレスを設定する必要はありません。
以上でOSPFv3の設定が完了です。
設定は /etc/frr/frr.conf
に反映されるため、それを確認しておきます。
cumulus@cumulus-01:~$ sudo cat /etc/frr/frr.conf interface swp2 ipv6 ospf6 network point-to-point ! interface swp3 ipv6 ospf6 network point-to-point ! router ospf6 ospf6 router-id 10.1.1.1 interface swp2 area 0.0.0.0 interface swp3 area 0.0.0.0 interface lo area 0.0.0.0 !
経路情報を確認すると、それぞれのループバックインタフェースに対しての到達性が確保できていることがわかります。
cumulus@cumulus-01:~$ ip -6 route show unreachable 2001:db8::1 dev lo proto kernel metric 256 error -101 pref medium 2001:db8::2 via fe80::20c:29ff:fee5:1dff dev swp2 proto ospf metric 20 pref medium 2001:db8::3 via fe80::20c:29ff:fee5:1dff dev swp2 proto ospf metric 20 pref medium 2001:db8::4 via fe80::20c:29ff:fe13:a8aa dev swp3 proto ospf metric 20 pref medium 2001:db8::5 proto ospf metric 20 nexthop via fe80::20c:29ff:fee5:1dff dev swp2 weight 1 nexthop via fe80::20c:29ff:fe13:a8aa dev swp3 weight 1
この lo
を利用してiBGPのピアリングを行っていきます。
IPv6 iBGPの設定
まずはAS番号を設定します。 今回はiBGPなので、全てのノードで同じAS番号を使います。
cumulus@cumulus-01:~$ net add bgp autonomous-system 65000
次に、BGPの router-id
を設定します。
cumulus@cumulus-01:~$ net add bgp router-id 10.1.1.1
次に、 ibgp-group
というBGPのグループを作成します。
そのグループに対し、iBGPとIPv6経路広告の有効化を設定します。
cumulus@cumulus-01:~$ net add bgp neighbor group-ibgp peer-group cumulus@cumulus-01:~$ net add bgp neighbor group-ibgp remote-as internal cumulus@cumulus-01:~$ net add bgp ipv6 unicast neighbor group-ibgp activatre
そして、iBGPのピアを確立するノードの lo
のIPv6アドレスを所属させていきます。
cumulus@cumulus-01:~$ net add bgp neighbor 2001:db8::2 peer-group group-ibgp cumulus@cumulus-01:~$ net add bgp neighbor 2001:db8::3 peer-group group-ibgp cumulus@cumulus-01:~$ net add bgp neighbor 2001:db8::4 peer-group group-ibgp cumulus@cumulus-01:~$ net add bgp neighbor 2001:db8::5 peer-group group-ibgp
以上でiBGPの設定が完了です。
OSPFv3と同様に、設定が /etc/frr/frr.conf
に反映されるため、それを確認しておきます。
cumulus@cumulus-01:~$ sudo cat /etc/frr/frr.conf router bgp 65000 neighbor group-ibgp peer-group neighbor group-ibgp remote-as internal neighbor 2001:db8::2 peer-group group-ibgp neighbor 2001:db8::3 peer-group group-ibgp neighbor 2001:db8::4 peer-group group-ibgp neighbor 2001:db8::5 peer-group group-ibgp ! address-family ipv6 unicast neighbor group-ibgp activate exit-address-family !
BGPのneighborを確認すると、iBGPのピアが確立できています。
cumulus@cumulus-01:~$ net show bgp ipv6 unicast summary BGP router identifier 10.1.1.1, local AS number 65000 vrf-id 0 BGP table version 0 RIB entries 0, using 0 bytes of memory Peers 4, using 77 KiB of memory Peer groups 1, using 64 bytes of memory Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd cumulus-02(2001:db8::2) 4 65000 8682 8682 0 0 0 07:13:58 0 cumulus-03(2001:db8::3) 4 65000 8682 8682 0 0 0 07:13:58 0 cumulus-04(2001:db8::4) 4 65000 8682 8682 0 0 0 07:13:58 0 cumulus-05(2001:db8::5) 4 65000 8682 8682 0 0 0 07:13:58 0 Total number of neighbors 4
終わりに
今回はCumulus LinuxでIPv6環境でOSPFv3とiBGPを動かしてみました。 IPv6 link local addressを使ってOSPFを設定できるのが楽でいいですね。
この環境を使って、他のネットワークプロトコルも動かしてみたいと思います。