baron tech blog

学びをアウトプットしていきたいです

Cumulus LinuxでIPv6環境のOSPF, BGPを試しました

概要

Cumulus Linuxを触ったことがなかったので、動かしてみました。
Cumulus Linux 3.7.2でOSPFv3とIPv6でのiBGPピアリングを試しました。

検証

f:id:foobaron:20190103223725p:plain
構築したIPv6ネットワーク (OSPFv3, iBGP)

  • OSPFv3 (lo への到達性を確保)
  • iBGP (lo でピアリング)

検証環境

  • 仮想化基盤:VMware ESXi 6.7.0
  • ネットワーク機器:Cumulus VX 3.7.2 (VMware版) x 5台

設定手順

設定は図の cumulus-01 のみを例示します。他の5台についても、同様の設定をします。

Cumulus VXの導入

ダウンロードサイトからCumulus VXのOVAファイルをダウンロードします (要アカウント) 。 そして、OVAファイルからVMを作成していきます。

仮想マシンのリンクの接続用に、ESXiの仮想スイッチを1台作成します。 リンクごとにポートグループを作成し、リンクを接続していきます。

f:id:foobaron:20190103211101p:plain
ESXiのポートグループの設定

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のピアをループバックインタフェースで設定していきます。 そのため、ループバックインタフェース loIPアドレスを設定しておきます。 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のピアを確立するノードの loIPv6アドレスを所属させていきます。

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 LinuxIPv6環境でOSPFv3とiBGPを動かしてみました。 IPv6 link local addressを使ってOSPFを設定できるのが楽でいいですね。

この環境を使って、他のネットワークプロトコルも動かしてみたいと思います。