1. はじめに
こんにちは。サイトオペレーション本部でネットワークインフラを担当している村越です。また、ヤフーの黒帯制度で第6代・第7代ネットワークの黒帯としても活動しています。
12月頭にネットワークメーカーやユーザー企業へ訪問して来たのですが、帰国後はあっという間で今年も残りわずかになってきましたね。
年の瀬の慌ただしいときですが、12/20のAdvent Calendarとしてデータセンタネットワークの取り組みとOCP Facebook Backpackについて紹介したいと思います。
2. データセンタネットワークのトレンド
トラフィック量の急激な上昇が通信事業者やISPからコンテンツサービスを提供するGoogleなどに変化していることが2009年のNanogで発表があったことはご存じの方も多いと思います。
引用元:2009年Nanog Arbor Networks発表資料
最近ですとYouTubeやFacebookで動画を閲覧する方も増えているので実感することがあるのではないでしょうか。このようなトラフィックを多く処理する必要があるGoogle、Amazon、Facebook、MicrosoftなどOTT(Over the TOP)ではネットワークの構成に変化が見られ、2012年のMicrosoftがNanogで発表した構成、2014年のFacebook Blogで紹介された構成、2017年のUBER Engineeringで紹介された構成などにあるようにCLOS Fabric Networkが代表的であり、RFC7938にも記載があります。
引用元:2012年Nanog Microsoft発表した構成
引用元:2014年Facebook Blogで紹介された構成
引用元:2017年UBER Engineeringで紹介された構成
3. ヤフーの取り組み
ヤフーでもデータセンタネットワークの構成はCLOS Fabric Networkへと徐々に対応させています。2016年にJANOG38で発表した「ヤフーのIP CLOS ネットワーク」はその最初の事例です。
現在の取り組みを表にまとめてみました。ここでは今回紹介するFacebook Backpackと関連するためFacebookをもとにヤフーとの比較として記載しています。
今回はDesign、Automation、Chipなどの話は別の機会とし、White BoxであるOCP Facebook Backpackにフォーカスして紹介していきたいと思います。(表中の紫色として囲まれている箇所)
4. OCP Facebook Backpackとは
OCP(Open Compute Project)とはFacebook社が中心となり提唱しており、サーバー・ストレージ・ネットワーク・ラックなどのハードウエア設計や仕様のオープンソース化を推進する非営利組織のコミュニティーです。Facebook BackpackはOCPにネットワーク機器として技術仕様が公開されています。
仕様が公開されているため、従来のネットワーク機器では考えられないような内部の構造を確認できます。
例えば、以下はLine Cardの内部構造であり、ASICのBroadcom Tomahawkとの接続などが詳細に記載されていることがわかります。
興味がある方は誰でもPDFをダウンロードして確認できますので眺めてみるのも良いかもしれません。
引用元:Latest version/spec:November 7,2016
4-1. Backpackの特徴
Backpackの特徴は、OCPで仕様を公開されているWhite BoxでありOS側が対応すればどんなOSも載せることができるところも1つですがもう1つ大きな違いがあります。それは従来のネットワーク機器にあるSUP(Supervisor)が存在していないということです。かわりに各FabricやLine Card上でOSが稼働することで1台のネットワークの中に小さなCLOS Fabric Networkが構成されている形です。
以下にイメージ図を記載しています。Facebook Backpackに今回はCumulus Linux OSを載せているため、各FabricやLine Cardにロケットを載せた亀のマークが確認できると思います。BackpackのアーキテクチャについてはCloud Computing Day 2017で説明した資料:Session2: Comments on OCP Network Switches / Kenya Murakoshi Yahoo! JAPANと動画がありますので詳しくしりたい方は参考にしてもらえればと思います。
以下にスペックを記載しておきます。
- モジュール
- 4枚搭載
- ポート密度
- 128 x100G, QSFP28
- ASIC
- Broadcom BCM56960 Tomahawk
- Line Card
- Tomahawk ASIC x2枚搭載
- QSFP28 100G x32port
- Fabric
- Tomahawk ASIC x1枚搭載
5. Backpack 動作検証
Backpackの特徴を捉えたところで、実際にちゃんと動くのか気になる方もいるかもしれません。今回弊社のデータセンタにある機器を利用して環境を構築して検証を実施したので結果について簡単に記載していきたいと思います。検証の際は、伊藤忠テクノソリューションズ株式会社(CTC)に協力いただき、一部の検証機材をお借りしました。特に測定器であるIXIAではCTCの横田さんに大変お世話になりました。ありがとうございました。
5-1. 場所・機材
場所は弊社データセンタで実施しました。機材は以下を利用しています。
- ヤフー
- Facebook Backpack 2台
- 100G SR x8個
- Accton AS7712-32X 2台
- management sw 数台
- CTC
- IXIA 2slot Chassis 1台
- IXIA 100G module 1枚
- IXIA 10G module 1枚
- DL360G7 HC 2台
- DL360p Gen8 1台
- Dell Z9100-ON 1台
5-2. 内容・構成
ネットワーク機器のOSはBackpackを含めて検証期間中に最新であるCumulus Linux OS version 3.4.3を利用しています。
5-2-1. Underlay構成
Underlayの構成はBGPでCLOS Fabric Networkを構築しました。Backpack内はBGP AS 65000とし、FabricをRoute Reflectorに設定しています。また、Fabric〜Line Card〜ToR間はすべてBGP Unnumberd Interfaces(RFC5549)を利用しています。
Backpack01
Single Home 全体構成 Underlay
5-2-2. Overlay構成
OverlayとしてVxLAN BGP EVPNの構成を取りました。EVPNについては以前弊社のAdvent Calendar 2015にも記載がありますのであわせてご覧ください。ToR側をVTEPとして設定し、VLAN1、VLAN100それぞれがToR間で通信できるかを確認しています。設定はマニュアルに任せますが、ToRの一部設定を以下に記載しておきます。
es-accton01の設定
router bgp 65001
bgp router-id xxx.65.28.24
bgp bestpath as-path multipath-relax
neighbor spine peer-group
neighbor spine remote-as external
neighbor spine capability extended-nexthop
neighbor swp1 interface peer-group spine
neighbor swp2 interface peer-group spine
!
address-family ipv4 unicast
network xxx.65.28.24/32
neighbor spine next-hop-self
neighbor spine soft-reconfiguration inbound
neighbor spine allowas-in
maximum-paths 64
exit-address-family
!
address-family ipv6 unicast
redistribute connected
neighbor spine activate
exit-address-family
!
address-family l2vpn evpn
neighbor spine activate
advertise-all-vni
exit-address-family
VTEP
詳細は検証項目にそれぞれ記載していますが、内容としてBGP EVPNの構成をSingle HomeとDual Homeで構成し、それぞれでBGP EVPNネイバーがはれ、Macアドレスを広報できていることやMac Moveできることを確認しています。また、パケットの中身もSPANしてサーバー側でtcpdumpにより取得し、Wiresharkで表示しています。
Backpackの単体ではRFC2544試験もIXIAで確認しました。
Single Home 全体構成 Overlay
5-3. 検証項目
下記の検証を今回実施しましたが、長くなるため以下の抜粋に留めました。
- 1-1-1〜1-1-3
- 2-2-1〜2
- 3-3-2
5-3:1-1-1. Single HomeでBGP EVPN Neighborの確認
まずは基本としてes-accton01〜Backpack01 lc101間、es-accton02〜Backpac02 lc101間でbgp evpn neighborが張られていることを確認してみましょう。
Single Homeの簡易構成図もあわせて載せておきます。
cumulus@es-accton01:~$ net show bgp evpn summary
BGP router identifier xxx.65.28.24, local AS number 65001 vrf-id 0
BGP table version 0
RIB entries 25, using 3600 bytes of memory
Peers 2, using 41 KiB of memory
Peer groups 1, using 64 bytes of memory
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
fb-bp01-lc101.xxx(swp1) 4 65000 282493 282614 0 0 0 01w0d11h 7
fb-bp02-lc101.xxx(swp2) 4 65000 282447 282536 0 0 0 01w0d11h 7
Total number of neighbors 2
cumulus@es-accton01:~$
cumulus@es-accton02:~$ net show bgp evpn summary
BGP router identifier xxx.65.28.25, local AS number 65002 vrf-id 0
BGP table version 0
RIB entries 25, using 3600 bytes of memory
Peers 2, using 41 KiB of memory
Peer groups 1, using 64 bytes of memory
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
fb-bp01-lc402.xxx(swp1) 4 65000 282684 282787 0 0 0 01w0d11h 7
fb-bp02-lc402.xxx(swp2) 4 65000 282734 282813 0 0 0 01w0d11h 7
Total number of neighbors 2
5-3:1-1-2. Single HomeでBGP EVPN Routeの確認
次にMacアドレスをEVPN routeとして広報できているか確認してみます。es-accton02配下に接続されているサーバー(HC-16)のMacアドレスがes-acccton01まで伝搬されていることを確認します。まず、HC-16のMacアドレスは以下から 2c:27:d7:4e:95:80 であることがわかります。(★を確認)
[root@DL360G7HC-16 ~]# ifconfig
ens1f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::2e27:d7ff:fe4e:9580 prefixlen 64 scopeid 0x20<link>
ether 2c:27:d7:4e:95:80 txqueuelen 1000 (Ethernet) ★
RX packets 193 bytes 23812 (23.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 156 bytes 16872 (16.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 48
ens1f0.100: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.100.1 netmask 255.255.255.0 broadcast 192.168.100.255
inet6 fe80::2e27:d7ff:fe4e:9580 prefixlen 64 scopeid 0x20<link>
ether 2c:27:d7:4e:95:80 txqueuelen 1000 (Ethernet) ★
RX packets 95 bytes 9402 (9.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 55 bytes 6317 (6.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
では、このMacアドレスがBGP EVPN routeとして広報され、es-accton01まで伝搬しているか確認してみましょう。
cumulus@es-accton01:~$ net show bgp evpn route
BGP table version is 0, local router ID is xxx.65.28.24
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete
EVPN type-2 prefix: [2]:[ESI]:[EthTag]:[MAClen]:[MAC]:[IPlen]:[IP]
EVPN type-3 prefix: [3]:[EthTag]:[IPlen]:[OrigIP]
Network Next Hop Metric LocPrf Weight Path
省略
Route Distinguisher: xxx.65.28.24:1
*> [2]:[0]:[0]:[48]:[2c:27:d7:4e:96:60]
xxx.65.28.24 32768 i
*> [3]:[0]:[32]:[xxx.65.28.24]
xxx.65.28.24 32768 i
Route Distinguisher: xxx.65.28.24:2
*> [2]:[0]:[0]:[48]:[2c:27:d7:4e:96:60]
xxx.65.28.24 32768 i
*> [3]:[0]:[32]:[xxx.65.28.24]
xxx.65.28.24 32768 i
Route Distinguisher: xxx.65.28.25:1
*> [2]:[0]:[0]:[48]:[2c:27:d7:4e:95:80] ★
xxx.65.28.25 0 65000 65002 i
* [2]:[0]:[0]:[48]:[2c:27:d7:4e:95:80] ★
xxx.65.28.25 0 65000 65002 i
* [3]:[0]:[32]:[xxx.65.28.25]
xxx.65.28.25 0 65000 65002 i
*> [3]:[0]:[32]:[xxx.65.28.25]
xxx.65.28.25 0 65000 65002 i
Route Distinguisher: xxx.65.28.25:2
* [2]:[0]:[0]:[48]:[2c:27:d7:4e:95:80] ★
xxx.65.28.25 0 65000 65002 i
*> [2]:[0]:[0]:[48]:[2c:27:d7:4e:95:80] ★
xxx.65.28.25 0 65000 65002 i
* [3]:[0]:[32]:[xxx.65.28.25]
xxx.65.28.25 0 65000 65002 i
*> [3]:[0]:[32]:[xxx.65.28.25]
xxx.65.28.25 0 65000 65002 i
Displayed 16 prefixes (20 paths)
cumulus@es-accton01:~$
下記のようにMacアドレスをEVPN type2のrouteとして広報できていることが確認できます。
[2]:[0]:[0]:[48]:[2c:27:d7:4e:96:60]
また広報元のVTEPはxxx.65.25.25=es-accton02となっていることもわかります。この際にRDがxxx.65.28.25:1とxxx.65.28.25:2と2つあることを確認でき、VNI10100とVNI10001にそれぞれ対応している形です。以下のコマンドで詳しく確認できます。
cumulus@es-accton01:~$ net show bgp evpn route rd xxx.65.28.25:1
EVPN type-2 prefix: [2]:[ESI]:[EthTag]:[MAClen]:[MAC]
EVPN type-3 prefix: [3]:[EthTag]:[IPlen]:[OrigIP]
BGP routing table entry for xxx.65.28.25:1:[2]:[0]:[0]:[48]:[2c:27:d7:4e:95:80]
Paths: (2 available, best #1)
Advertised to non peer-group peers:
fb-bp01-lc101.xxx(swp1) fb-bp02-lc101.xxx(swp2)
Route [2]:[0]:[0]:[48]:[2c:27:d7:4e:95:80]
65000 65002
xxx.65.28.25 from fb-bp01-lc101.xxx(swp1) (xxx.65.28.4)
Origin IGP, localpref 100, valid, external, bestpath-from-AS 65000, best
Extended Community: RT:65002:10100 ET:8 ★
AddPath ID: RX 0, TX 60637
Last update: Mon Nov 27 16:34:39 2017
Route [2]:[0]:[0]:[48]:[2c:27:d7:4e:95:80]
65000 65002
xxx.65.28.25 from fb-bp02-lc101.xxx(swp2) (xxx.65.28.16)
Origin IGP, localpref 100, valid, external
Extended Community: RT:65002:10100 ET:8 ★
AddPath ID: RX 0, TX 60635
Last update: Mon Nov 27 16:34:39 2017
BGP routing table entry for xxx.65.28.25:1:[3]:[0]:[32]:[xxx.65.28.25]
Paths: (2 available, best #2)
Advertised to non peer-group peers:
fb-bp01-lc101.xxx(swp1) fb-bp02-lc101.xxx(swp2)
Route [3]:[0]:[32]:[xxx.65.28.25]
65000 65002
xxx.65.28.25 from fb-bp01-lc101.xxx(swp1) (xxx.65.28.4)
Origin IGP, localpref 100, valid, external
Extended Community: RT:65002:10100 ET:8 ★
AddPath ID: RX 0, TX 60618
Last update: Mon Nov 27 14:49:03 2017
Route [3]:[0]:[32]:[xxx.65.28.25]
65000 65002
xxx.65.28.25 from fb-bp02-lc101.xxx(swp2) (xxx.65.28.16)
Origin IGP, localpref 100, valid, external, bestpath-from-AS 65000, best
Extended Community: RT:65002:10100 ET:8 ★
AddPath ID: RX 0, TX 481
Last update: Mon Nov 20 00:19:19 2017
Displayed 2 prefixes (4 paths) with this RD
cumulus@es-accton01:~$
vtyshに入って確認することも可能です。
es-accton01.xxx# show bgp evpn vni
Advertise Gateway Macip: Disabled
Advertise All VNI flag: Enabled
Number of VNIs: 2
Flags: * - Kernel
VNI Orig IP RD Import RT Export RT
* 10001 xxx.65.28.24 xxx.65.28.24:2 65001:10001 65001:10001
* 10100 xxx.65.28.24 xxx.65.28.24:1 65001:10100 65001:10100
es-accton01.xxx#
次にes-accton01のMacテーブルも確認してみます。(★を確認)
cumulus@es-accton01:~$ bridge fdb show
2c:27:d7:4e:96:60 dev swp31s0 vlan 100 master bridge
2c:27:d7:4e:96:60 dev swp31s0 vlan 1 master bridge
8c:ea:1b:c4:ec:31 dev swp31s0 master bridge permanent
8c:ea:1b:c4:ec:35 dev swp32 master bridge permanent
96:9f:e6:70:fa:40 dev vxlan10100 master bridge permanent
2c:27:d7:4e:95:80 dev vxlan10100 vlan 100 offload master bridge ★
00:00:00:00:00:00 dev vxlan10100 dst xxx.65.28.25 self permanent
00:00:00:00:00:00 dev vxlan10100 dst xxx.65.28.29 self permanent
2c:27:d7:4e:95:80 dev vxlan10100 dst xxx.65.28.25 self offload ★
32:de:f4:5f:ef:66 dev vxlan10001 master bridge permanent
2c:27:d7:4e:95:80 dev vxlan10001 vlan 1 offload master bridge ★
00:00:00:00:00:00 dev vxlan10001 dst xxx.65.28.30 self permanent
00:00:00:00:00:00 dev vxlan10001 dst xxx.65.28.25 self permanent
00:00:00:00:00:00 dev vxlan10001 dst xxx.65.28.29 self permanent
2c:27:d7:4e:95:80 dev vxlan10001 dst xxx.65.28.25 self offload ★
cumulus@es-accton01:~$ net show bridge macs
VLAN Master Interface MAC TunnelDest State Flags LastSeen
-------- -------- ----------- ----------------- ------------ --------- ------------- ----------------
1 bridge swp31s0 2c:27:d7:4e:96:60 00:00:15
1 bridge vxlan10001 2c:27:d7:4e:95:80 ★ offload 7 days, 13:21:13
100 bridge swp31s0 2c:27:d7:4e:96:60 00:09:55
100 bridge vxlan10100 2c:27:d7:4e:95:80 ★ offload 00:10:09
untagged vxlan10001 00:00:00:00:00:00 xxx.65.28.25 permanent self 9 days, 19:06:18
untagged vxlan10001 00:00:00:00:00:00 xxx.65.28.29 permanent self 9 days, 19:06:18
untagged vxlan10001 00:00:00:00:00:00 xxx.65.28.30 permanent self 9 days, 19:06:18
untagged vxlan10001 2c:27:d7:4e:95:80 xxx.65.28.25 self, offload 9 days, 19:05:28
untagged vxlan10100 00:00:00:00:00:00 xxx.65.28.25 permanent self 9 days, 19:06:18
untagged vxlan10100 00:00:00:00:00:00 xxx.65.28.29 permanent self 9 days, 19:06:18
untagged vxlan10100 2c:27:d7:4e:95:80 xxx.65.28.25 self, offload 00:10:09
untagged bridge swp31s0 8c:ea:1b:c4:ec:31 permanent 9 days, 21:14:35
untagged bridge swp32 8c:ea:1b:c4:ec:35 permanent 9 days, 21:14:35
untagged bridge vxlan10001 32:de:f4:5f:ef:66 permanent 9 days, 21:14:35
untagged bridge vxlan10100 96:9f:e6:70:fa:40 permanent 9 days, 21:14:35
cumulus@es-accton01:~$ net show evpn mac vni all
VNI 10001 #MACs (local and remote) 2
MAC Type Intf/Remote VTEP VLAN
2c:27:d7:4e:95:80 remote xxx.65.28.25 ★
2c:27:d7:4e:96:60 local swp31s0 1
VNI 10100 #MACs (local and remote) 2
MAC Type Intf/Remote VTEP VLAN
2c:27:d7:4e:95:80 remote xxx.65.28.25 ★
2c:27:d7:4e:96:60 local swp31s0 100
きちんとMacアドレスが載っていることがわかります。最後にpingで疎通を確認してみます。
[root@DL360G7HC-17 ~]# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.331 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.291 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.255 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=0.259 ms
64 bytes from 192.168.1.1: icmp_seq=5 ttl=64 time=0.262 ms
^C
--- 192.168.1.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4000ms
rtt min/avg/max/mdev = 0.255/0.279/0.331/0.034 ms
[root@DL360G7HC-17 ~]# ping 192.168.100.1
PING 192.168.100.1 (192.168.100.1) 56(84) bytes of data.
64 bytes from 192.168.100.1: icmp_seq=1 ttl=64 time=0.240 ms
64 bytes from 192.168.100.1: icmp_seq=2 ttl=64 time=0.272 ms
64 bytes from 192.168.100.1: icmp_seq=3 ttl=64 time=0.268 ms
64 bytes from 192.168.100.1: icmp_seq=4 ttl=64 time=0.270 ms
64 bytes from 192.168.100.1: icmp_seq=5 ttl=64 time=0.259 ms
^C
--- 192.168.100.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.240/0.261/0.272/0.023 ms
5-3:1-1-3. Single HomeでMac Mobilityの確認
今回、IXIAを使って以下のようにA(IP:172.16.0.1/16 MAC: 00:11:01:00:00:01)とB(IP:172.16.100.1/16, MAC: 00:12:01:00:00:01)の設定を逆にすることでMacアドレスを移動しても問題ないか確認してみました。
まずはMacアドレスが移動する前の状況を確認します。
cumulus@es-accton01:~$ net show bridge macs
VLAN Master Interface MAC TunnelDest State Flags LastSeen
-------- -------- ----------- ----------------- ------------ --------- ------------- -----------------
1 bridge vxlan10001 2c:27:d7:4e:95:80 offload 01:19:22
100 bridge swp32 00:11:01:00:00:01 00:02:06
100 bridge vxlan10100 00:12:01:00:00:01 offload 00:09:08
untagged vxlan10001 00:00:00:00:00:00 xxx.65.28.25 permanent self 10 days, 00:32:48
untagged vxlan10001 00:00:00:00:00:00 xxx.65.28.29 permanent self 10 days, 00:32:48
untagged vxlan10001 00:00:00:00:00:00 xxx.65.28.30 permanent self 10 days, 00:32:48
untagged vxlan10001 2c:27:d7:4e:95:80 xxx.65.28.25 self, offload 01:19:22
untagged vxlan10100 00:00:00:00:00:00 xxx.65.28.5 permanent self 10 days, 00:32:48
untagged vxlan10100 00:00:00:00:00:00 xxx.65.28.25 permanent self 10 days, 00:32:48
untagged vxlan10100 00:00:00:00:00:00 xxx.65.28.29 permanent self 10 days, 00:32:48
untagged vxlan10100 00:12:01:00:00:01 xxx.65.28.25 self, offload 00:09:08
untagged bridge swp31s0 8c:ea:1b:c4:ec:31 permanent 10 days, 02:41:05
untagged bridge swp32 8c:ea:1b:c4:ec:35 permanent 10 days, 02:41:05
untagged bridge vxlan10001 32:de:f4:5f:ef:66 permanent 10 days, 02:41:05
untagged bridge vxlan10100 96:9f:e6:70:fa:40 permanent 10 days, 02:41:05
cumulus@es-accton02:~$ net show bridge macs
VLAN Master Interface MAC TunnelDest State Flags LastSeen
-------- -------- ----------- ----------------- ------------ --------- ------------- -----------------
1 bridge swp31s0 2c:27:d7:4e:95:80 00:00:19
100 bridge swp32 00:12:01:00:00:01 00:09:08
100 bridge vxlan10100 00:11:01:00:00:01 offload 00:09:08
untagged vxlan10001 00:00:00:00:00:00 xxx.65.28.24 permanent self 01:19:24
untagged vxlan10001 00:00:00:00:00:00 xxx.65.28.29 permanent self 01:19:24
untagged vxlan10001 00:00:00:00:00:00 xxx.65.28.30 permanent self 01:19:24
untagged vxlan10100 00:00:00:00:00:00 xxx.65.28.5 permanent self 01:19:24
untagged vxlan10100 00:00:00:00:00:00 xxx.65.28.24 permanent self 01:19:24
untagged vxlan10100 00:00:00:00:00:00 xxx.65.28.29 permanent self 01:19:24
untagged vxlan10100 00:11:01:00:00:01 xxx.65.28.24 self, offload 00:09:08
untagged bridge swp31s0 8c:ea:1b:c4:f1:d2 permanent 10 days, 02:41:06
untagged bridge swp31s1 8c:ea:1b:c4:f1:d3 permanent 01:19:48
untagged bridge swp32 8c:ea:1b:c4:f1:d6 permanent 10 days, 02:41:06
untagged bridge vxlan10001 2e:e3:24:b4:2e:d9 permanent 10 days, 02:41:06
untagged bridge vxlan10100 b2:1b:73:96:db:42 permanent 10 days, 02:41:06
cumulus@es-accton01:~$ net show evpn mac vni all
VNI 10001 #MACs (local and remote) 1
MAC Type Intf/Remote VTEP VLAN
2c:27:d7:4e:95:80 remote xxx.65.28.25
VNI 10100 #MACs (local and remote) 2
MAC Type Intf/Remote VTEP VLAN
00:11:01:00:00:01 local swp32 100
00:12:01:00:00:01 remote xxx.65.28.25
cumulus@es-accton01:~$
cumulus@es-accton02:~$ net show evpn mac vni all
VNI 10001 #MACs (local and remote) 1
MAC Type Intf/Remote VTEP VLAN
2c:27:d7:4e:95:80 local swp31s0 1
VNI 10100 #MACs (local and remote) 2
MAC Type Intf/Remote VTEP VLAN
00:11:01:00:00:01 remote xxx.65.28.24
00:12:01:00:00:01 local swp32 100
cumulus@es-accton01:~$ net show bgp evpn route vni 10100 mac 00:11:01:00:00:01
BGP routing table entry for [2]:[0]:[0]:[48]:[00:11:01:00:00:01]
Paths: (1 available, best #1)
Not advertised to any peer
Route [2]:[0]:[0]:[48]:[00:11:01:00:00:01] VNI 10100
Local
xxx.65.28.24 from 0.0.0.0 (xxx.65.28.24)
Origin IGP, localpref 100, weight 32768, valid, sourced, local, bestpath-from-AS Local, best
Extended Community: ET:8 RT:65001:10100
AddPath ID: RX 0, TX 60694
Last update: Mon Nov 27 18:58:03 2017
Displayed 1 paths for requested prefix
cumulus@es-accton02:~$ net show bgp evpn route vni 10100 mac 00:11:01:00:00:01
BGP routing table entry for [2]:[0]:[0]:[48]:[00:11:01:00:00:01]
Paths: (2 available, best #2)
Not advertised to any peer
Route [2]:[0]:[0]:[48]:[00:11:01:00:00:01] VNI 16777213
Imported from xxx.65.28.24:1:[2]:[0]:[0]:[48]:[00:11:01:00:00:01]
65000 65001
xxx.65.28.24 from fb-bp02-lc402.xxx(swp2) (xxx.65.28.23)
Origin IGP, localpref 100, valid, external
Extended Community: RT:65001:10100 ET:8
AddPath ID: RX 0, TX 60782
Last update: Mon Nov 27 18:58:03 2017
Route [2]:[0]:[0]:[48]:[00:11:01:00:00:01] VNI 16777213
Imported from xxx.65.28.24:1:[2]:[0]:[0]:[48]:[00:11:01:00:00:01]
65000 65001
xxx.65.28.24 from fb-bp01-lc402.xxx(swp1) (xxx.65.28.11)
Origin IGP, localpref 100, valid, external, bestpath-from-AS 65000, best
Extended Community: RT:65001:10100 ET:8
AddPath ID: RX 0, TX 60780
Last update: Mon Nov 27 18:58:03 2017
Displayed 2 paths for requested prefix
cumulus@es-accton01:~$ net show bgp evpn route vni 10100 mac 00:12:01:00:00:01
BGP routing table entry for [2]:[0]:[0]:[48]:[00:12:01:00:00:01]
Paths: (2 available, best #2)
Not advertised to any peer
Route [2]:[0]:[0]:[48]:[00:12:01:00:00:01] VNI 16777213
Imported from xxx.65.28.25:1:[2]:[0]:[0]:[48]:[00:12:01:00:00:01]
65000 65002
xxx.65.28.25 from fb-bp01-lc101.xxx(swp1) (xxx.65.28.4)
Origin IGP, localpref 100, valid, external
Extended Community: RT:65002:10100 ET:8
AddPath ID: RX 0, TX 60699
Last update: Mon Nov 27 18:58:03 2017
Route [2]:[0]:[0]:[48]:[00:12:01:00:00:01] VNI 16777213
Imported from xxx.65.28.25:1:[2]:[0]:[0]:[48]:[00:12:01:00:00:01]
65000 65002
xxx.65.28.25 from fb-bp02-lc101.xxx(swp2) (xxx.65.28.16)
Origin IGP, localpref 100, valid, external, bestpath-from-AS 65000, best
Extended Community: RT:65002:10100 ET:8
AddPath ID: RX 0, TX 60697
Last update: Mon Nov 27 18:58:03 2017
Displayed 2 paths for requested prefix
cumulus@es-accton02:~$ net show bgp evpn route vni 10100 mac 00:12:01:00:00:01
BGP routing table entry for [2]:[0]:[0]:[48]:[00:12:01:00:00:01]
Paths: (1 available, best #1)
Not advertised to any peer
Route [2]:[0]:[0]:[48]:[00:12:01:00:00:01] VNI 10100
Local
xxx.65.28.25 from 0.0.0.0 (xxx.65.28.25)
Origin IGP, localpref 100, weight 32768, valid, sourced, local, bestpath-from-AS Local, best
Extended Community: ET:8 RT:65002:10100
AddPath ID: RX 0, TX 60777
Last update: Mon Nov 27 18:58:03 2017
Displayed 1 paths for requested prefix
次にアドレスの移動をしたあと同じコマンドを見てみます。
cumulus@es-accton01:~$ net show bridge macs
VLAN Master Interface MAC TunnelDest State Flags LastSeen
-------- -------- ----------- ----------------- ------------ --------- ------------- -----------------
1 bridge vxlan10001 2c:27:d7:4e:95:80 offload 01:35:23
100 bridge swp32 00:12:01:00:00:01 00:04:43
100 bridge vxlan10100 00:11:01:00:00:01 offload 00:05:14
untagged vxlan10001 00:00:00:00:00:00 xxx.65.28.25 permanent self 10 days, 00:48:50
untagged vxlan10001 00:00:00:00:00:00 xxx.65.28.29 permanent self 10 days, 00:48:50
untagged vxlan10001 00:00:00:00:00:00 xxx.65.28.30 permanent self 10 days, 00:48:50
untagged vxlan10001 2c:27:d7:4e:95:80 xxx.65.28.25 self, offload 01:35:23
untagged vxlan10100 00:00:00:00:00:00 xxx.65.28.5 permanent self 10 days, 00:48:50
untagged vxlan10100 00:00:00:00:00:00 xxx.65.28.25 permanent self 10 days, 00:48:50
untagged vxlan10100 00:00:00:00:00:00 xxx.65.28.29 permanent self 10 days, 00:48:50
untagged vxlan10100 00:11:01:00:00:01 xxx.65.28.25 self, offload 00:05:14
untagged bridge swp31s0 8c:ea:1b:c4:ec:31 permanent 10 days, 02:57:06
untagged bridge swp32 8c:ea:1b:c4:ec:35 permanent 10 days, 02:57:06
untagged bridge vxlan10001 32:de:f4:5f:ef:66 permanent 10 days, 02:57:06
untagged bridge vxlan10100 96:9f:e6:70:fa:40 permanent 10 days, 02:57:06
cumulus@es-accton02:~$ net show bridge macs
VLAN Master Interface MAC TunnelDest State Flags LastSeen
-------- -------- ----------- ----------------- ------------ --------- ------------- -----------------
1 bridge swp31s0 2c:27:d7:4e:95:80 00:00:20
100 bridge swp32 00:11:01:00:00:01 00:05:10
100 bridge vxlan10100 00:12:01:00:00:01 offload 00:07:32
untagged vxlan10001 00:00:00:00:00:00 xxx.65.28.24 permanent self 01:35:26
untagged vxlan10001 00:00:00:00:00:00 xxx.65.28.29 permanent self 01:35:26
untagged vxlan10001 00:00:00:00:00:00 xxx.65.28.30 permanent self 01:35:26
untagged vxlan10100 00:00:00:00:00:00 xxx.65.28.5 permanent self 01:35:26
untagged vxlan10100 00:00:00:00:00:00 xxx.65.28.24 permanent self 01:35:26
untagged vxlan10100 00:00:00:00:00:00 xxx.65.28.29 permanent self 01:35:26
untagged vxlan10100 00:12:01:00:00:01 xxx.65.28.24 self, offload 00:07:33
untagged bridge swp31s0 8c:ea:1b:c4:f1:d2 permanent 10 days, 02:57:08
untagged bridge swp31s1 8c:ea:1b:c4:f1:d3 permanent 01:35:50
untagged bridge swp32 8c:ea:1b:c4:f1:d6 permanent 10 days, 02:57:08
untagged bridge vxlan10001 2e:e3:24:b4:2e:d9 permanent 10 days, 02:57:08
untagged bridge vxlan10100 b2:1b:73:96:db:42 permanent 10 days, 02:57:08
cumulus@es-accton01:~$ net show evpn mac vni all
VNI 10001 #MACs (local and remote) 1
MAC Type Intf/Remote VTEP VLAN
2c:27:d7:4e:95:80 remote xxx.65.28.25
VNI 10100 #MACs (local and remote) 2
MAC Type Intf/Remote VTEP VLAN
00:11:01:00:00:01 remote xxx.65.28.25
00:12:01:00:00:01 local swp32 100
cumulus@es-accton02:~$ net show evpn mac vni all
VNI 10001 #MACs (local and remote) 1
MAC Type Intf/Remote VTEP VLAN
2c:27:d7:4e:95:80 local swp31s0 1
VNI 10100 #MACs (local and remote) 2
MAC Type Intf/Remote VTEP VLAN
00:11:01:00:00:01 local swp32 100
00:12:01:00:00:01 remote xxx.65.28.24
cumulus@es-accton01:~$ net show bgp evpn route vni 10100 mac 00:11:01:00:00:01
BGP routing table entry for [2]:[0]:[0]:[48]:[00:11:01:00:00:01]
Paths: (2 available, best #2)
Not advertised to any peer
Route [2]:[0]:[0]:[48]:[00:11:01:00:00:01] VNI 16777213
Imported from xxx.65.28.25:1:[2]:[0]:[0]:[48]:[00:11:01:00:00:01]
65000 65002
xxx.65.28.25 from fb-bp01-lc101.xxx(swp1) (xxx.65.28.4)
Origin IGP, localpref 100, valid, external
Extended Community: RT:65002:10100 ET:8 MM:1 ★
AddPath ID: RX 0, TX 60705
Last update: Mon Nov 27 19:17:58 2017
Route [2]:[0]:[0]:[48]:[00:11:01:00:00:01] VNI 16777213
Imported from xxx.65.28.25:1:[2]:[0]:[0]:[48]:[00:11:01:00:00:01]
65000 65002
xxx.65.28.25 from fb-bp02-lc101.xxx(swp2) (xxx.65.28.16)
Origin IGP, localpref 100, valid, external, bestpath-from-AS 65000, best
Extended Community: RT:65002:10100 ET:8 MM:1 ★
AddPath ID: RX 0, TX 60703
Last update: Mon Nov 27 19:17:58 2017
Displayed 2 paths for requested prefix
cumulus@es-accton02:~$ net show bgp evpn route vni 10100 mac 00:11:01:00:00:01
BGP routing table entry for [2]:[0]:[0]:[48]:[00:11:01:00:00:01]
Paths: (1 available, best #1)
Not advertised to any peer
Route [2]:[0]:[0]:[48]:[00:11:01:00:00:01] VNI 10100
Local
xxx.65.28.25 from 0.0.0.0 (xxx.65.28.25)
Origin IGP, localpref 100, weight 32768, valid, sourced, local, bestpath-from-AS Local, best
Extended Community: ET:8 RT:65002:10100 MM:1 ★
AddPath ID: RX 0, TX 60787
Last update: Mon Nov 27 19:17:58 2017
Displayed 1 paths for requested prefix
cumulus@es-accton01:~$ net show bgp evpn route vni 10100 mac 00:12:01:00:00:01
BGP routing table entry for [2]:[0]:[0]:[48]:[00:12:01:00:00:01]
Paths: (1 available, best #1)
Not advertised to any peer
Route [2]:[0]:[0]:[48]:[00:12:01:00:00:01] VNI 10100
Local
xxx.65.28.24 from 0.0.0.0 (xxx.65.28.24)
Origin IGP, localpref 100, weight 32768, valid, sourced, local, bestpath-from-AS Local, best
Extended Community: ET:8 RT:65001:10100 MM:1 ★
AddPath ID: RX 0, TX 60700
Last update: Mon Nov 27 19:15:40 2017
Displayed 1 paths for requested prefix
cumulus@es-accton02:~$ net show bgp evpn route vni 10100 mac 00:12:01:00:00:01
BGP routing table entry for [2]:[0]:[0]:[48]:[00:12:01:00:00:01]
Paths: (2 available, best #2)
Not advertised to any peer
Route [2]:[0]:[0]:[48]:[00:12:01:00:00:01] VNI 16777213
Imported from xxx.65.28.24:1:[2]:[0]:[0]:[48]:[00:12:01:00:00:01]
65000 65001
xxx.65.28.24 from fb-bp02-lc402.xxx(swp2) (xxx.65.28.23)
Origin IGP, localpref 100, valid, external
Extended Community: RT:65001:10100 ET:8 MM:1 ★
AddPath ID: RX 0, TX 60786
Last update: Mon Nov 27 19:15:40 2017
Route [2]:[0]:[0]:[48]:[00:12:01:00:00:01] VNI 16777213
Imported from xxx.65.28.24:1:[2]:[0]:[0]:[48]:[00:12:01:00:00:01]
65000 65001
xxx.65.28.24 from fb-bp01-lc402.xxx(swp1) (xxx.65.28.11)
Origin IGP, localpref 100, valid, external, bestpath-from-AS 65000, best
Extended Community: RT:65001:10100 ET:8 MM:1 ★
AddPath ID: RX 0, TX 60784
Last update: Mon Nov 27 19:15:40 2017
Displayed 2 paths for requested prefix
Macアドレスが逆になっていることが確認できるとともに、★の箇所でMM(MacMobility)Extended Communityのシーケンス番号が1になっていることがわかるかと思います。MAC Mobilityに関しては、RFC7432もあわせて参照ください。
5-3:2-2-1. Dual Homeでパケットキャプチャ(Control Plane)
キャプチャしてパケットの中身を見てみる前に、構成をDual Homeに変更します。accton01〜02間の構成をMLAGに設定しなおし、以下のようにanycast ipを設定してActive-Active Modeにします。(EVPN and VXLAN Active-Active Mode参照)
es-accton01の例
# The loopback network interface
auto lo
iface lo inet loopback
address xxx.65.28.24
clagd-vxlan-anycast-ip xxx.65.28.40
上図のようにaccton01でspanすることでパケットをキャプチャしてみます。z9100でclear ip bgp を実施して受け取ったパケットを以下に表示させています。z9100配下サーバーHC-16のMacアドレス(末尾95:80)がEVPN NLRI Type2として広報されており、VTEPアドレスがEVPN NLRI Type3として広報されていることが確認できます。
5-3:2-2-2. Dual Homeでパケットキャプチャ(Data Plane)
つぎにBGP Control Plane側ではなく、VxLANでカプセル化されたData Planeのパケットを見てみます。サーバー同士でpingを打った時のパケットキャプチャが以下です。UnderlayのアドレスとしてSrc,Dst IPにVTEPのアドレス(xxx.65.28.40,41)、OverlayのアドレスとしてSrc, Dst IPにサーバーのアドレス(192.168.1.1,2)を確認できます。
5-3:3-2-2. RFC2544試験 Overlay 20,000flow
性能試験としてRFC2544試験をIXIAで行いました。この試験は、純粋にBackpackの構成で問題ないか確認するために以下の構成のようにシンプルにBackpack1台をIXIAと接続し、Line CardをVTEPとすることで性能を確認しています。
IXIAの結果を以下に貼り付けます、問題なくwire rate出ていることがわかります。
6. さいごに
いかがでしたでしょうか。
今回はデータセンタネットワークの取り組みの中で、Backpackの仕組みと実際の動作試験を紹介しました。今回紹介した以外にも最新の技術を利用して、課題解決していく様々な取り組みがあり、ヤフーにはそのような文化が根付いていると思います。
来年の1月27日は、「Yahoo! JAPAN Tech Conference 2018」が開催され、Yahoo! JAPANを支えるさまざまな領域の技術をテーマにした講演が聞けます。
宣伝になってしまいますが、私も登壇(A-1 14:00-14:50)しますので、良かったら聞きに来ていただけるとうれしいです。
最後まで読んでいただきありがとうございました。
今年も残すところ後わずかですが、皆様良いお年をお過ごしください。
こちらの記事のご感想を聞かせください。
- 学びがある
- わかりやすい
- 新しい視点
ご感想ありがとうございました