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

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

SONiCとCumulus LinuxでBGP/EVPN/VXLAN

SONiCのRoadmap Planningによると、バージョン202012よりEVPN/VXLANが使える事になっている為、前回の記事にて使用したバージョン202106でEVPN/VXLANを動かしてみた。

以下のリンク先にて、仮想アプライアンス版のSONiCではVXLANのコマンドが打てないという残念なお知らせを見てしまったものの、現段階での最新バージョン202106でVXLAN周りのコマンドを試しに打ってみたら、弾かれる事無く投入出来てしまった。
ひょっとしたら商用版だけでなく仮想アプライアンス版でもVXLANが動作するのかも...と期待し、VXLANでよく見られるBGP/EVPN/VXLANな組み合わせでVXLANを試してみた。
https://github.com/Azure/SONiC/wiki/Sonic-Roadmap-Planning Roadmap Planning
https://qiita.com/masru0714/items/71f2d8e0efa4c28f991d SONiCとVXLAN


VXLANとは?
Virtual eXtensible Local Area Networkの略称。L3ネットワークの上に論理的なL2ネットワークを構築する為のトンネリングプロトコルで、BGP等で経路が制御されているL3ネットワーク(アンダーレイ)上にVXLANによるトンネリングを構築し(オーバーレイ)、オーバーレイ上の各ネットワークがL2スイッチで接続されているような感じで通信をする。
データセンタ内のネットワークにて使用される。
関連する仕様はRFC7348(Virtual eXtensible Local Area Network (VXLAN))となっている。
従来のVLANでは最大4094個のL2ネットワークを扱う事が可能だが、VXLANでは更に多い約1600万ものL2ネットワークを扱う事が可能である。
Edge-coreやNVIDIA等が出している商用版のSONiCでは本家版よりも早く、VXLANの設定が可能となっている。


当方の環境
ホストOS:Windows10 64bit版 / RAM: 8GB / CPU: Intel Core i5 M460 2.53GHz
Oracle Virtualbox:6.1.24
ゲストOS:SONiC 202106.32193-d7f5dded1
ゲストOS:Cumulus VX 4.4.0


構成
SONiCはデプロイ完了の時点で、IPアドレスやBGP等の設定が既に入っていた状態だった為、BGPの設定は既存から大幅に設定を修正。
Cumulus VX側はSONiCの設定に合わせるような内容でIPアドレスとBGPを設定。
※図をクリックすると拡大表示します



SONiCおよびCumulus Linuxの導入
SONiCの最新バージョン202106は以下のリンク先よりダウンロード可能。
ただし、開発者が個人的に立ち上げたサイトである為、永続的にダウンロードが可能であるかに関しては不明。
https://sonic.software/
ダウンロード後、.imgファイルをNHCというツールで.vhdファイルに変換し、VBoxManage.exeコマンドでUUIDを付与する必要が有る。
SONiCのデプロイに関しては、以下の記事をご参照ください。
https://debslink.hatenadiary.jp/entry/20210131/1612091391 SONiCを少しかじってみた
Cumulus VXのデプロイに関しては、下記の動画をご参照ください。
https://www.youtube.com/watch?v=9AYYhBcDm1Q how to install Cumulus VX on Virtual Box
SONiC~Cumulus VX間を仮想的に1本づつ仮想的なケーブルで接続させるには、ネットワークアダプタの内部ネットワークの設定を変更する必要が有る。
設定変更の方法に関しては以下の記事をご参照ください。
https://debslink.hatenadiary.jp/entry/20201217/1608182777


Cumulus Linux (Cumulus VX)の設定内容
インタフェースやシステム周りはNCLUコマンド net commitコマンドにTabキーでオプションを探しながら投入し、net config saveコマンドで設定内容を保存。
BGPはvtyshモードに入りCisco IOSライクなコマンドで設定を投入し、write memoryコマンドで設定内容を保存。
Cumulus LinuxはSONiCとは異なり、再起動しても設定が残っている。

以下は/etc/network/interfacesファイルの内容。
NCLUコマンドで投入したインタフェース周りの設定が書かれている。
link-speedとmtuの値はSONiCに合わせている。

# The loopback network interface
auto lo
iface lo inet loopback
    # The primary network interface
    address 10.1.1.98/32
    vxlan-local-tunnelip 10.1.1.98

# The primary network interface
auto eth0
iface eth0
    address 192.168.3.112/24
    vrf mgmt

auto swp1
iface swp1
    address 192.168.10.1/31
    alias DEV=jpmtkvmsw99 IF=eth0
    link-speed 40000
    mtu 9216

auto swp2
iface swp2
    bridge-access 100

auto bridge
iface bridge
    bridge-ports swp2 vxlan1000
    bridge-vids 100
    bridge-vlan-aware yes

auto mgmt
iface mgmt
    address 127.0.0.1/8
    address ::1/128
    vrf-table auto

auto vlan100
iface vlan100
    address 192.168.100.98/24
    vlan-id 100
    vlan-raw-device bridge

auto vxlan1000
iface vxlan1000
    bridge-access 100
    mstpctl-bpduguard yes
    mstpctl-portbpdufilter yes
    mtu 1500
    vxlan-id 1000
    vxlan-local-tunnelip 10.1.1.98


以下は/etc/frr/frr.confファイルの内容。
vtyshモードに入り、Cisco IOSライクなコマンドで設定投入し、writeコマンドで設定内容を保存。
vtyshモードから抜けない状態でshow runコマンドを叩くと、以下が出力される。

frr version 7.5+cl4.4.0u4
frr defaults datacenter
hostname jpmtkvmsw98
log syslog informational
service integrated-vtysh-config
!
ip route 10.1.1.99/32 192.168.10.0
ip route 192.168.100.99/32 192.168.10.0
!
router bgp 65098
 bgp router-id 10.1.1.98
 no bgp default ipv4-unicast
 bgp graceful-restart restart-time 240
 bgp graceful-restart
 bgp graceful-restart preserve-fw-state
 bgp bestpath as-path multipath-relax
 neighbor 10.1.1.99 remote-as 65099
 neighbor 10.1.1.99 description jpmtkvmsw99-lo
 neighbor 192.168.10.0 remote-as 65099
 neighbor 192.168.10.0 description jpmtkvmsw99-swp1
 !
 address-family ipv4 unicast
  network 10.1.1.98/32
  neighbor 10.1.1.99 activate
  neighbor 192.168.10.0 activate
 exit-address-family
 !
 address-family l2vpn evpn
  neighbor 10.1.1.99 activate
  neighbor 192.168.10.0 activate
  advertise-all-vni
 exit-address-family
!
line vty
!



SONiCの設定内容
以下は/etc/sonic/config_db.jsonファイルの内容。前回の記事(SONiCとCumulus LinuxでBGP unnumbered)の設定内容を流用したが、今回のBGPの設定はBGP Unnumberedではない為にconfig_db.jsonファイルを直接編集している。
VXLANの設定に関しては、何とconfig vxlanコマンドが投入出来た。
先にVXLANの設定を試みた方々によると前のバージョンではconfig vxlanコマンドが打てなかったとの事なので、大きな前進である。
商用版のSONiCではVXLANの設定が可能になっており、Edge-Core NetworksやMacnica等ベンダのサイトにてSONiCのVXLAN設定方法が紹介されていたものの、仮想アプライアンス版ではそれだけでは足りないようで、Cumulus Linuxの内容も参照し設定投入した。
https://support.edge-core.com/hc/en-us/articles/900002720523-EVPN-L2-VXLAN
https://qiita.com/masru0714/items/71f2d8e0efa4c28f991d
https://www.macnica.co.jp/business/semiconductor/articles/basic/136390/

結局、以下の内容で落ち着いた(?)
尚、表示されていない設定内容に関しては全く手を付けていない為、割愛している。

{
    "BGP_NEIGHBOR": {
        "192.168.10.1": {
            "asn": "65098",
            "holdtime": "180",
            "keepalive": "60",
            "local_addr": "192.168.10.0",
            "name": "jpmtkvmsw98-swp1",
            "nhopself": "0",
            "rrclient": "0"
        }
    },
:
    },
    "DEVICE_METADATA": {
        "localhost": {
            "bgp_asn": "65099",
            "buffer_model": "traditional",
            "default_bgp_status": "up",
            "default_pfcwd_status": "disable",
            "hostname": "jpmtkvmsw99",
            "hwsku": "Force10-S6000",
            "mac": "52:54:00:12:34:56",
            "platform": "x86_64-kvm_x86_64-r0",
            "type": "SpineRouter"
        }
    },
:
    "INTERFACE": {
        "Ethernet0": {},
        "Ethernet0|192.168.10.0/31": {},
        "Ethernet4": {},
        "Ethernet4|": {},
:
    "LOOPBACK_INTERFACE": {
        "Loopback0": {},
        "Loopback0|10.1.1.99/32": {}
    },
    "MGMT_INTERFACE": {
        "eth0|192.168.3.247/24": {}
    },
:
    "VLAN": {
        "Vlan100": {
            "vlanid": "100"
        }
    },
    "VLAN_INTERFACE": {
        "Vlan100": {},
        "Vlan100|192.168.100.99/24": {}
    },
    "VLAN_MEMBER": {
        "Vlan100|Ethernet4": {
            "tagging_mode": "untagged"
        }
    },
    "VXLAN_EVPN_NVO": {
        "nvo": {
            "source_vtep": "vtep"
        }
    },
    "VXLAN_TUNNEL": {
        "vtep": {
            "src_ip": "10.1.1.99"
        }
    },
    "VXLAN_TUNNEL_MAP": {
        "vtep|map_1000_Vlan100": {
            "vlan": "Vlan100",
            "vni": "1000"
        }
    }
}


以下は、show running-configの出力内容。
Cumulus VXと同様にvtyshモードに入り、Cisco IOSライクなコマンドで設定投入する。
BGPやルートマップの設定が既に入っていた為、不要な設定や修正すべき設定は一旦削除し修正。writeコマンドで設定内容が反映される為、/etc/sonic/frr/bgpd.confや/etc/sonic/frr/zebra.confファイルは直接編集していない。
一番下にPrefix Listが2行出力されているが、これらは自動で投入されたものである。
仮想アプライアンス版の場合、vtyshモードで投入した設定内容は、SONiCを再起動させると殆どが元の設定に戻るので注意。

frr version 7.5.1-sonic
frr defaults traditional
hostname jpmtkvmsw99
log syslog informational
log facility local4
agentx
no service integrated-vtysh-config
!
password zebra
enable password zebra
!
ip route 0.0.0.0/0 200
ip route 10.1.1.98/32 192.168.10.1
ip route 192.168.100.98/32 192.168.10.1
!
interface eth0
 ipv6 nd ra-interval 10
 no ipv6 nd suppress-ra
!
interface eth4
 ipv6 nd ra-interval 10
 no ipv6 nd suppress-ra
!
router bgp 65099
 bgp router-id 10.1.1.99
 bgp log-neighbor-changes
 no bgp ebgp-requires-policy
 no bgp default ipv4-unicast
 bgp graceful-restart restart-time 240
 bgp graceful-restart
 bgp graceful-restart preserve-fw-state
 bgp bestpath as-path multipath-relax
 neighbor 10.1.1.98 remote-as 65098
 neighbor 10.1.1.98 description jpmtkvmsw98-lo
 neighbor 192.168.10.1 remote-as 65098
 neighbor 192.168.10.1 description jpmtkvmsw98-swp1
 !
 address-family ipv4 unicast
  network 10.1.1.99/32
  neighbor 10.1.1.98 activate
  neighbor 192.168.10.1 activate
  maximum-paths 64
 exit-address-family
 !
 address-family l2vpn evpn
  neighbor 10.1.1.98 activate
  neighbor 192.168.10.1 activate
  advertise-all-vni
 exit-address-family
!
ip prefix-list PL_LoopbackV4 seq 5 permit 10.1.1.99/32
ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 5 permit 192.168.100.0/24
!
line vty
!



BGPテーブルの内容の確認
VXLANおよびEVPNの設定を終えたところで、BGPテーブルの内容を確認。
前回とは異なり今回は挙動が不安定で、設定投入後5分前後はステータスがIdleに戻ったりピアを張ったり...を繰り返す。
Cumulus Linux同士で設定すると即座にBGPピアを張ってその後は落ちる事が無い為、動作が不安定な原因はSONiC側かと思われる。
以下はCumulus Linux側のBGPピアの情報の確認。

jpmtkvmsw98# show ip bgp summary

IPv4 Unicast Summary:
BGP router identifier 10.1.1.98, local AS number 65098 vrf-id 0
BGP table version 48
RIB entries 3, using 600 bytes of memory
Peers 2, using 46 KiB of memory

Neighbor                  V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt
jpmtkvmsw99(10.1.1.99)    4      65099       830       807        0    0    0 00:22:57            1        2
jpmtkvmsw99(192.168.10.0) 4      65099      1744      2254        0    0    0 00:22:58            1        2

Total number of neighbors 2


以下はSONiC側のBGPピアの情報の確認。
前回とは異なり今回は設定投入直後は不安定で、Stateが時々Idleに戻る。
Cumulus LinuxとSONiCはBGPピアを確立している時間がほぼ同じであるにも関わらず、MsgRcvdとMsgSentの値に大きな差分が有る。何故だろう...

jpmtkvmsw99# show ip bgp summary

IPv4 Unicast Summary:
BGP router identifier 10.1.1.99, local AS number 65099 vrf-id 0
BGP table version 8
RIB entries 3, using 576 bytes of memory
Peers 2, using 43 KiB of memory

Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt
10.1.1.98       4      65098       588       525        0    0    0 00:22:46            1        2
192.168.10.1    4      65098       594       531        0    0    0 00:22:46            1        2

Total number of neighbors 2
jpmtkvmsw99#



MACアドレステーブルの確認
以下はCumulus Linux側のMACアドレステーブルの情報。
Cumulus Linux側からはLAN向けインタフェース(swp2)やBGPピア向けインタフェース(VXLAN1000)からMACアドレスが見えている。

cumulus@jpmtkvmsw98:mgmt:~$ net show bridge macs

VLAN      Master  Interface  MAC                TunnelDest  State      Flags  LastSeen
--------  ------  ---------  -----------------  ----------  ---------  -----  --------
100       bridge  bridge     08:00:27:f5:1a:2f              permanent         01:06:03
untagged          vxlan1000  00:00:00:00:00:00  10.1.1.99   permanent  self   00:25:30
untagged  bridge  swp2       08:00:27:f5:1a:2f              permanent         01:06:03
untagged  bridge  vxlan1000  86:28:ed:e6:78:df              permanent         01:06:03
cumulus@jpmtkvmsw98:mgmt:~$


以下はSONiC側のMACアドレステーブルの確認。
こちらではCumulus Linux側からMACアドレスを学習出来ていない。
Cumulus Linux側に向けてPingを打っても、show macの出力内容は全く変化無し。

admin@jpmtkvmsw99:~$ show mac
No.    Vlan    MacAddress    Port    Type
-----  ------  ------------  ------  ------
Total number of entries 0
admin@jpmtkvmsw99:~$



EVPN VNIの確認
以下はCumulus Linux側のVNI情報の確認。
VXLANインタフェース名をCumulus LinuxとSONiCとの間で揃えれば良かったと後悔。

jpmtkvmsw98# show evpn vni
VNI        Type VxLAN IF              # MACs   # ARPs   # Remote VTEPs  Tenant VRF
1000       L2   vxlan1000             1        3        1               default
jpmtkvmsw98#


以下はSONiC側のVNI情報の確認。
上記のMACアドレステーブルは空っぽだったが、show evpn vniコマンドを叩くとMACアドレスを2個認識している事が分かる。
Cumulus Linuxとの間で#ARPsの数に差分が生じている原因は不明。

jpmtkvmsw99# show evpn vni
VNI        Type VxLAN IF              # MACs   # ARPs   # Remote VTEPs  Tenant VRF
1000       L2   vtep-100              1        2        1               default
jpmtkvmsw99#



EVPN VTEPの確認
以下はCumulus Linux側のVTEP情報の確認。
Number of MACsの行とNumber of ARPsの行の値は、show evpn vniの出力内容と同じである事が分かる。

jpmtkvmsw98# show evpn vni detail
VNI: 1000
 Type: L2
 Vlan: 100
 Bridge: bridge
 Tenant VRF: default
 VxLAN interface: vxlan1000
 VxLAN ifIndex: 11
 Local VTEP IP: 10.1.1.98
 Mcast group: 0.0.0.0
 Remote VTEPs for this VNI:
  10.1.1.99 flood: HER
 Number of MACs (local and remote) known for this VNI: 1
 Number of ARPs (IPv4 and IPv6, local and remote) known for this VNI: 3
 Advertise-gw-macip: No
 Advertise-svi-macip: No

jpmtkvmsw98#


以下はSONiC側のVTEP情報の確認。
あらら、Oper Statusがoper_downのステータスになっている。
何度か設定を試行してもOperStatusはoper_downのままだった。

admin@jpmtkvmsw99:~$ show vxlan remotevtep
+-----------+-----------+-------------------+--------------+
| SIP       | DIP       | Creation Source   | OperStatus   |
+===========+===========+===================+==============+
| 10.1.1.99 | 10.1.1.98 | EVPN              | oper_down    |
+-----------+-----------+-------------------+--------------+
Total count : 1

admin@jpmtkvmsw99:~$



EVPNの学習経路の確認
[3]で始まるエントリのみ出力されている。
[3]はEVPN Type-3を表し、EVPN Type-3とはBUMトラフィックを転送するトンネルエンドポイントへの到達性を表す為に使用される。
BUMトラフィックとはBroadcast/Unknownunicast/Multicastの略称であり、ARPのようなブロードキャスト通信やOSPFで使用するHelloパケット(マルチキャスト)通信等もBUMトラフィックに含まれる。
今回の場合、全VLAN(当環境ではVLAN100のみ)に対しType-3が生成されて全VLANにフラッディングし、対向の機器が自動で発見されるような形となる。

以下はCumulus Linux側のEVPNの学習経路の確認。
例えば[3]:[0]:[32]:[10.1.1.98]の場合、Type-3、EthTag無し、IPアドレスが/32、オリジンIPが10.1.1.98(自分自身)を示す。
10.1.1.99への経路は、真ん中のエントリが採用されている。

jpmtkvmsw98# show bgp evpn evpn route
BGP table version is 1, local router ID is 10.1.1.98
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete
EVPN type-1 prefix: [1]:[ESI]:[EthTag]:[IPlen]:[VTEP-IP]:[Frag-id]
EVPN type-2 prefix: [2]:[EthTag]:[MAClen]:[MAC]:[IPlen]:[IP]
EVPN type-3 prefix: [3]:[EthTag]:[IPlen]:[OrigIP]
EVPN type-4 prefix: [4]:[ESI]:[IPlen]:[OrigIP]
EVPN type-5 prefix: [5]:[EthTag]:[IPlen]:[IP]

   Network          Next Hop            Metric LocPrf Weight Path
                    Extended Community
Route Distinguisher: 10.1.1.98:2
*> [3]:[0]:[32]:[10.1.1.98]
                    10.1.1.98                          32768 i
                    ET:8 RT:65098:1000
Route Distinguisher: 10.1.1.99:2
*> [3]:[0]:[32]:[10.1.1.99]
                    10.1.1.99                              0 65099 i
                    RT:65099:1000 ET:8
*  [3]:[0]:[32]:[10.1.1.99]
                    10.1.1.99                              0 65099 i
                    RT:65099:1000 ET:8

Displayed 2 prefixes (3 paths)
jpmtkvmsw98#


以下はSONiC側のEVPNの学習経路の確認。
OSは違えど出力フォーマットはCumulus Linuxと同じである。
こちらもType-3のみ出力されている。10.1.1.98への経路は一番上のエントリが採用されている。

jpmtkvmsw99# show bgp evpn evpn route
BGP table version is 1, local router ID is 10.1.1.99
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete
EVPN type-1 prefix: [1]:[ESI]:[EthTag]:[IPlen]:[VTEP-IP]
EVPN type-2 prefix: [2]:[EthTag]:[MAClen]:[MAC]:[IPlen]:[IP]
EVPN type-3 prefix: [3]:[EthTag]:[IPlen]:[OrigIP]
EVPN type-4 prefix: [4]:[ESI]:[IPlen]:[OrigIP]
EVPN type-5 prefix: [5]:[EthTag]:[IPlen]:[IP]

   Network          Next Hop            Metric LocPrf Weight Path
                    Extended Community
Route Distinguisher: 10.1.1.98:2
*> [3]:[0]:[32]:[10.1.1.98]
                    10.1.1.98                              0 65098 i
                    RT:65098:1000 ET:8
*  [3]:[0]:[32]:[10.1.1.98]
                    10.1.1.98                              0 65098 i
                    RT:65098:1000 ET:8
Route Distinguisher: 10.1.1.99:2
*> [3]:[0]:[32]:[10.1.1.99]
                    10.1.1.99                          32768 i
                    ET:8 RT:65099:1000

Displayed 2 prefixes (3 paths)
jpmtkvmsw99#



今回はここまで。
Cumulus LinuxからSONiCの方向の通信に関しては、EVPNやVNIやVTEPの確認が出来たものの、SONiCからCumulus VX方向の通信に関してはshow macの出力内容が空白という事で、正常性の確認が完全に出来ていない。SONiCのこの事象について、設定不備なのかSONiCの仮想アプライアンス版ではまだ動作が不完全なのか、今後も確認を続けたい。
SONiC3〜4台でLeaf-Spineの構成組んでやってみたいのだが、ホスト機のスペックが低い為に2台が精一杯。PCを買い換える機会が有ったら、RAMは最低でも16GBは欲しいところだ。


VXLANについて (2022/12/31追記)
VXLANのの動作が確認出来ない件について。
以下の記事によると、自分がいつも利用しているSONiC(コミュニティ版)でVXLANをまともに動かすにはソースコードの変更が必要との事。
先達の方に感謝。
https://qiita.com/masru0714/items/aca21a09ce4ce1107f05


Cumulus Linuxのキャラクター「Rocket Turtle」が参考書 Cloud Native Data Center Networking (Dinesh著、O'Reilly刊)を眺めている。
123ページ以降に断続的にVXLANに関する記載が有る。



参照サイト
開発者および先達の皆さまに感謝。
https://azure.github.io/SONiC/ SONiC Software for Open Networking in the Cloud
https://qiita.com/advent-calendar/2019/sonic SONiC Advent Calendar 2019
https://qiita.com/advent-calendar/2020/sonic SONiC Advent Calendar 2020
https://speakerdeck.com/imasaruoki Speaker Deckに掲載れているSONiCの資料
https://github.com/Azure/SONiC/tree/master/doc 202106のリリースノートはまだ置かれていない
https://github.com/Azure/SONiC/wiki/Sonic-Roadmap-Planning Sonic Roadmap Planning
https://datatracker.ietf.org/doc/html/rfc7348 RFC7348
https://www.apresiatac.jp/blog/201903131137/ Cumulus LinuxでVXLANルーティング構築
https://www.macnica.co.jp/business/semiconductor/articles/basic/136390/ 【第6回】ホワイトボックススイッチの相互運用性試験 ~Edgecore SONiC x Cumulus Linux~
https://www.netone.co.jp/knowledge-center/blog-column/knowledge_takumi_182/ EVPNの仕様と実験的検討③
https://qiita.com/masru0714/items/71f2d8e0efa4c28f991d SONiCとVXLAN
https://kakkotetsu.hatenablog.com/entry/2017/05/11/001708 Cumulus VX で VXLAN+EVPN (original : 2017/03/22)


SONiCに関する記事
https://debslink.hatenadiary.jp/entry/20210131/1612091391 SONiCを少しかじってみた
https://debslink.hatenadiary.jp/entry/20210214/1613279732 SONiCのWarm Bootの動作確認
https://debslink.hatenadiary.jp/entry/20210320/1616230057 Cumulus LinuxとSONiCの設定ファイル
https://debslink.hatenadiary.jp/entry/20210822/1629600666 SONiCとCumulus LinuxでBGP unnumbered
https://debslink.hatenadiary.jp/entry/20210912/1631418907 SONiCとCumulus Linuxで4byte ASなBGP + IP Clos構成
https://debslink.hatenadiary.jp/entry/20220122/1642852049 SONiCでL2 MC-LAGを組んでみた