SR-MPLS+EVPNのL2VPNをfreeRouterでやってみた

# モチベーション
- オープンソースのソフトウェアを利用してSR-MPLSとEVPNをやってみたい
- パケットキャプチャしてSR-MPLS+EVPN利用時のMPLSラベルやMP-BGPのやりとりをみてみたい

調べた中で、オープンソースの[freeRouer](http://www.freertr.org/)を使えばSR-MPLSとEVPNができそうだったので、[EVE-NG](https://www.eve-ng.net/)上でやってみました。

# 環境準備
## EVE-NGのインストール
こちらのページがわかりやすく説明されています！

https://qiita.com/watyanabe164/items/dd6278daf8c30566fca6

## EVE-NGでfreeRouterを使えるようにする
1. freeRouter のダウンロード
[freeRouerのページ](http://www.freertr.org/)からqcow2形式のイメージファイルをダウンロード
1. EVE-NGにfreeRouterイメージを取り込み
    1. イメージファイルをSCP等でEVE-NGのサーバにアップロード
    1. EVE-NGにSSHログイン
    1. 今回EVE-NG上でLinuxサーバイメージで利用するために、以下のディレクトリを作成
        ```
        mkdir /opt/unetlab/addons/qemu/linux-freertr/
        ```
    1. 上記ディレクトリにfreeRouterイメージを移動させて、ファイル名を「rtr.qcow2」から「virtioa.qcow2」に変更
    1. EVE-NGで利用できるように以下のコマンドを実施する
        ```
        /opt/unetlab/wrappers/unl_wrapper -a fixpermissions
        ```
これでfreeRouterイメージの追加は完了です。

## EVE-NG上でノード追加
1. ブラウザからEVE-NGにログインしノードを以下の設定で追加する
    - 「Template」 ： 「Linux」
    - 「Image」 ： 「linux-freertr」
    - 「Ethernets」 ：「4」 (初期値の1から変更、利用したいポート数に合わせて変更)
    - 「Console」 ：「telnet」
    - CPUやRAM、アイコンも必要に応じ変更
        - 私はCPU：1、RAM：512MB に変更しました
    ![node-add.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043279/85f569b0-5a15-e34b-1212-ddd2badd03c4.png)
1. EVE-NG上で以下の画像のようにfreeRouterとクライアントになるVPCを設定
    - SR-MPLSの終端になるPEルータは2台：FreeRTR-PE-01 / FreeRTR-PE-02
    - SR-MPLSのラベルを中継するPルータは1台：FreeRTR-P-01
    - クライアントになるVPCを4台設置
        - この後のfreeRouterの設定で赤枠と青枠2台ずつL2VPNでそれぞれ別のL2NWになるようにする
![nw-set.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043279/407243d0-93a4-e20c-dc6d-952e5e1acd63.png)


# コンフィグ
EVE-NG上のインターフェース番号とFreeRouter上のインターフェース番号が異なるので注意が必要になります。
EVE-NG上の「e0」が、freeRouter上のコンフィグでは「ethernet1」になります。
freeRouterのCLI設定はCiscoのIOSライクな設定になります。

今回実施した最終的なコンフィグを記載します。
<details><summary>FreeRTR-PE-01</summary>
<div>

```:FreeRTR-PE-01
hostname FreeRTR-PE-01
buggy
!
!
bridge 1
 description BRIDGE_EVPN_L2VPN_01
 rd 1:1
 rt-import 1:1
 rt-export 1:1
 mac-learn
 exit
!
bridge 2
 description BRIDGE_EVPN_L2VPN_02
 rd 1:2
 rt-import 1:2
 rt-export 1:2
 mac-learn
 exit
!
vrf definition host
 exit
!
vrf definition vrf_default
 description VRF_DEFAULT
 rd 1:1
 exit
!
vrf definition vrf_l2vpn01
 description VRF_EVPN_L2VPN_01
 rd 1:1
 exit
!
vrf definition vrf_l2vpn02
 description VRF_EVPN_L2VPN_02
 rd 1:2
 exit
!
router ospf4 1
 vrf vrf_default
 router-id 10.0.0.1
 traffeng-id 0.0.0.0
 segrout 10 base 100
 area 0 enable
 area 0 segrout
 redistribute connected
 exit
!
interface loopback1
 vrf forwarding vrf_default
 ipv4 address 10.0.0.1 255.255.255.255
 router ospf4 1 enable
 router ospf4 1 area 0
 router ospf4 1 segrout index 1
 router ospf4 1 segrout node
 no shutdown
 no log-link-change
 exit
!
interface bvi1
 no shutdown
 no log-link-change
 exit
!
interface bvi2
 no shutdown
 no log-link-change
 exit
!
interface ethernet1
 description TO_FreeRTR-P-01
 vrf forwarding vrf_default
 ipv4 address 10.10.1.2 255.255.255.252
 mpls enable
 router ospf4 1 enable
 router ospf4 1 area 0
 no shutdown
 no log-link-change
 exit
!
interface ethernet2
 description TO_VPC1-1(L2VPN_01)
 bridge-group 1
 no shutdown
 no log-link-change
 exit
!
interface ethernet20001
 no shutdown
 no log-link-change
 exit
!
interface ethernet3
 description TO_VPC2-1(L2VPN_02)
 bridge-group 2
 no shutdown
 no log-link-change
 exit
!
interface ethernet4
 no shutdown
 no log-link-change
 exit
!
router bgp4 65001
 vrf vrf_default
 local-as 65001
 router-id 10.0.0.1
 address-family evpn
 neighbor 10.0.0.2 remote-as 65001
 neighbor 10.0.0.2 description FreeRTR-PE-02
 neighbor 10.0.0.2 local-as 65001
 neighbor 10.0.0.2 address-family evpn
 neighbor 10.0.0.2 distance 200
 neighbor 10.0.0.2 update-source loopback1
 neighbor 10.0.0.2 pmsitun
 neighbor 10.0.0.2 segrout
 neighbor 10.0.0.2 send-community standard extended
 afi-evpn 5001 bridge-group 1
 afi-evpn 5001 bmac 5001.0000.0001
 afi-evpn 5001 encapsulation cmac
 afi-evpn 5001 update-source loopback1
 afi-evpn 5002 bridge-group 2
 afi-evpn 5002 bmac 5002.0000.0001
 afi-evpn 5002 encapsulation cmac
 afi-evpn 5002 update-source loopback1
 exit
!
line tty1
 no exec authorization
 no login authentication
 exit
!
!
!
!
!
end
```
</div></details>
<details><summary>FreeRTR-PE-02</summary>
<div>

```:FreeRTR-PE-02
hostname FreeRTR-PE-02
buggy
!
!
bridge 1
 description BRIDGE_EVPN_L2VPN_01
 rd 1:1
 rt-import 1:1
 rt-export 1:1
 mac-learn
 exit
!
bridge 2
 description BRIDGE_EVPN_L2VPN_02
 rd 1:2
 rt-import 1:2
 rt-export 1:2
 mac-learn
 exit
!
vrf definition host
 exit
!
vrf definition vrf_default
 description VRF_DEFAULT
 rd 1:1
 exit
!
vrf definition vrf_l2vpn01
 description VRF_EVPN_L2VPN_01
 rd 1:1
 exit
!
vrf definition vrf_l2vpn02
 description VRF_EVPN_L2VPN_02
 rd 1:2
 exit
!
router ospf4 1
 vrf vrf_default
 router-id 10.0.0.2
 traffeng-id 0.0.0.0
 segrout 10 base 100
 area 0 enable
 area 0 segrout
 redistribute connected
 exit
!
interface loopback1
 vrf forwarding vrf_default
 ipv4 address 10.0.0.2 255.255.255.255
 router ospf4 1 enable
 router ospf4 1 area 0
 router ospf4 1 segrout index 2
 router ospf4 1 segrout node
 no shutdown
 no log-link-change
 exit
!
interface bvi1
 no shutdown
 no log-link-change
 exit
!
interface bvi2
 no shutdown
 no log-link-change
 exit
!
interface ethernet1
 description TO_FreeRTR-P-01
 vrf forwarding vrf_default
 ipv4 address 10.10.2.2 255.255.255.252
 mpls enable
 router ospf4 1 enable
 router ospf4 1 area 0
 no shutdown
 no log-link-change
 exit
!
interface ethernet2
 description TO_VPC1-2(L2VPN_01)
 bridge-group 1
 no shutdown
 no log-link-change
 exit
!
interface ethernet20001
 no shutdown
 no log-link-change
 exit
!
interface ethernet3
 description TO_VPC2-2(L2VPN_02)
 bridge-group 2
 no shutdown
 no log-link-change
 exit
!
interface ethernet4
 no shutdown
 no log-link-change
 exit
!
router bgp4 65001
 vrf vrf_default
 local-as 65001
 router-id 10.0.0.2
 address-family evpn
 neighbor 10.0.0.1 remote-as 65001
 neighbor 10.0.0.1 description FreeRTR-PE-01
 neighbor 10.0.0.1 local-as 65001
 neighbor 10.0.0.1 address-family evpn
 neighbor 10.0.0.1 distance 200
 neighbor 10.0.0.1 update-source loopback1
 neighbor 10.0.0.1 pmsitun
 neighbor 10.0.0.1 segrout
 neighbor 10.0.0.1 send-community standard extended
 afi-evpn 5001 bridge-group 1
 afi-evpn 5001 bmac 5001.0000.0002
 afi-evpn 5001 encapsulation cmac
 afi-evpn 5001 update-source loopback1
 afi-evpn 5002 bridge-group 2
 afi-evpn 5002 bmac 5002.0000.0002
 afi-evpn 5002 encapsulation cmac
 afi-evpn 5002 update-source loopback1
 exit
!
line tty1
 no exec authorization
 no login authentication
 exit
!
!
!
!
!
end
```
</div></details>
<details><summary>FreeRTR-P-01</summary>
<div>

```:FreeRTR-P-01
hostname FreeRTR-P-01
buggy
!
!
vrf definition host
 exit
!
vrf definition vrf_default
 description VRF_DEFAULT
 rd 1:1
 exit
!
router ospf4 1
 vrf vrf_default
 router-id 10.0.0.99
 traffeng-id 0.0.0.0
 segrout 10 base 100
 area 0 enable
 area 0 segrout
 redistribute connected
 exit
!
interface loopback1
 vrf forwarding vrf_default
 ipv4 address 10.0.0.99 255.255.255.255
 router ospf4 1 enable
 router ospf4 1 area 0
 router ospf4 1 segrout index 9
 router ospf4 1 segrout node
 no shutdown
 no log-link-change
 exit
!
interface ethernet1
 description TO_FreeRTR-PE-01
 vrf forwarding vrf_default
 ipv4 address 10.10.1.1 255.255.255.252
 mpls enable
 router ospf4 1 enable
 router ospf4 1 area 0
 no shutdown
 no log-link-change
 exit
!
interface ethernet2
 description TO_FreeRTR-PE-02
 vrf forwarding vrf_default
 ipv4 address 10.10.2.1 255.255.255.252
 mpls enable
 router ospf4 1 enable
 router ospf4 1 area 0
 no shutdown
 no log-link-change
 exit
!
interface ethernet20001
 no shutdown
 no log-link-change
 exit
!
interface ethernet3
 no shutdown
 no log-link-change
 exit
!
interface ethernet4
 no shutdown
 no log-link-change
 exit
!
line tty1
 no exec authorization
 no login authentication
 exit
!
!
!
!
!
end
```
</div></details>

# 設定内容(SR-MPLS+EVPN部分)
## SR-MPLS部分
今回はOSPFを利用してSR-MPLSの設定を行います。各ルータのNode SIDは以下の画像のとおりに設定。
![03_sr-mpls.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043279/84fb07cf-6b68-bd67-56a9-770c2dd5bb07.png)

1. OSPF設定
ルータ間でOSPF設定、SE-MPLSを有効にしMPLSのラベルを交換するためのSRGB（Segment Routing Global Block）の設定を行う。
今回は100を基準に10個までの100～109の範囲で設定。
    ```:該当部分のコンフィグ抜粋 (FreeRTR-PE-01)
    router ospf4 1
     area 0 segrout
     segrout 10 base 100
    ```

1. Node SIDの設定
loopbackにNode SIDを設定。機器でユニークである必要があるのでindex部分はルータごとに変える必要があります。
    ```:該当部分のコンフィグ抜粋 (FreeRTR-PE-01)
    interface loopback1
     router ospf4 1 segrout node
     router ospf4 1 segrout index 1
    ```

1. MPLSの設定
PE～Pルータ間でMPLSを利用するため、接続インターフェースにMPLSを有効化。
    ```:該当部分のコンフィグ抜粋 (FreeRTR-PE-01)
    interface ethernet1
     mpls enable
    ```
ここまでで、各ルータ間でSR-MPLSでラベル交換ができるようになります。

## EVPN部分
今回はEVPNで2つのL2ネットワークを作ります。お互いのL2ネットワークをVRF設定してMP-BGPで情報交換します。
![04_sr-mpls.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043279/cf47f948-e229-6554-fa43-0b66c650713a.png)
1. L2ネットワーク用のブリッジ設定
2つのL2ネットワーク用のブリッジ設定とクライアント側のIFの割り当てを行う
1. VRF設定
2つのネットワーク分のVRFを作成
1. BGP設定
対向のPEルータとBGPネイバー設定と、2つのL2ネットワーク(bridge-group)のMP-BGP設定を行う

<details><summary>1. ブリッジ設定部分のコンフィグ抜粋 (FreeRTR-PE-01)</summary>
<div>

```
! ----------------
! L2ネットワーク-1
! ----------------
bridge 1
 rd 1:1
 rt-import 1:1
 rt-export 1:1
 mac-learn
 exit
!
interface ethernet2
 bridge-group 1
 exit
!
! ----------------
! L2ネットワーク-2
! ----------------
bridge 2
 rd 1:2
 rt-import 1:2
 rt-export 1:2
 mac-learn
 exit
!
interface ethernet3
 bridge-group 2
 exit
```
</div></details>

<details><summary>2. VRF設定部分のコンフィグ抜粋 (FreeRTR-PE-01)</summary>
<div>

```
! ----------------
! L2ネットワーク-1
! ----------------
vrf definition vrf_l2vpn01
 description VRF_EVPN_L2VPN_01
 rd 1:1
 exit
!
! ----------------
! L2ネットワーク-2
! ----------------
vrf definition vrf_l2vpn02
 description VRF_EVPN_L2VPN_02
 rd 1:2
 exit
!
```
</div></details>

<details><summary>3. BGP設定部分のコンフィグ抜粋 (FreeRTR-PE-01)</summary>
<div>

```
router bgp4 65001
 vrf vrf_default
 local-as 65001
 router-id 10.0.0.1
 address-family evpn
 neighbor 10.0.0.2 remote-as 65001
 neighbor 10.0.0.2 description FreeRTR-PE-02
 neighbor 10.0.0.2 local-as 65001
 neighbor 10.0.0.2 address-family evpn
 neighbor 10.0.0.2 distance 200
 neighbor 10.0.0.2 update-source loopback1
 neighbor 10.0.0.2 pmsitun
 neighbor 10.0.0.2 segrout
 neighbor 10.0.0.2 send-community standard extended
 afi-evpn 5001 bridge-group 1
 afi-evpn 5001 bmac 5001.0000.0001
 afi-evpn 5001 encapsulation cmac
 afi-evpn 5001 update-source loopback1
 afi-evpn 5002 bridge-group 2
 afi-evpn 5002 bmac 5002.0000.0001
 afi-evpn 5002 encapsulation cmac
 afi-evpn 5002 update-source loopback1
 exit
!
```
</div></details>

# 動作確認
クライアントになるVPCからpingを打ち、画像のように同一のL2VPN間でのみping疎通することが確認できました。
![05_sr-mpls.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043279/c37a6456-b77c-b9ac-2a18-2ecf685b504a.png)
PE～Pルータ間のIFでパケットキャプチャしてMPLSラベルが2つついていることや、クライアントのMACアドレスについてMP-BGPで交換していることを確認できました。
- MPLSラベル確認
![06_sr-mpls.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043279/de47da40-7f17-9699-8349-2143d8077aa8.png)
- BGPでMACアドレス通知確認
![07_sr-mpls.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3043279/4233637a-acf5-7b1d-b895-b7ed704be205.png)

最後に、ルータにログインしてshowコマンドで確認した結果を参考に記載します。
<details><summary>FreeRTR-PE-01にshowコマンド確認</summary>
<div>

```
FreeRTR-PE-01#show mpls forwarding
label   vrf            iface      hop        label       targets  bytes
100     null           null       null       unlabelled           0
101     vrf_default:4  null       null       unlabelled  local    2965
102     vrf_default:4  ethernet1  10.10.1.1  102                  0
103     null           null       null       unlabelled           0
104     null           null       null       unlabelled           0
105     null           null       null       unlabelled           0
106     null           null       null       unlabelled           0
107     null           null       null       unlabelled           0
108     null           null       null       unlabelled           0
109     vrf_default:4  ethernet1  10.10.1.1  109                  0
43148   vrf_l2vpn01:4  null       null       unlabelled  local    0
103283  vrf_l2vpn02:4  null       null       unlabelled  local    0
135226  vrf_default:4  null       null       unlabelled  local    0
151291  vrf_default:4  null       null       unlabelled  pwe      618
253702  vrf_default:4  ethernet1  10.10.1.1  3                    0
255801  vrf_default:4  null       null       unlabelled  local    0
350743  vrf_l2vpn01:4  null       null       unlabelled  local    0
523467  vrf_l2vpn02:4  null       null       unlabelled  local    0
529964  host:6         null       null       unlabelled  local    0
535053  vrf_default:6  null       null       unlabelled  local    0
535922  vrf_l2vpn02:6  null       null       unlabelled  local    0
591001  host:4         null       null       unlabelled  local    0
632595  vrf_l2vpn01:6  null       null       unlabelled  local    0
657188  host:4         null       null       unlabelled  local    0
776749  host:4         null       null       unlabelled  local    0
798381  vrf_default:6  null       null       unlabelled  local    0
802683  host:6         null       null       unlabelled  local    0
813152  host:6         null       null       unlabelled  local    0
847951  vrf_default:4  null       null       unlabelled  pwe      618
897970  vrf_l2vpn01:6  null       null       unlabelled  local    0
920830  vrf_default:4  null       null       unlabelled  pwe      0
925683  vrf_l2vpn02:6  null       null       unlabelled  local    0
946922  vrf_default:4  null       null       unlabelled  pwe      0

FreeRTR-PE-01#
FreeRTR-PE-01#
FreeRTR-PE-01#show bridge 1
                                 packet        byte
iface               fwd   phys   tx  rx  drop  tx   rx   drop  grp
brprt bvi
ethernet2           true  true   6   7   0     482  534  0
evpn 10.0.0.2 5001  true  false  2   0   0     104  0    0
evpn 10.0.0.2 5001  true  false  6   6   0     482  482  0


                                                      packet        byte
addr            iface               static  time      tx  rx  drop  tx   rx   drop
0050.7966.6805  ethernet2           false   00:02:41  6   7   0     482  534  0
0050.7966.6806  evpn 10.0.0.2 5001  false   00:02:41  5   6   0     430  482  0


FreeRTR-PE-01#
FreeRTR-PE-01#
FreeRTR-PE-01#show bridge 2
                                 packet        byte
iface               fwd   phys   tx  rx  drop  tx   rx   drop  grp
brprt bvi
ethernet3           true  true   6   8   0     482  586  0
evpn 10.0.0.2 5002  true  false  3   0   0     156  0    0
evpn 10.0.0.2 5002  true  false  6   6   0     482  482  0


                                                      packet        byte
addr            iface               static  time      tx  rx  drop  tx   rx   drop
0050.7966.6807  ethernet3           false   00:00:44  6   8   0     482  586  0
0050.7966.6808  evpn 10.0.0.2 5002  false   00:00:44  5   6   0     430  482  0


FreeRTR-PE-01#
FreeRTR-PE-01#
FreeRTR-PE-01#show ipv4 bgp 65001 evpn database
prefix                           hop       metric       aspath
200:0:1389::50:7966:6805#:: 1:1  10.0.0.1  0/0/0/0
200:0:1389::50:7966:6806#:: 1:1  10.0.0.2  200/100/0/0
300:0:1389::#10.0.0.2 1:1        10.0.0.2  200/100/0/0
300:0:1389::#10.0.0.1 1:1        10.0.0.1  0/0/0/0
200:0:138a::50:7966:6807#:: 1:2  10.0.0.1  0/0/0/0
200:0:138a::50:7966:6808#:: 1:2  10.0.0.2  200/100/0/0
300:0:138a::#10.0.0.2 1:2        10.0.0.2  200/100/0/0
300:0:138a::#10.0.0.1 1:2        10.0.0.1  0/0/0/0

FreeRTR-PE-01#
FreeRTR-PE-01#
FreeRTR-PE-01#show ipv4 bgp 65001 evpn database 200:0:1389::50:7966:6806#:: 1:1
id    category            value
      vrf                 vrf_default:4
      ipver               4
      rd                  1:1
      original rd         0:0
      prefix              200:0:1389::50:7966:6806/128
      prefix network      200:0:1389::50:7966:6806
      prefix broadcast    ::
      prefix wildcard     ::
      prefix netmask      ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
      nlri                n/a
      alternates          1
      alternate #0        candidate=true best=true
alt0  type                bgp4 65001
alt0  source              10.0.0.2
alt0  validity            0
alt0  only to customer    0
alt0  segrout index       0
alt0  segrout old base    0
alt0  segrout base        0
alt0  segrout size        0
alt0  segrout offset      0
alt0  segrout prefix      null
alt0  bier index          0
alt0  bier old base       0
alt0  bier base           0
alt0  bier range          0
alt0  bier size           0-32
alt0  updated             2023-0X-XX XX:XX:XX (00:00:47 ago)
alt0  version             18
alt0  distance            200
alt0  metric              0
alt0  ident               0
alt0  hops                0
alt0  interface           null
alt0  table               null
alt0  nexthop             10.0.0.2
alt0  original nexthop    null
alt0  tag                 0
alt0  origin type         0
alt0  local preference    100
alt0  evpn label*16       2697953
alt0  attribute as        0
alt0  attribute value     n/a
alt0  tunnel type         0
alt0  tunnel value        n/a
alt0  link state          n/a
alt0  pmsi type           0
alt0  pmsi label*16       0
alt0  pmsi tunnel         n/a
alt0  accumulated igp     0
alt0  bandwidth           0
alt0  atomic aggregator   false
alt0  aggregator as       0
alt0  aggregator router   null
alt0  originator          null
alt0  cluster list
alt0  aspath
alt0  path length         0
alt0  standard community
alt0  extended community  2:1:1
alt0  large community
alt0  internal source     1
alt0  local label         null
alt0  remote label
      counter             tx=0(0) rx=0(0) drp=0(0)
      lastio              input never ago, output never ago, drop never ago
      hardware counter    null

FreeRTR-PE-01#
FreeRTR-PE-01#
FreeRTR-PE-01#show ipv4 bgp 65001 evpn database 200:0:138a::50:7966:6808#:: 1:2
id    category            value
      vrf                 vrf_default:4
      ipver               4
      rd                  1:2
      original rd         0:0
      prefix              200:0:138a::50:7966:6808/128
      prefix network      200:0:138a::50:7966:6808
      prefix broadcast    ::
      prefix wildcard     ::
      prefix netmask      ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
      nlri                n/a
      alternates          1
      alternate #0        candidate=true best=true
alt0  type                bgp4 65001
alt0  source              10.0.0.2
alt0  validity            0
alt0  only to customer    0
alt0  segrout index       0
alt0  segrout old base    0
alt0  segrout base        0
alt0  segrout size        0
alt0  segrout offset      0
alt0  segrout prefix      null
alt0  bier index          0
alt0  bier old base       0
alt0  bier base           0
alt0  bier range          0
alt0  bier size           0-32
alt0  updated             2023-0X-XX XX:XX:XX (00:00:47 ago)
alt0  version             20
alt0  distance            200
alt0  metric              0
alt0  ident               0
alt0  hops                0
alt0  interface           null
alt0  table               null
alt0  nexthop             10.0.0.2
alt0  original nexthop    null
alt0  tag                 0
alt0  origin type         0
alt0  local preference    100
alt0  evpn label*16       10705169
alt0  attribute as        0
alt0  attribute value     n/a
alt0  tunnel type         0
alt0  tunnel value        n/a
alt0  link state          n/a
alt0  pmsi type           0
alt0  pmsi label*16       0
alt0  pmsi tunnel         n/a
alt0  accumulated igp     0
alt0  bandwidth           0
alt0  atomic aggregator   false
alt0  aggregator as       0
alt0  aggregator router   null
alt0  originator          null
alt0  cluster list
alt0  aspath
alt0  path length         0
alt0  standard community
alt0  extended community  2:1:2
alt0  large community
alt0  internal source     1
alt0  local label         null
alt0  remote label
      counter             tx=0(0) rx=0(0) drp=0(0)
      lastio              input never ago, output never ago, drop never ago
      hardware counter    null

FreeRTR-PE-01#
FreeRTR-PE-01#
```
</div></details>

# 最後に
オープンソースのfreeRouterを利用してSR-MPLSとEVPNの動作を確認しました。
freeRouterはそれほどリソースを喰わないのでスペックが低いPCでもルータを複数台立ち上げて動作確認をすることができて良かったです。
SRv6とかもやってみたい。