前回は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間を仮想ケーブルで接続する