SlideShare a Scribd company logo
Faster SRv6 D-plane with XDP
Ryoga Saito
自己紹介
● 齋藤遼河
● 国立木更津工業高等専門学校 情報工学科 5年
● LINE株式会社
○ ITサービスセンター Verda室 ネットワーク開発チーム
2
JANOG44 “Next Data Center Networking with SRv6” : https://www.janog.gr.jp/meeting/janog44/program/srv6
Background
3
背景
Full L3 CLOS Network
● シングルテナントなネットワーク
● LINEのメッセンジャーやファミリー
サービスなどが稼働
特定サービス専用のネットワーク
● サービス固有の要件を持つサービスが
稼働
● サービス毎にネットワークを構築
・・・ ・・・
4
アンダーレイネットワークの断片化
設計・構築にかかる時間の増加
運用コストの増加
背景
● アンダーレイネットワークを共通化し、運用負荷を軽減する
● オーバレイネットワークでテナント間分離し、それぞれのポリシーを
実現する
5
シンプルなL3のアンダーレイ
柔軟にスケールするオーバレイ
テナント毎に分離・独立したセキュリティ
将来的なサービスチェイニング
SRv6の概要
● Segment ID(SID)
○ Segment(パケットに対する指示)を表す ID
■ Locator: Functionが実行されるノードを示す情報
■ Function: Functionを示す情報
● Segment Routing Header(SRH)
○ IPv6のルーティング拡張ヘッダ
○ Segment List(通るべきSIDのリスト)やSegments Left(Segment List内の現在のSIDのオフセット)など
が含まれている
6
Locator Function
128 bits
SRv6の概要
● Well-known Functions
○ H.Encaps (SR Headend with Encapsulation in an SRv6 Policy):
IPv6ヘッダ, SRHを用いてカプセル化し転送する
7
IPv6 SRH IPv4IPv4
Address SID List
... ...
192.0.2.1 2001:db8::1, …
SRv6の概要
● Well-known Functions
○ End.DX4 (Decapsulation and IPv4 Cross-Connect):
IPv6ヘッダ, SRHを外し、指定されたnexthopに転送する
8
IPv6 SRH IPv4 IPv4
SID nexthop
... ...
192.0.2.1に転送する
2001:db8::1 192.0.2.1
SRv6の概要
● Well-known Functions
○ End.DT4 (Decapsulation and Specific IPv4 Table Lookup):
IPv6ヘッダ, SRHを外し、指定されたルーティングテーブルを用いて転送する
9
IPv6 SRH IPv4 IPv4
SID table
... ...
ルックアップして得られた
nexthopに転送する
destination nexthop
... ...
Routing Table A
2001:db8::1 A 192.0.2.1 ...
LINEにおける現在の構成
10
DataCenter
SRv6 Domain
CLOS Network
Network Node
(SRv6 Node)
Network Node
(SRv6 Node)
Router
Switch Switch
Switch Switch Switch Switch
Hypervisor
(SRv6 Node)
Hypervisor
(SRv6 Node)
Hypervisor
(SRv6 Node)
VM
Tenant A
VM
Tenant B
VM
Tenant A
VM
Tenant B
VM
Tenant C
VM
Tenant D
NFV
(FW, IDS, ...)
Transit Node
SRHの処理はせずIPv6のパケット転送のみを行う
Hypervisor (HV)
• VMからの通信 → encaps
• VMへの通信 → decaps
Network Node (NN)
• 既存ネットワーク/Internet/テナント間・クラスタ間通信の境界
Network Node
(SRv6 Node)
SRv6
unaware
device
LINEにおける現在の構成
11
DataCenter
SRv6 Domain
CLOS Network
Network Node
(SRv6 Node)
Network Node
(SRv6 Node)
Router
Switch Switch
Switch Switch Switch Switch
Hypervisor
(SRv6 Node)
Hypervisor
(SRv6 Node)
Hypervisor
(SRv6 Node)
VM
Tenant A
VM
Tenant B
VM
Tenant A
VM
Tenant B
VM
Tenant C
VM
Tenant D
NFV
(FW, IDS, ...)
Transit Node
SRHの処理はせずIPv6のパケット転送のみを行う
Hypervisor (HV)
• VMからの通信 → encaps
• VMへの通信 → decaps
Network Node (NN)
• 既存ネットワーク/Internet/テナント間・クラスタ間通信の境界
Network Node
(SRv6 Node)
SRv6
unaware
device
LINEにおける現在の構成
12
DataCenter
SRv6 Domain
CLOS Network
Network Node
(SRv6 Node)
Network Node
(SRv6 Node)
Router
Switch Switch
Switch Switch Switch Switch
Hypervisor
(SRv6 Node)
Hypervisor
(SRv6 Node)
Hypervisor
(SRv6 Node)
VM
Tenant A
VM
Tenant B
VM
Tenant A
VM
Tenant B
VM
Tenant C
VM
Tenant D
NFV
(FW, IDS, ...)
Transit Node
SRHの処理はせずIPv6のパケット転送のみを行う
Hypervisor (HV)
• VMからの通信 → encaps
• VMへの通信 → decaps
Network Node (NN)
• 既存ネットワーク/Internet/テナント間・クラスタ間通信の境界
Network Node
(SRv6 Node)
SRv6
unaware
device
LINEにおける現在の構成
13
DataCenter
SRv6 Domain
CLOS Network
Network Node
(SRv6 Node)
Network Node
(SRv6 Node)
Router
Switch Switch
Switch Switch Switch Switch
Hypervisor
(SRv6 Node)
Hypervisor
(SRv6 Node)
Hypervisor
(SRv6 Node)
VM
Tenant A
VM
Tenant B
VM
Tenant A
VM
Tenant B
VM
Tenant C
VM
Tenant D
NFV
(FW, IDS, ...)
Transit Node
SRHの処理はせずIPv6のパケット転送のみを行う
Hypervisor (HV)
• VMからの通信 → encaps
• VMへの通信 → decaps
Network Node (NN)
• 既存ネットワーク/Internet/テナント間・クラスタ間通信の境界
Network Node
(SRv6 Node)
SRv6
unaware
device
テナント内通信
14
DC
SRv6 Domain
CLOS Network
Router
Hypervisor1
C2::/96
NFV
VRF1 Tenant A
SID: C2::A
VM A1
C1::/96
Network Node2
C1::/96
Network Node1
VRF1 Tenant A
SID: C1::A
VRF2 Tenant B
SID: C2::B
VM B1
Hypervisor2
C3::/96
VRF1 Tenant A
SID: C3::A
VM A2
VRF2 Tenant B
SID: C3::B
VM B2
VRF2 Tenant B
SID: C1::B
VRF1 Tenant A
SID: C1::A
VRF2 Tenant B
SID: C1::B
End.DX4
nexthop VRF1
H.Encaps
dst = C3::A
テナント間通信
15
DC
SRv6 Domain
CLOS Network
Router
Hypervisor1
C2::/96
NFV
VRF1 Tenant A
SID: C2::A
VM A1
C1::/96
Network Node2
C1::/96
Network Node1
VRF1 Tenant A
SID: C1::A
VRF2 Tenant B
SID: C2::B
VM B1
Hypervisor2
C3::/96
VRF1 Tenant A
SID: C3::A
VM A2
VRF2 Tenant B
SID: C3::B
VM B2
VRF2 Tenant B
SID: C1::B
VRF1 Tenant A
SID: C1::A
VRF2 Tenant B
SID: C1::B
H.Encaps
dst = C1::A
End.DX4
nexthop VRF1
H.Encaps
dst = C3::B
End.DX4
nexthop VRF2
クラスタ間通信
16
DC
SRv6 Domain
CLOS Network
Router
Hypervisor1
C2::/96
NFV
VRF1 Tenant A
SID: C2::A
VM A1
C1::/96
Network Node2
C1::/96
Network Node1
VRF1 Tenant A
SID: C1::A
VRF2 Tenant B
SID: C2::B
VM B1
Hypervisor3
C4::/96
VRF3 Tenant C
SID: C4::C
VM C1
VRF4 Tenant D
SID: C4::D
VM D1
VRF2 Tenant B
SID: C1::B
VRF3 Tenant C
SID: C1::C
VRF4 Tenant D
SID: C1::D
H.Encaps
dst = C1::A
End.DX4
nexthop VRF1
H.Encaps
dst = C4::D
End.DX4
nexthop VRF4
Cluster A Cluster B
ネットワークノードの処理
17
Default
VRF
Project
VRF
Project
VRF
Cluster
VRF
NIC
VLAN
I/F
NIC
CLOSネットワーク側( SRv6ネットワーク側) NFV側(IPv4ネットワーク側)
Project
VRF
OpenStackの
Project Network毎
OpenStackの
Cluster毎
ネットワークノードの処理
18
Default
VRF
Cluster
VRF
NIC
VLAN
I/F
NIC
Project
VRF
IPv4IPv6 SRH
① End.DX4
ネットワークノードの処理
19
Default
VRF
Cluster
VRF
NIC
VLAN
I/F
NIC
Project
VRF
IPv4
② Project VRFのルックアップ
ネットワークノードの処理
20
Default
VRF
Cluster
VRF
NIC
VLAN
I/F
NIC
Project
VRF
IPv4
③ Cluster VRFのルックアップ
ネットワークノードの処理
21
Default
VRF
Cluster
VRF
NIC
VLAN
I/F
NIC
Project
VRF
IPv4
④ パケットの送信
VLAN
ネットワークノードの処理
22
Default
VRF
Cluster
VRF
NIC
VLAN
I/F
NIC
Project
VRF
FIBのルックアップ x3 FIBのルックアップ FIBのルックアップ
問題点
23
● ネットワーク構成
○ LinuxのVRFの仕様やルーティングを駆使して頑張っているが、構成が複雑になる
● 性能問題
○ ソフトウェアでのFIBのルックアップは比較的重いコストになる
○ 何度もFIBのルックアップを行うため、普通の通信よりも性能が出ない
○ ネットワークノードを模した性能測定では普通の IPv6転送の半分程度しか性能が出ない
普通のIPv6転送: 1.09Mpps (Single Flow, 64bytes)
既存の構成: 0.51Mpps (Single Flow, 64bytes)
データプレーンの実装方法
24
● XDP
● DPDK(VPP)
● Hardware Switch
● …
● L4LBでの使用実績がある
● ARPやICMPの処理をカーネルに依頼することができる
● LinuxカーネルのFIBを利用することができ、既存の構成からの変更点を少なくする
ことができる
XDP(eXpress Data Path)の概要
25
NetworkInterface
Device Driver
eBPF Program
パケットの解析
パケットの書き換え
nexthopのルックアップ
パケットの処理の決定
ProtocolStack
Network
Interface
eBPF Maps
Transmit
Redirect
Pass
userspace kernel
ProgramProgram
Drop
srevo : Faster SRv6 D-plane with XDP
26
srevoの概要
27
● XDPを用いたSRv6のパケット処理基盤
○ さまざまな最適化を行い、既存の方法よりも高速に SRv6のパケットを処理できる
● LINEの用途に特化させることでシンプルな実装
○ 必要のない機能は実装を省いている
○ データプレーン自体は約 500行
srevoの全体像
userspace
kernel
controller
encaps/decapsルールの追加・削除
NICへのeBPFプログラムのアタッチ
統計情報の提供
28
eBPF map
encaps/decapsルールの保管
統計情報の保管
eBPF map
eBPF program
パケットのチェック・書き換え
NIC
eBPF
program
NIC
● ルールの参照
● 統計情報の書き込み
● ルールの書き込み
● 統計情報の参照
decapsの流れ
データの流れ
encapsの流れ
CLOSネットワーク側 NFV側
コントローラ周り
userspace
kernel
controller
encaps/decapsルールの追加・削除
NICへのeBPFプログラムのアタッチ
統計情報の提供
29
eBPF map
encaps/decapsルールの保管
統計情報の保管
eBPF map
eBPF program
パケットのチェック・書き換え
NIC
eBPF
program
NIC
● ルールの参照
● 統計情報の書き込み
● ルールの書き込み
● 統計情報の参照
decapsの流れ
データの流れ
encapsの流れ
CLOSネットワーク側 NFV側
データプレーン周り
userspace
kernel
controller
encaps/decapsルールの追加・削除
NICへのeBPFプログラムのアタッチ
統計情報の提供
30
eBPF map
encaps/decapsルールの保管
統計情報の保管
eBPF map
eBPF program
パケットのチェック・書き換え
NIC
eBPF
program
NIC
● ルールの参照
● 統計情報の書き込み
● ルールの書き込み
● 統計情報の参照
decapsの流れ
データの流れ
encapsの流れ
CLOSネットワーク側 NFV側
最適化の方針
31
Default
VRF
Cluster
VRF
NIC
VLAN
I/F
NIC
Project
VRF
IPv4IPv6 SRH IPv4 IPv4 IPv4VLAN
最適化の方針
32
Default
VRF
Cluster
VRF
NIC
VLAN
I/F
NIC
Project
VRF
IPv4IPv6 SRH
SIDが決まれば通るべき VRFが決定する
SIDとVRFの関係は一度決まれば変更されない
SIDから通るべきVRFを事前に計算すればよい
最適化の方針
33
Default
VRF
Cluster
VRF
NIC
VLAN
I/F
NIC
Project
VRF
① どんなパケットを dropさせるのか?
② Cluster VRFはどれか? ③ VLAN IDは何か?
データプレーンの処理
34
Default
VRF
Cluster
VRF
NIC
VLAN
I/F
NIC
Project
VRF
IPv4IPv6 SRH
① 処理すべきかチェック eBPF map
データプレーンの処理
35
Cluster
VRF
NIC
VLAN
I/F
NIC
IPv4IPv6 SRH
② eBPF mapのルックアップ eBPF map
SID Cluster VRF
... ...
VLAN I/F
...
2001:db8::1 A A
Project
VRF
Default
VRF
データプレーンの処理
36
Cluster
VRF
NIC
VLAN
I/F
NIC
IPv4
③ End.DT4 eBPF map
destination nexthop
... ...
192.0.2.1 ...
Project
VRF
Default
VRF
データプレーンの処理
37
Cluster
VRF
NIC
VLAN
I/F
NIC
IPv4
④ 物理NICのルックアップ eBPF map
VLAN I/F NIC
... ...
A B
Project
VRF
Default
VRF
データプレーンの処理
38
Cluster
VRF
NIC
VLAN
I/F
NIC
⑤ VLANヘッダの挿入
IPv4VLAN
eBPF map
Project
VRF
Default
VRF
データプレーンの処理
39
Cluster
VRF
NIC
VLAN
I/F
NIC
⑥ XDP_REDIRECT
IPv4VLAN
eBPF map
Project
VRF
Default
VRF
データプレーンの処理
40
Default
VRF
Cluster
VRF
NIC
VLAN
I/F
NIC
IPv4VLAN
eBPF map
FIBのルックアップeBPF mapのルックアップ x2
Project
VRF
最適化の内容
● FIBのルックアップを減らすことが出来た
○ 5回 => 1回に減らすことができた
■ 代わりにeBPF mapを2回ルックアップする必要がある
● Project VRFを減らすことが出来た
○ VRFで頑張ってEnd.DT4していた部分が無くなったので余計な VRFが要らなくなった
41
Performance
42
測定環境
● Traffic Generator
○ Intel Xeon E5-2630 x2, 256GB
○ Intel XL710 40GbE 2port
○ Linux 3.10
○ TRex v2.50
● Encaps Node / Decaps Node
○ Intel Xeon Silver 4114 x2, 128GB
○ Mellanox MCX516A-CCAT 100GbE 2port
○ Linux 5.3 rc5
● L3SW
○ Mellanox SN2700
○ Cumulus Linux 3.5.3
43
測定結果
44
1.71 [Mpps]
1.09 [Mpps]
0.51 [Mpps]
Linuxを用いた実装に比べ
約3.4倍処理できている
測定結果
45
13.0 [Mpps]
9.07 [Mpps]
3.63 [Mpps]
Linuxを用いた実装に比べ
約3.6倍処理できている
XDPを選択してよかったこと
● Linuxカーネルの恩恵を受けることができる
○ ARPの処理やFIBの管理はカーネルに依頼することができる
● 必要な機能だけ実装するのでシンプルに保つことができる
○ データプレーンのプログラム自体は 500行程度
○ 新しい機能が欲しくなれば実装すればよくなる
● 既存のコントロールプレーンを利用できる
○ 大規模な変更を加えることなく、今動いている SRv6の仕組みにそのまま乗っかれる
○ srevoが問題を起こした際のフォールバックとして既存の実装がそのまま利用できる
46
苦労した点
● デバッグがしづらい
○ tcpdump等のデバッグツールが使えないのでパケットが消えたときにすごく困る
● カーネルのすべての情報に触れるわけではない
○ FIBのルックアップをしても VLAN I/Fの情報しか取れなく、物理 NICとの対応関係は
自分で管理する必要がある
47
今後の課題
● デバッガブルなプログラムにする
○ 監視用のインターフェースの実装
○ デバッグモードの実装
● Service Function Chainingに対応する
○ 複数のSIDでencapsできるようにする
○ End.DT4以外のFunctionの実装(EndやEnd.Xなど)
● さらなる最適化
○ decaps / encapsの処理の高速化
○ ルールを格納するデータ構造の持ち方
48
議論したいポイント
● この取り組み(DCNにSRv6を用いることやXDPを用いた最適化)について
どう思いましたか?
● SRv6を用いてどのような世界が実現できると嬉しいと思いますか?
● データプレーンのコントローラにどんな機能があると嬉しいと思いますか?(デバッ
グ機能など)
49

More Related Content

PDF
大規模サービスを支えるネットワークインフラの全貌
PDF
SRv6 study
PDF
Kernel vm-2014-05-25
PDF
BGP Unnumbered で遊んでみた
PDF
Fpga local 20130322
PDF
NetBSD/evbarm on Raspberry Pi
PDF
High Performance Networking with DPDK & Multi/Many Core
PDF
Hydrogen → Helium での Linux kernel の違い
大規模サービスを支えるネットワークインフラの全貌
SRv6 study
Kernel vm-2014-05-25
BGP Unnumbered で遊んでみた
Fpga local 20130322
NetBSD/evbarm on Raspberry Pi
High Performance Networking with DPDK & Multi/Many Core
Hydrogen → Helium での Linux kernel の違い

What's hot (20)

PDF
DPDKを用いたネットワークスタック,高性能通信基盤開発
PDF
大規模DCのネットワークデザイン
PPTX
ハードウェア技術の動向 2015/02/02
PPTX
FD.io VPP事始め
PDF
Vyatta 201310
PPTX
Lagopus workshop@Internet weekのそば
PDF
マルチコアとネットワークスタックの高速化技法
PDF
低遅延10Gb EthernetによるGPUクラスタの構築と性能向上手法について
PDF
"SRv6の現状と展望" ENOG53@上越
KEY
MAP 実装してみた
PDF
Linux packet-forwarding
PDF
Opencontraildays2014dist 140514051248-phpapp01
PPTX
フロー技術によるネットワーク管理
PDF
OpenContrailとnfv
PDF
Ethernetの受信処理
PDF
GPUを用いたSSLリバースプロキシの実装についての論文を読んだ
PDF
閉域網接続の技術入門
PDF
Opencontrailの基本 for オープンソースカンファレンス2014 Kansai@Kyoto
PDF
Open contrail days 2014 fall
PDF
2016 interop sdi_showcase_contrail
DPDKを用いたネットワークスタック,高性能通信基盤開発
大規模DCのネットワークデザイン
ハードウェア技術の動向 2015/02/02
FD.io VPP事始め
Vyatta 201310
Lagopus workshop@Internet weekのそば
マルチコアとネットワークスタックの高速化技法
低遅延10Gb EthernetによるGPUクラスタの構築と性能向上手法について
"SRv6の現状と展望" ENOG53@上越
MAP 実装してみた
Linux packet-forwarding
Opencontraildays2014dist 140514051248-phpapp01
フロー技術によるネットワーク管理
OpenContrailとnfv
Ethernetの受信処理
GPUを用いたSSLリバースプロキシの実装についての論文を読んだ
閉域網接続の技術入門
Opencontrailの基本 for オープンソースカンファレンス2014 Kansai@Kyoto
Open contrail days 2014 fall
2016 interop sdi_showcase_contrail
Ad

Similar to Faster SRv6 D-plane with XDP (20)

PDF
『WAN SDN Controller NorthStarご紹介 & デモ』
PDF
単なるキャッシュじゃないよ!?infinispanの紹介
PPTX
Network as a Service - Data plane evolution and abstraction by NSM
PPTX
VPP事始め
PDF
第11回ACRiウェビナー_東工大/坂本先生ご講演資料
PDF
Open contraildays2014
PDF
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
PPTX
共有用 2012 r2hyper-v_nw仮想化
PDF
AS45679 on FreeBSD
PDF
Open stack reference architecture v1 2
PDF
データ爆発時代のネットワークインフラ
PPTX
ミドクラ様講演 OpenStack最新情報セミナー 2014年4月
PDF
WALをバックアップとレプリケーションに使う方法
PDF
OpenStackネットワーキング管理者入門 - OpenStack最新情報セミナー 2014年8月
PDF
Stratosphereが提供するSDN/OpenFlow技術の現在と未来
 
PDF
OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月
PDF
NetScaler Basic
PDF
ShowNetにおけるバックボーン設計と運用について語る_ShowNet2021_conf_mini_3_sr-based_backbone
PDF
serverless
PDF
INF-018_OS の中で SDN 抗争勃発!? ~主役を争う VXLAN vs NVGRE~
『WAN SDN Controller NorthStarご紹介 & デモ』
単なるキャッシュじゃないよ!?infinispanの紹介
Network as a Service - Data plane evolution and abstraction by NSM
VPP事始め
第11回ACRiウェビナー_東工大/坂本先生ご講演資料
Open contraildays2014
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
共有用 2012 r2hyper-v_nw仮想化
AS45679 on FreeBSD
Open stack reference architecture v1 2
データ爆発時代のネットワークインフラ
ミドクラ様講演 OpenStack最新情報セミナー 2014年4月
WALをバックアップとレプリケーションに使う方法
OpenStackネットワーキング管理者入門 - OpenStack最新情報セミナー 2014年8月
Stratosphereが提供するSDN/OpenFlow技術の現在と未来
 
OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月
NetScaler Basic
ShowNetにおけるバックボーン設計と運用について語る_ShowNet2021_conf_mini_3_sr-based_backbone
serverless
INF-018_OS の中で SDN 抗争勃発!? ~主役を争う VXLAN vs NVGRE~
Ad

Faster SRv6 D-plane with XDP