メモのページ - チラシの裏メモ 3枚目

通信技術や気になった事を黙々とメモし続ける

6WIND VSRでOSPFとBGPの設定

前回は6WIND VSRの評価版ユーザの登録とVSRのVirtualboxへのデプロイを行い、初期設定とインターネットへの疎通確認、評価版ライセンスのアクティベートまで終えた。
評価版ライセンスを適用させた事により、ライセンス有効期間の30日間はVSRはvBR(Virtual Border Router)として動作する為、ISPのエッジルータ(ボーダールータ)として機能を試す事が可能である。今回はCisco CSR1000vやIOS XRvやVyOSを別途デプロイし各機器をVirtualbox内で接続させ、BGPネイバ関係を確立させてみた。
前回は評価版ライセンスの適用に関連するトラブル解消の為に、6WIND社の評価版のサポートのご助言を頂いた。この場を借りて感謝を申し上げる。
https://debslink.hatenadiary.jp/entry/20230329/1680017202 前回の記事(6WIND VSRを試用してみた)


当方の環境
ホスト機:macOS 13.2.1 / MacBook Pro 2020 / RAM: 16GB / CPU: Intel Core i5 2.0GHz
仮想化環境:Oracle VirtualBox 7.0.6
ゲストOS①:6WIND VSR 3.4.10
ゲストOS②:Cisco CSR1000v 3.13.2
ゲストOS③:VyOS 1.4-rolling-202104111334
ゲストOS④:Cisco IOS-XRv 4.3.2
6WIND VSR以外のゲストOS(ソフトウェアルータ)の設定は既に完了している状態。


ざっくりとした要件
以下の内容で構成を組む。4台全てをVirtualboxにてデプロイする。Virtualboxのネットワークアダプタの設定は内部ネットワークを適用し、各ゲストOSを仮想的に接続する。構成図の中の赤い文字列は、Virtualboxのネットワークアダプタのタブ内で設定したネットワークアダプタ名である。
・VSRはISPのエッジルータとして使用。
・Cisco CSR1000vとVyOSは顧客環境のエッジルータとして使用
・Cisco IOS-XRvはISPのコアルータとして使用
・VSRとCisco CSR1000v、VSRとVyOSとの間でeBGPでピア、VSRとCisco IOS-XRvとの間でiBGPピアを張る。
※図をクリックすると拡大表示します


6WIND VSRの設定
これよりVSRのOSPFとBGPの設定に着手する。
前回は評価版ライセンスの適用の為にインターネット環境と接続する必要が有った為、1つのインターフェースとデフォルトルートの設定のみ投入した。
今回はOSPFやBGPの設定に入る前に、他に必要なインターフェースやスタティックルートの設定追加を行う。

インターフェースの設定
前回と同様に、外部と通信する為に以下の3つのインターフェースをそれぞれ紐付けし、IPアドレスをアサインする。
・enp0sX:VSRのベースとなっているOS(Linux)のインターフェース
・pci-bXX:VSRのネットワークポート
・ethX:VSRが外部と通信する為のポート(任意で名称の設定可)

公式ドキュメントによると、紐付けが必要なのは物理インターフェースのみでループバックインターフェースやVLANインターフェースは紐付けが不要なようである。
設定を終えたらcommitコマンドを打ち、設定内容をシステムに反映させる。
ちなみに「..」を打つと一つ下の階層に移動する。

jpmtkvmrt99> edit running 
jpmtkvmrt99 running config# 
jpmtkvmrt99 running config# vrf main
jpmtkvmrt99 running vrf main# interface physical eth1
jpmtkvmrt99 running physical eth1# port pci-b0s8
jpmtkvmrt99 running physical eth1# ipv4 address 192.168.1.1/30
jpmtkvmrt99 running physical eth1#
jpmtkvmrt99 running physical eth1# ..
jpmtkvmrt99 running interface# ..
jpmtkvmrt99 running vrf main# interface physical eth2
jpmtkvmrt99 running physical eth2# port pci-b0s9
jpmtkvmrt99 running physical eth2# ipv4 address 192.168.1.5/30
jpmtkvmrt99 running physical eth2#
jpmtkvmrt99 running physical eth2# ..
jpmtkvmrt99 running interface# ..
jpmtkvmrt99 running vrf main# 
jpmtkvmrt99 running vrf main# interface loopback lo0
jpmtkvmrt99 running loopback lo0# ipv4 address 10.1.1.99/32
jpmtkvmrt99 running loopback lo0# ..
jpmtkvmrt99 running interface#
jpmtkvmrt99 running interface# commit
Configuration committed.
jpmtkvmrt99 running interface# ..
jpmtkvmrt99 running vrf main# 


外部向けルーティング(Static Route)の設定
次に、他のソフトウェアルータへの通信の到達性確保の為、スタティックルートの設定を投入する。
Next Hopが192.168.1.6のスタティックルートは、従系の経路につきディスタンス値を150に設定した。
設定を終えたらcommitコマンドを打ち、設定内容をシステムに反映させる。

jpmtkvmrt99 running vrf main#  / vrf main routing static
jpmtkvmrt99 running static# ipv4-route 192.168.101.0/24 next-hop 192.168.1.2
jpmtkvmrt99 running static# ipv4-route 192.168.111.0/24 next-hop 192.168.1.2
jpmtkvmrt99 running static# ipv4-route 192.168.121.0/24 next-hop 192.168.1.2
jpmtkvmrt99 running static# ipv4-route 192.168.102.0/24 next-hop 192.168.1.6 distance 150
jpmtkvmrt99 running static# ipv4-route 192.168.112.0/24 next-hop 192.168.1.6 distance 150
jpmtkvmrt99 running static# ipv4-route 192.168.122.0/24 next-hop 192.168.1.6 distance 150
jpmtkvmrt99 running static#
jpmtkvmrt99 running static# commit
Configuration committed.
jpmtkvmrt99 running static#


ISP内部向けルーティング(OSPF)の設定
次に、ISP内部のルーティング設定としてOSPFの設定を投入する。
ISP内部のネットワークを外部にアドバタイズする為のPrefix Listおよびルートマップも設定する。
設定を終えたらcommitコマンドを打ち、設定内容をシステムに反映させる。ついでにcopy running startupというどこかで見たようなコマンドを打ち、設定内容を保存する。
ちなみに、8行目のseq 1の頭に有る「!」は自動で出力される為、当記事の内容をコピペで設定投入する際は「!」は不要である。

jpmtkvmrt99 running static# / vrf main routing ospf
jpmtkvmrt99 running ospf# router-id 10.1.1.99
jpmtkvmrt99 running ospf# network 192.168.3.0/24 area 0.0.0.0
jpmtkvmrt99 running ospf# log-adjacency-changes detail
jpmtkvmrt99 running ospf# 
jpmtkvmrt99 running ospf# / routing
jpmtkvmrt99 running routing# ipv4-prefix-list BGP-ENDPOINTS
jpmtkvmrt99 running ipv4-prefix-list BGP-ENDPOINTS#! seq 1 address 10.1.1.0/24 policy permit le 32
jpmtkvmrt99 running ipv4-prefix-list BGP-ENDPOINTS# seq 2 address 192.168.30.0/24 policy permit le 32
jpmtkvmrt99 running ipv4-prefix-list BGP-ENDPOINTS# seq 3 address 192.168.3.0/24 policy permit le 32
jpmtkvmrt99 running ipv4-prefix-list BGP-ENDPOINTS# ..
jpmtkvmrt99 running routing# route-map FILTER-OSPF-ROUTE
jpmtkvmrt99 running route-map FILTER-OSPF-ROUTE#! seq 1 
jpmtkvmrt99 running seq 1#! policy permit 
jpmtkvmrt99 running seq 1# match ip address prefix-list BGP-ENDPOINTS
jpmtkvmrt99 running seq 1# / vrf main routing ospf
jpmtkvmrt99 running ospf# redistribute connected route-map FILTER-OSPF-ROUTE
jpmtkvmrt99 running ospf#
jpmtkvmrt99 running ospf# commit
Configuration committed.
jpmtkvmrt99 running ospf# 
jpmtkvmrt99 running ospf# copy running startup 
Overwrite startup configuration? [y/N] y
jpmtkvmrt99 running ospf# 


iBGPの設定
次に、iBGPの設定を投入する。
先程設定したルートマップといい、BGPの設定もコマンド1つ1つを見るとCisco IOSを意識したものになっている事が分かる。
階層の移動は面倒だが、Cisco IOSの利用者は難無く6WIND VSRのコマンドを打てるのではないかと思う。
soft-reconfiguration-inbound trueの設定は、指定したBGPピアから受信した、フィルタリング前のオリジナルの経路情報を保持する為の設定である。
オプションをtrueにする事で、BGPピアに対し経路情報の再送信を要求する事が可能になる。
neighbor-descriptionの設定は、iBGPピアを張っている相手を記載した。
設定を終えたらcommitコマンドを打ち、設定内容をシステムに反映させる。

jpmtkvmrt99 running ospf# / vrf main routing bgp
jpmtkvmrt99 running bgp#! as 65535
jpmtkvmrt99 running bgp# router-id 10.1.1.99
jpmtkvmrt99 running bgp# address-family ipv4-unicast redistribute connected
jpmtkvmrt99 running bgp# neighbor 10.1.1.98
jpmtkvmrt99 running neighbor 10.1.1.98#! remote-as 65535
jpmtkvmrt99 running neighbor 10.1.1.98# neighbor-description mtkVMRT98_Lo0
jpmtkvmrt99 running neighbor 10.1.1.98# address-family ipv4-unicast soft-reconfiguration-inbound true
jpmtkvmrt99 running neighbor 10.1.1.98#
jpmtkvmrt99 running neighbor 10.1.1.98# commit
Configuration committed.
jpmtkvmrt99 running neighbor 10.1.1.98# ..
jpmtkvmrt99 running bgp# 


eBGPの設定
次に、eBGPの設定を投入する。
上記と同様に、ピアの設定とフィルタリング前のオリジナルの経路情報を保持する為の設定とdescriptionの設定に留めている。
BGPの設定を一通り終えたらcommitコマンドを打ち、設定内容をシステムに反映させる。ついでにcopy running startupコマンドを打ち設定内容を保存。

jpmtkvmrt99 running bgp# / vrf main routing bgp
jpmtkvmrt99 running bgp# neighbor 192.168.1.2
jpmtkvmrt99 running neighbor 192.168.1.2#! remote-as 65501
jpmtkvmrt99 running neighbor 192.168.1.2# neighbor-description Customer-Transit-Route#1
jpmtkvmrt99 running neighbor 192.168.1.2# address-family ipv4-unicast soft-reconfiguration-inbound true
jpmtkvmrt99 running neighbor 192.168.1.2# ..
jpmtkvmrt99 running bgp# 
jpmtkvmrt99 running bgp# neighbor 192.168.1.6
jpmtkvmrt99 running neighbor 192.168.1.6#! remote-as 65502
jpmtkvmrt99 running neighbor 192.168.1.6# neighbor-description Customer-Transit-Route#3
jpmtkvmrt99 running neighbor 192.168.1.6# address-family ipv4-unicast soft-reconfiguration-inbound true
jpmtkvmrt99 running neighbor 192.168.1.6# 
jpmtkvmrt99 running neighbor 192.168.1.6# commit
Configuration committed.
jpmtkvmrt99 running neighbor 192.168.1.6# copy running startup 
Overwrite startup configuration? [y/N] y
jpmtkvmrt99 running neighbor 192.168.1.6# ..
jpmtkvmrt99 running bgp# 


ルートフィルタリングの設定
bogonな経路情報をルーティングテーブルに載せない為の設定を行う。
ただし、Loopbackインターフェースや物理インターフェースにアサインしているIPアドレスやルータIDとして使用しているIPアドレスは、フィルタリングの対象から除外する。
設定を終えたらcommitコマンドを打ち設定内容をシステムに反映させ、copy running startupコマンドを打ち設定内容を保存。

jpmtkvmrt99 running bgp# / routing ipv4-prefix-list Filter-Bogon-Routes
jpmtkvmrt99 running ipv4-prefix-list Filter-Bogon-Routes#! seq 1 address 127.0.0.0/8 policy deny le 32
jpmtkvmrt99 running ipv4-prefix-list Filter-Bogon-Routes# seq 2 address 169.254.0.0/16 policy deny le 32
jpmtkvmrt99 running ipv4-prefix-list Filter-Bogon-Routes# seq 3 address 172.16.0.0/12 policy deny le 32
jpmtkvmrt99 running ipv4-prefix-list Filter-Bogon-Routes# seq 4 address 224.0.0.0/3 policy deny le 32
jpmtkvmrt99 running ipv4-prefix-list Filter-Bogon-Routes# seq 5 address 0.0.0.0/0 policy permit le 32
jpmtkvmrt99 running ipv4-prefix-list Filter-Bogon-Routes# 
jpmtkvmrt99 running ipv4-prefix-list Filter-Bogon-Routes# / vrf main routing bgp
jpmtkvmrt99 running bgp# neighbor 192.168.1.2 address-family ipv4-unicast prefix-list in prefix-list-name Filter-Bogon-R outes
jpmtkvmrt99 running bgp# neighbor 192.168.1.6 address-family ipv4-unicast prefix-list in prefix-list-name Filter-Bogon-R outes
jpmtkvmrt99 running bgp# 
jpmtkvmrt99 running bgp# commit
Configuration committed.
jpmtkvmrt99 running bgp# 
jpmtkvmrt99 running bgp# copy running startup 
Overwrite startup configuration? [y/N] y
jpmtkvmrt99 running bgp# 
jpmtkvmrt99 running bgp# exit
jpmtkvmrt99> 


設定後の確認
設定が一通り完了した為、これよりステータスの確認に入る。
以下は、前回と今回で作成したインターフェースの情報である。
IPv4のアドレスは手動で設定したものだが、IPv6のアドレスは自動でアサインされたものである。

jpmtkvmrt99> show interface
Name State          IP Addresses
---- -----          ------------
lo   UNKNOWN        127.0.0.1/8
                                   ::1/128
eth0 UP             192.168.3.254/24
                                   fe80::a00:27ff:fe93:9d30/64
eth1 UP             192.168.1.1/30
                                   fe80::a00:27ff:fe6c:ff7d/64
eth2 UP             192.168.1.5/30
                                   fe80::a00:27ff:feb8:8903/64
lo0  UNKNOWN        10.1.1.99/32
                                   fe80::44e:73ff:fe7e:a258/64
jpmtkvmrt99> 

以下は、VSRのルーティングテーブルの内容。
出力フォーマットはCisco IOSとほぼ同じである。
ISP内部のネットワークだけでなく、Customer環境のネットワークも学習出来ている事が分かる。

jpmtkvmrt99> show ipv4-routes 
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, A - Babel, D - SHARP, F - PBR, f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

S>* 0.0.0.0/0 [1/0] via 192.168.3.1, eth0, weight 1, 05:10:13
O>* 10.1.1.98/32 [110/20] via 192.168.3.253, eth0, weight 1, 00:10:53
C>* 10.1.1.99/32 is directly connected, lo0, 05:03:24
B>* 100.1.1.1/32 [20/0] via 192.168.1.2, eth1, weight 1, 00:00:33
B>* 100.1.1.2/32 [20/0] via 192.168.1.6, eth2, weight 1, 00:00:33
C>* 192.168.1.0/30 is directly connected, eth1, 05:10:16
C>* 192.168.1.4/30 is directly connected, eth2, 05:10:16
O   192.168.3.0/24 [110/10] is directly connected, eth0, weight 1, 00:11:04
C>* 192.168.3.0/24 is directly connected, eth0, 05:10:13
B   192.168.30.0/24 [200/0] via 10.1.1.98 (recursive), weight 1, 00:08:32
                            via 192.168.3.253, eth0, weight 1, 00:08:32
O>* 192.168.30.0/24 [110/20] via 192.168.3.253, eth0, weight 1, 00:10:53
B   192.168.101.0/24 [20/0] via 192.168.1.2, eth1, weight 1, 00:00:33
S>* 192.168.101.0/24 [1/0] via 192.168.1.2, eth1, weight 1, 04:43:45
B   192.168.102.0/24 [150/0] via 192.168.1.6, eth2, weight 1, 00:00:33
S>* 192.168.102.0/24 [1/0] via 192.168.1.6, eth2, weight 1, 04:43:45
S>* 192.168.111.0/24 [1/0] via 192.168.1.2, eth1, weight 1, 04:43:45
S>* 192.168.112.0/24 [150/0] via 192.168.1.6, eth2, weight 1, 04:43:45
S>* 192.168.121.0/24 [1/0] via 192.168.1.2, eth1, weight 1, 04:43:45
S>* 192.168.122.0/24 [150/0] via 192.168.1.6, eth2, weight 1, 04:43:45
jpmtkvmrt99> 

以下は、VSRが認識しているOSPFネイバの一覧である。
ISP内部にて隣接するルータとの間でOSPFネイバの関係を確立し、OSPFネイバ関係の状態はFULLとなっている事が分かる。
ネイバ側がDRになっている事が分かる。

jpmtkvmrt99> show ospf neighbor 

Neighbor ID    Pri State     Dead Time Address         Interface            RXmtL RqstL DBsmL
10.1.1.98        1 Full/DR     31.344s 192.168.3.253   eth0:192.168.3.254       0     0     0

jpmtkvmrt99> 

以下は,、VSRが持つOSPFのリンクステートデータベースの情報である。
LSAタイプ1(Router Link States)、LSAタイプ2(Net Link States)、LSAタイプ5(AS External Link States)の要約情報が出力されている。

jpmtkvmrt99> show ospf database 

       OSPF Router with ID (10.1.1.99)

                Router Link States (Area 0.0.0.0)

Link ID         ADV Router      Age  Seq#       CkSum  Link count
10.1.1.98      10.1.1.98        717 0x8000000c 0x6133 1
10.1.1.99      10.1.1.99        716 0x80000004 0x127e 1

                Net Link States (Area 0.0.0.0)

Link ID         ADV Router      Age  Seq#       CkSum
192.168.3.253  10.1.1.98        717 0x80000005 0x2976

                AS External Link States

Link ID         ADV Router      Age  Seq#       CkSum  Route
10.1.1.98      10.1.1.98        472 0x80000005 0x7a63 E2 10.1.1.98/32 [0x0]
10.1.1.99      10.1.1.99        721 0x80000001 0x726d E2 10.1.1.99/32 [0x0]
192.168.30.0   10.1.1.98        347 0x80000005 0xeed5 E2 192.168.30.0/24 [0x0]

jpmtkvmrt99> 

以下は、VSRのBGPテーブルの情報である。
Customer環境内へのベストパス(iBGP)とISP内へのベストパス(eBGP)が出力されている事が分かる。

jpmtkvmrt99> show bgp ipv4
BGP table version is 9, local router ID is 10.1.1.99, vrf id 0
Default local pref 100, local AS 65535
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

   Network          Next Hop            Metric LocPrf Weight Path
  i10.1.1.98/32     10.1.1.98                0    100      0 i
*> 10.1.1.99/32     0.0.0.0                  0         32768 ?
*> 100.1.1.1/32     192.168.1.2              0             0 65501 i
*> 100.1.1.2/32     192.168.1.6              0             0 65502 i
*  192.168.1.0/30   192.168.1.2              0             0 65501 ?
*>                  0.0.0.0                  0         32768 ?
*> 192.168.1.4/30   0.0.0.0                  0         32768 ?
* i192.168.3.0/24   10.1.1.98                0    100      0 i
*>                  0.0.0.0                  0         32768 ?
*>i192.168.30.0/24  10.1.1.98                0    100      0 i
*> 192.168.101.0/24 192.168.1.2              0             0 65501 i
*> 192.168.102.0/24 192.168.1.6              0             0 65502 i

Displayed  10 routes and 12 total paths
jpmtkvmrt99> 

以下は、VSRが持つBGPピアに関するサマリー情報である。
iBGPによってBGPピアから3本の経路情報、eBGPによってBGPピアから5本の経路情報を受け取っている事が分かる。また、iBGPピアに対し8本の経路情報、eBGPピアに対し上記で設定したポリシーを介して経路情報を渡している事が分かる。
この辺もCisco IOSのような出力フォーマットになっており、Cisco IOSに慣れた方々でも内容の把握に決して難儀しないと思われる。

jpmtkvmrt99> show bgp summary 

IPv4 Unicast Summary (VRF default):
BGP router identifier 10.1.1.99, local AS number 65535 vrf-id 0
BGP table version 9
RIB entries 19, using 3496 bytes of memory
Peers 3, using 249 KiB of memory

Neighbor        V         AS    LocalAS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt Desc
10.1.1.98       4      65535      65535        62        66        0    0    0 00:10:25            3        8 mtkVMRT98_Lo0
192.168.1.2     4      65501      65535        48        42        0    0    0 00:07:19            3 (Policy) Customer-Transit-Route#1
192.168.1.6     4      65502      65535        38        43        0    0    0 00:07:19            2 (Policy) Customer-Transit-Route#2

Total number of neighbors 3
jpmtkvmrt99> 

show bgp neighborをBGPピア1台に対し打ってみた。
show bgp summaryコマンドの内容を詳細に出力したものとなっている。

jpmtkvmrt99> show bgp neighbor 192.168.1.2

BGP neighbor is 192.168.1.6, remote AS 65502, local AS 65535, external link
 Description: Customer-Transit-Route#2
Hostname: csedrt02
  BGP version 4, remote router ID 100.1.1.1, local router ID 10.1.1.99
  BGP state = Established, up for 00:07:59
  Last read 00:00:11, Last write 00:00:01
  Hold time is 30, keepalive interval is 10 seconds
  Neighbor capabilities:
    4 Byte AS: advertised and received
    Extended Message: advertised
    AddPath:
      IPv4 Unicast: RX advertised IPv4 Unicast and received
    Route refresh: advertised and received(old & new)
    Enhanced Route Refresh: advertised
    Address Family IPv4 Unicast: advertised and received
    Hostname Capability: advertised (name: jpmtkvmrt99,domain name: n/a) received (name: csedrt02,domain name: n/a)
    Graceful Restart Capability: advertised and received
      Remote Restart timer is 120 seconds
      Address families by peer:
        none
  Graceful restart information:
    End-of-RIB send: IPv4 Unicast
    End-of-RIB received: IPv4 Unicast
    Local GR Mode: Helper*
    Remote GR Mode: Helper
    R bit: False
    Timers:
      Configured Restart Time(sec): 120
      Received Restart Time(sec): 120
    IPv4 Unicast:
      F bit: False
      End-of-RIB sent: Yes
      End-of-RIB sent after update: Yes
      End-of-RIB received: Yes
      Timers:
        Configured Stale Path Time(sec): 360
  Message statistics:
    Inq depth is 0
    Outq depth is 0
                         Sent       Rcvd
    Opens:                  1          1
    Notifications:          0          0
    Updates:                1          2
    Keepalives:            51         44
    Route Refresh:          0          0
    Capability:             0          0
    Total:                 53         47
  Minimum time between advertisement runs is 0 seconds

 For address family: IPv4 Unicast
  Update group 2, subgroup 2
  Packet Queue length 0
  Inbound soft reconfiguration allowed
  Community attribute sent to this neighbor(all)
  Inbound path policy configured
  Incoming update prefix filter list is *Filter-Bogon-Routes
  Outbound updates discarded due to missing policy
  2 accepted prefixes

  Connections established 1; dropped 0
  Last reset 00:09:01,  Waiting for peer OPEN
Local host: 192.168.1.5, Local port: 49194
Foreign host: 192.168.1.6, Foreign port: 179
Nexthop: 192.168.1.5
Nexthop global: fe80::a00:27ff:feb8:8903
Nexthop local: fe80::a00:27ff:feb8:8903
BGP connection: shared network
BGP Connect Retry Timer in Seconds: 120
Estimated round trip time: 223 ms
Read thread: on  Write thread: on  FD used: 29

jpmtkvmrt99> 

以下は、当記事の設定を完了した段階のコンフィグの内容である。
コンフィグのフォーマットはNokia(Alcatel-Lucent)の7750SRに何となく似ている。

jpmtkvmrt99> show config
vrf main
    routing
        static
            ipv4-route 0.0.0.0/0
                next-hop 192.168.3.1
                ..
            ipv4-route 192.168.101.0/24
                next-hop 192.168.1.2
                ..
            ipv4-route 192.168.111.0/24
                next-hop 192.168.1.2
                ..
            ipv4-route 192.168.121.0/24
                next-hop 192.168.1.2
                ..
            ipv4-route 192.168.102.0/24
                next-hop 192.168.1.6 distance 150
                ..
            ipv4-route 192.168.112.0/24
                next-hop 192.168.1.6 distance 150
                ..
            ipv4-route 192.168.122.0/24
                next-hop 192.168.1.6 distance 150
                ..
            ..
        ospf
            enabled true
            router-id 10.1.1.99
            abr-type cisco
            write-multiplier 20
            auto-cost 100000
            log-adjacency-changes detail
            network 192.168.3.0/24 area 0.0.0.0
            refresh-timer 10
            redistribute connected route-map FILTER-OSPF-ROUTE
            ..
        bgp
            enabled true
            as 65535
            always-compare-med false
            bestpath
                as-path
                    confederation false
                    ignore false
                    ..
                compare-routerid false
                ..
            client-to-client
                reflection true
                ..
            deterministic-med false
            ebgp-connected-route-check true
            fast-external-failover true
            graceful-shutdown false
            listen
                limit 100
                ..
            log-neighbor-changes false
            network-import-check true
            route-reflector-allow-outbound-policy false
            reject-as-sets false
            packet-rw-quantum
                read 10
                write 64
                ..
            router-id 10.1.1.99
            ebgp-requires-policy true
            address-family
                ipv4-unicast
                    enabled true
                    redistribute connected
                    maximum-path
                        ebgp 16
                        ibgp 16
                        equal-cluster-length false
                        ..
                    bgp-distance
                        external-routes 20
                        internal-routes 200
                        local-routes 200
                        ..
                    ..
                ..
            neighbor 10.1.1.98
                remote-as 65535
                capability-negotiate true
                enforce-first-as false
                enforce-multihop false
                neighbor-description mtkVMRT98_Lo0
                override-capability false
                passive false
                solo false
                strict-capability-match false
                sender-as-path-loop-detection false
                address-family
                    ipv4-unicast
                        enabled true
                        addpath
                            tx-all-paths false
                            tx-best-path-per-AS false
                            ..
                        as-override false
                        send-community all
                        route-reflector-client false
                        route-server-client false
                        soft-reconfiguration-inbound true
                        ..
                    ..
                ..
            neighbor 192.168.1.2
                remote-as 65501
                capability-negotiate true
                enforce-first-as false
                enforce-multihop false
                neighbor-description Customer-Transit-Route#1
                override-capability false
                passive false
                solo false
                strict-capability-match false
                sender-as-path-loop-detection false
                address-family
                    ipv4-unicast
                        enabled true
                        addpath
                            tx-all-paths false
                            tx-best-path-per-AS false
                            ..
                        as-override false
                        send-community all
                        prefix-list in prefix-list-name Filter-Bogon-Routes
                        route-reflector-client false
                        route-server-client false
                        soft-reconfiguration-inbound true
                        ..
                    ..
                ..
            neighbor 192.168.1.6
                remote-as 65502
                capability-negotiate true
                enforce-first-as false
                enforce-multihop false
                neighbor-description Customer-Transit-Route#2
                override-capability false
                passive false
                solo false
                strict-capability-match false
                sender-as-path-loop-detection false
                address-family
                    ipv4-unicast
                        enabled true
                        addpath
                            tx-all-paths false
                            tx-best-path-per-AS false
                            ..
                        as-override false
                        send-community all
                        prefix-list in prefix-list-name Filter-Bogon-Routes
                        route-reflector-client false
                        route-server-client false
                        soft-reconfiguration-inbound true
                        ..
                    ..
                ..
            ..
        ..
    interface
        physical eth0
            ipv4
                address 192.168.3.254/24
                enabled true
                ..
            enabled true
            port pci-b0s3
            ipv6
                enabled true
                ..
            ..
        physical eth1
            ipv4
                address 192.168.1.1/30
                enabled true
                ..
            description Transit_Route#1
            enabled true
            port pci-b0s8
            ipv6
                enabled true
                ..
            ..
        physical eth2
            ipv4
                address 192.168.1.5/30
                enabled true
                ..
            description Transit_Route#2
            enabled true
            port pci-b0s9
            ipv6
                enabled true
                ..
            ..
        loopback lo0
            ipv4
                address 10.1.1.99/32
                enabled true
                ..
            enabled true
            ipv6
                enabled true
                ..
            ..
        ..
    dns
        server 8.8.8.8
        ..
    ntp
        enabled true
        time-sources
            server 210.173.160.27
                version 4
                association-type SERVER
                iburst false
                prefer true
                ..
            ..
        ..
    ssh-server
        enabled true
        port 22
        permit-root-login yes
        ..
    ..
system
    hostname jpmtkvmrt99
    cp-mask default
    network-stack
        bridge
            call-ipv4-filtering false
            call-ipv6-filtering false
            ..
        icmp
            ignore-icmp-echo-broadcast false
            rate-limit-icmp 1000
            rate-mask-icmp destination-unreachable source-quench time-exceeded parameter-problem
            ..
        ipv4
            forwarding true
            send-redirects true
            accept-redirects false
            accept-source-route false
            arp-announce any
            arp-filter false
            arp-ignore any
            arp-proxy false
            log-invalid-addresses false
            ..
        ipv6
            forwarding true
            autoconfiguration true
            accept-router-advert never
            accept-redirects false
            accept-source-route false
            router-solicitations -1
            use-temporary-addresses never
            ..
        ..
    timezone Asia/Tokyo
    license
        enabled true
        online
            serial 6WIND-EVALS-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            vrf main
            export-analytics true
            use-ipv6-dns false
            ..
        snmp false
        ..
    ..
routing
    logging
        enabled true
        level error
        ..
    ipv4-prefix-list BGP-ENDPOINTS
        seq 1 address 10.1.1.0/24 policy permit le 32
        seq 2 address 192.168.30.0/24 policy permit le 32
        seq 3 address 192.168.3.0/24 policy permit le 32
        ..
    ipv4-prefix-list Filter-Bogon-Routes
        seq 1 address 127.0.0.0/8 policy deny le 32
        seq 2 address 169.254.0.0/16 policy deny le 32
        seq 3 address 172.16.0.0/12 policy deny le 32
        seq 4 address 224.0.0.0/3 policy deny le 32
        seq 5 address 0.0.0.0/0 policy permit le 32
        ..
    route-map FILTER-OSPF-ROUTE
        seq 1
            policy permit
            match
                ip
                    address
                        prefix-list BGP-ENDPOINTS
                        ..
                    ..
                ..
            ..
        ..
    bfd
        detection-multiplier 3
        desired-transmission-interval 300000
        required-receive-interval 300000
        ..
    ..
jpmtkvmrt99>


今回はここまで。
Virtualbox内にVSRを含め4つのソフトウェアルータでBGPのネットワークを構成した。
BGPピアの相手のうちの2台がCiscoのソフトウェアルータでホスト機に負荷がかかった為か、VSRの動作はやや重ためになってしまったが、想定どおりの出力結果となった。
今回はほんのお触り程度の設定しか入れてないものの、Cisco IOS XRvで当記事の内容と同じような事をやらせた場合、6WIND VSRはホスト機への要求スペックはCisco IOS XRvよりやや低めで済んだ。サービスプロバイダにおける仮想エッジルータとしてCisco IOS XRvやJuniper vMXが定番かもしれないが、6WIND VSRが新たな選択肢に加わって良いかもしれない。
評価版ライセンスの期限はまだ20日以上も先なので、IPsecやもう少し掘り下げた内容の設定などを試してみたい。

ところで、前回はNokia(旧Alcatel-Lucent)の7750SRというルータのようなCLIという認識を持ったが、各設定コマンドのオプションをよくよく見てみるとCisco IOSを意識しているように感じられる。欧州だけでなくアメリカやアジアでの導入実績を増やしたいという意図なのだろうか。


参照サイトなど
6WIND公式サイト
https://www.6wind.com/ 6WIND
https://www.6wind.com/vrouter-vsr-solutions/ 6WIND VSR
https://doc.6wind.com/new/vsr-3/3.4/vsr-guide/user-guide/index.html 6WIND VSRドキュメント

過去の関連記事
https://debslink.hatenadiary.jp/entry/20230329/1680017202 6WIND VSRを試用してみた
https://debslink.hatenadiary.jp/entry/20230423/1682258109 6WIND VSRのアーキテクチャおよびカスタマイズ
https://debslink.hatenadiary.jp/entry/20230427/1682597891 6WIND VSR評価版レビュー
https://debslink.hatenadiary.jp/entry/20201217/1608182777 VirtualboxのゲストOS間を仮想ケーブルで接続する