SlideShare a Scribd company logo
1 of 30
Software Forwarding Path
@Wakame Users Group
December 2, 2016
Tomofumi Hayashi (s1061123)
Software Forwarding?
ソフトウェア でパケット"転送する"
ソフトウェアでパケット"転送処理を書く"
本日のお題はソフトウェア(CPU)でパケットを転送するお話です。
Hardware Forwarding and Software Forwarding
Processing ASIC FPGA/CPLD/or so Software
Packet Forwarding Hardware Forwarding
by ASIC
Cisco/Juniper
Alaxala (onsale!)
Programabble Chip
Forwarding
IXP200, Cisco QFP,
Barefood Networks
Tofino
Software Forwarding
Today's Topic
Speed Fast Middle Slow
Feature Fixed On-demand On-demand
Cost Expensive Bit expensive Inexpensive
Software Forwarding Technology
Forwarding Framework
Intel DPDK (Data Plane Development Kit)
ODP (Open Data Plane project)
netmap
XDP (eXpress Data Path)
Forwarding Application
Open vSwitch
Lagopus
Software Forwarding Technology
Forwarding Framework
Intel DPDK (Data Plane Development Kit)
ODP (Open Data Plane project)
netmap
XDP (eXpress Data Path)
DPDK
http://dpdk.org
2011にIntel (+6wind?)で立ち上げ
APIと実装を提供 (コードは主にBSD License)
Linux/FreeBSDの上でDPDKのライブラリを使ってアプリケーションが動く
x86_64, ARM64, ppcをサポート
Environment Abstraction Layer = EAL等でCPUのスケジュールも抽象化
NICはInterruptではなくPollで動作 → Driverの修正が必要
NICはプログラムが占有するので他のプログラムは使用不可
DPDKの動作
Kernel
NIC
Process
Kernel
NIC
Process
DPDK
EAL
● Kernel/プロセス間のメモリコピー
● NICからのCPU割り込みによるCPUの処理の発生
● CPUのコンテキストスイッチ
● 物理メモリを直接プロセスにマップ
● NICをKernel管理下からProcess直下に
● NICの割り込みは無効に
● CPUは占有させてLinuxのスケジューラから独立
=> ネットワーク専用としての独立したリソースへ
DPDKの実装例を見る
http://dpdk.org/browse/dpdk/tree/
http://dpdk.org/browse/dpdk/tree/examples/l2fwd/main.c
RTE: Run Time Environment
EAL: Environment Abstraction Layer
DPDKのパフォーマンス
"Intel® Open Network Platform Release 2.1 Performance Test Report"によると
Xeon E5-2695 v4で
2 Core利用 (全18Core, HyperThread/SMT無効, Tx,Rxに1Core)で
128 bytes以上のパケットの場合に
物理間のL3のパケット転送で
40G Wire rate (33,783,767 pps)を達成
ODP (Open Data Plane)
http://www.opendataplane.org/
2013にLinaroが開始
APIの策定が主な作業
いくつかの実装を提供 (BSD License)
内容はほぼDPDKと同じ
CAVIUM, freescale, TI, Linaroなどがチップ向けに実装を提供
ARM系の非Intel系列?
その他にいつかの参考実装を提供
netmap
http://info.iet.unipi.it/~luigi/netmap/
Luigi Rizzo (Università di Pisa)が2011年に発表
APIと実装を提供 (BSD License?)
OSのドライバに修正が必要
割り込み+Pollのハイブリッド
VALEというswitch実装を提供
FreeBSDには2011年からHEADにmerge済み
IIJではpacket generatorに利用
XDP (eXpress Data Path)
2015年にLinux FoundationがIO Visor Projectを開始 (SUSEが立ち上げ?)
XDPはIO Visorの一部
APIと実装を提供 (Apache 2.0 License)
LinuxのDatapathの上に実装
XDPではPacketがkernelに来てほぼ一番最初のタイミングでフィルター等が可
能
DDoS等のパケットを ドロップさせる等の軽めな処理が可能
LinuxのIP/TCPスタックもそのまま利用可能
XDP (eXpress Data Path) = eBPF?
2015年にLinuxのkprobeがeBPFをカーネル内に実装 (sandbox+JIT)
eBPF = BFPのVMなどを拡張した形
(https://events.linuxfoundation.org/sites/events/files/slides/tracing-linux-
ezannoni-linuxcon-ja-2015_0.pdf)
IO VisorのbccでLLVM/clangを使ってCからeBPFのコードを生成可能
bcc = BPF Compiler Collection
(ほぼ)なんでもeBPFでトレース可能に
仮想マシンでのネットワークIO
→ Qemuでパケットはどう取り扱うのか?
コントロール (仮想NICの制御) とデータ (仮想NICからのデータパス)
virtio-net (VMに適したNIC実装, 仮想/物理の割り込みを削減)
vhost-net (仮想物理間のデータ転送を最適化/i.e. qemu - tap間)
vhost-user (dpdkユーザプロセス間/VM間でのzero-copyを可能に)
server/client形式
Hugetlbが必要
qemuはclientのみ可能
Guest
qemu
kernel
virtio-net
vhost-net
dpdk
app
vhost-user
Software Forwarding Technology
Forwarding Framework
Intel DPDK (Data Plane Development Kit)
ODP (Open Data Plane project)
netmap
XDP (eXpress Data Path)
Forwarding Application
Open vSwitch
Lagopus
Software Forwarding Technology
Forwarding Application
Open vSwitch
Lagopus
VPP (fd.io)
Open vSwitch
http://openvswitch.org/
Niciraのコードがベースで、その後Linux foundation projectに (Apache 2
license)
Open Flowのswitchとして開発, forwardingはkernelで実施
OpenFlowベースでのフォワーディング
多くのアプリケーションが利用
Wakame-vdc
OpenVNet
OpenStack
Lagopus
http://www.lagopus.org/
NTTの研究所で2014年から開発 (Apache 2.0ライセンス)
OpenFlowでのフォワーディングコントロール
最近はGoBGPとの連携等を予定
Version 0.3 (2016 Q4)
Routing stack integration (Quaga, GOBGP, opensnaproute)
Segment Routing (SPRING) routing stack and its extension for Lagopus
GRPC-based switch control and flow control
Support of YANG-model or OpenConfig
VPP (fd.io)
http://fd.io/
CiscoのコードがベースでLinux foundation projectに (Apache 2 license)
IP/TCP ベースのフォワーディング
VLAN, IPv4/v6, NAT, MAP-E等サポート
https://wiki.fd.io/view/VPP/Features
Pluginの拡張によってフォワーディングを追加することが可能
CLIでの操作も可能だが、Netconf/YANGやPython/C APIでの操作も可能
Software Forwarding Technology
Forwarding Framework
Intel DPDK (Data Plane Development Kit)
ODP (Open Data Plane project)
netmap
XDP (eXpress Data Path)
Forwarding Application
Open vSwitch
Lagopus
P4: Program Protocol-independent Packet Processors
http://p4.org/
2013年にBarefood Networks/Stanford Univ./Princeton Univ.で開発開始
ONOSとかのコンテキストで開発?
Open vSwitchのテストでも活用
P4: Program Protocol-independent Packet Processors
http://p4.org/
2013年にBarefood Networks/Stanford Univ./Princeton Univ.で開発開始
ONOSとかのコンテキストで開発?
Open vSwitchのテストでも活用
P4: Program Protocol-independent Packet Processors
http://p4.org/
2013年にBarefood Networks/Stanford Univ./Princeton Univ.で開発開始
ONOSとかのコンテキストで開発?
Open vSwitchのテストでも活用 ⇒ M4
P4 and OpenFlow?
OpenFlowと同じでforwardingのモデル/記述化
OpenFlowと違うのはtext notationであるということ
OpenFlowはコンポーネント間のプロトコルを規定
P4はInputを規定していて、outputは気にしない
p4 -> VHDL等に変換、専用のチップに入れることを想定
実装は各種ベンダに依存
Barefood Networks / Tofino
Netronome / Agilio CX/LX
P4 on Software Forwarding?
P4 "behavioral-model" (bmv2)
https://github.com/p4lang/behavioral-model
v1(p4c-behavioral) -> v2へ
P4をp4c-bmでjsonに変換、targetに対して使用
Targetとは?
P4のフォワーディングモデル例でありシミュレーター
simple_router
single pipeline ・ egress_portで指定
P4 on Software Forwarding? (Cont'd)
P4 to eBPF
iovisor bcc supports P4 to eBPF
Ben Pfaff (Nicira/VMWare?)が"P4 and Open vSwitch"
http://openvswitch.org/support/slides/p4.pdf
https://github.com/blp/ovs-reviews/releases/tag/p4-workshop
2015で停止
William (Cheng-chun) Tu from VMwareさんがOVSにeBPFの実装を発表
http://openvswitch.org/support/ovscon2016/7/1120-tu.pdf
Software Forwarding Technology
Forwarding Framework
Intel DPDK (Data Plane Development Kit)
ODP (Open Data Plane project)
netmap
XDP (eXpress Data Path)
Forwarding Application
Open vSwitch
Lagopus
Thank you!

More Related Content

What's hot

What's hot (20)

ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
 
"OPEN NETWORKING" に向けた Management / Data Plane の動向
"OPEN NETWORKING" に向けた Management / Data Plane の動向"OPEN NETWORKING" に向けた Management / Data Plane の動向
"OPEN NETWORKING" に向けた Management / Data Plane の動向
 
VPP事始め
VPP事始めVPP事始め
VPP事始め
 
Container Networking Deep Dive
Container Networking Deep DiveContainer Networking Deep Dive
Container Networking Deep Dive
 
Project calico introduction - OpenStack最新情報セミナー 2017年7月
Project calico introduction - OpenStack最新情報セミナー 2017年7月Project calico introduction - OpenStack最新情報セミナー 2017年7月
Project calico introduction - OpenStack最新情報セミナー 2017年7月
 
ネットワークAPI のあれこれ (ENOG37)
ネットワークAPI のあれこれ (ENOG37)ネットワークAPI のあれこれ (ENOG37)
ネットワークAPI のあれこれ (ENOG37)
 
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
 
Lagopus Router v19.07.1
Lagopus Router v19.07.1Lagopus Router v19.07.1
Lagopus Router v19.07.1
 
Open stack+lagopus できるかな
Open stack+lagopus できるかなOpen stack+lagopus できるかな
Open stack+lagopus できるかな
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキング
 
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch Usecases
 
Lagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそばLagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそば
 
FPGAX6_hayashi
FPGAX6_hayashiFPGAX6_hayashi
FPGAX6_hayashi
 
Lagopusで試すFW
Lagopusで試すFWLagopusで試すFW
Lagopusで試すFW
 
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
 
ネットワークプログラマビリティ勉強会
ネットワークプログラマビリティ勉強会ネットワークプログラマビリティ勉強会
ネットワークプログラマビリティ勉強会
 
Lagopus & NFV with Vhost (Tremaday#9)
Lagopus & NFV with Vhost (Tremaday#9)Lagopus & NFV with Vhost (Tremaday#9)
Lagopus & NFV with Vhost (Tremaday#9)
 
Lagopus performance
Lagopus performanceLagopus performance
Lagopus performance
 
Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続
 

Viewers also liked

Viewers also liked (20)

新人がWakame-VDCとOpenVNetを動かしてみた
新人がWakame-VDCとOpenVNetを動かしてみた新人がWakame-VDCとOpenVNetを動かしてみた
新人がWakame-VDCとOpenVNetを動かしてみた
 
Open contrailmeetup 20161207
Open contrailmeetup 20161207Open contrailmeetup 20161207
Open contrailmeetup 20161207
 
GoBGP : yet another OSS BGPd
GoBGP : yet another OSS BGPdGoBGP : yet another OSS BGPd
GoBGP : yet another OSS BGPd
 
OpenConfig: collaborating to enable programmable network management
OpenConfig: collaborating to enable programmable network managementOpenConfig: collaborating to enable programmable network management
OpenConfig: collaborating to enable programmable network management
 
03 estrategia-ddos
03 estrategia-ddos03 estrategia-ddos
03 estrategia-ddos
 
Bird in show_net
Bird in show_netBird in show_net
Bird in show_net
 
TIAD 2016 : Network automation with Ansible and OpenConfig/YANG
TIAD 2016 : Network automation with Ansible and OpenConfig/YANGTIAD 2016 : Network automation with Ansible and OpenConfig/YANG
TIAD 2016 : Network automation with Ansible and OpenConfig/YANG
 
2014年10月江戸前セキュリティ勉強会資料 -セキュリティ技術者になるには-
2014年10月江戸前セキュリティ勉強会資料 -セキュリティ技術者になるには-2014年10月江戸前セキュリティ勉強会資料 -セキュリティ技術者になるには-
2014年10月江戸前セキュリティ勉強会資料 -セキュリティ技術者になるには-
 
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
 
Model-driven Network Management
Model-driven Network ManagementModel-driven Network Management
Model-driven Network Management
 
SDN in the Management Plane: OpenConfig and Streaming Telemetry
SDN in the Management Plane: OpenConfig and Streaming TelemetrySDN in the Management Plane: OpenConfig and Streaming Telemetry
SDN in the Management Plane: OpenConfig and Streaming Telemetry
 
IoTとOpenFlowのライトニングトーク
IoTとOpenFlowのライトニングトークIoTとOpenFlowのライトニングトーク
IoTとOpenFlowのライトニングトーク
 
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
 
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools
 
Devops in Networking
Devops in NetworkingDevops in Networking
Devops in Networking
 
GPD WINが来た!
GPD WINが来た!GPD WINが来た!
GPD WINが来た!
 
Onieで遊んでみようとした話
Onieで遊んでみようとした話Onieで遊んでみようとした話
Onieで遊んでみようとした話
 
今よりも少し(?)昔、 Windowsを作ろうとした話
今よりも少し(?)昔、 Windowsを作ろうとした話今よりも少し(?)昔、 Windowsを作ろうとした話
今よりも少し(?)昔、 Windowsを作ろうとした話
 
新生Lagopus2017(仮称)
新生Lagopus2017(仮称)新生Lagopus2017(仮称)
新生Lagopus2017(仮称)
 
OpenFlowでいろんなプロトコルを 話そうとするとどうなるか
OpenFlowでいろんなプロトコルを 話そうとするとどうなるかOpenFlowでいろんなプロトコルを 話そうとするとどうなるか
OpenFlowでいろんなプロトコルを 話そうとするとどうなるか
 

Similar to Software forwarding path

OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
Etsuji Nakai
 
CloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/SwiftCloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/Swift
irix_jp
 

Similar to Software forwarding path (20)

OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
 
20150715 xflow kikuta_final
20150715 xflow kikuta_final20150715 xflow kikuta_final
20150715 xflow kikuta_final
 
ICD/CPSY 201412
ICD/CPSY 201412ICD/CPSY 201412
ICD/CPSY 201412
 
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
 
CloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/SwiftCloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/Swift
 
『WAN SDN Controller NorthStarご紹介 & デモ』
『WAN SDN Controller NorthStarご紹介 & デモ』『WAN SDN Controller NorthStarご紹介 & デモ』
『WAN SDN Controller NorthStarご紹介 & デモ』
 
Miracle Linux seminer Hatohol and ConoHa
Miracle Linux seminer Hatohol and ConoHaMiracle Linux seminer Hatohol and ConoHa
Miracle Linux seminer Hatohol and ConoHa
 
Lagopus Router
Lagopus RouterLagopus Router
Lagopus Router
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API DragonJOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
 
pgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpupgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpu
 
DPDKを拡張してみた話し
DPDKを拡張してみた話しDPDKを拡張してみた話し
DPDKを拡張してみた話し
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
 
NPStudy LT Lagopus Router v19.07
NPStudy LT Lagopus Router v19.07NPStudy LT Lagopus Router v19.07
NPStudy LT Lagopus Router v19.07
 
Neutron Icehouse Update (Japanese)
Neutron Icehouse Update (Japanese)Neutron Icehouse Update (Japanese)
Neutron Icehouse Update (Japanese)
 
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
 
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
 
Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)
 
Faster SRv6 D-plane with XDP
Faster SRv6 D-plane with XDPFaster SRv6 D-plane with XDP
Faster SRv6 D-plane with XDP
 
runC概要と使い方
runC概要と使い方runC概要と使い方
runC概要と使い方
 

More from Tomofumi Hayashi

More from Tomofumi Hayashi (7)

CNIふぉーびぎなーず
CNIふぉーびぎなーずCNIふぉーびぎなーず
CNIふぉーびぎなーず
 
4 rhtn tohayash-multus
4 rhtn tohayash-multus4 rhtn tohayash-multus
4 rhtn tohayash-multus
 
Opnfv primer how to get into opnfv
Opnfv primer  how to get into opnfv Opnfv primer  how to get into opnfv
Opnfv primer how to get into opnfv
 
コンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用についてコンテナのネットワークインターフェース その実装手法とその応用について
コンテナのネットワークインターフェース その実装手法とその応用について
 
OpenStack Summit Boston DMA Appendix
OpenStack Summit Boston DMA AppendixOpenStack Summit Boston DMA Appendix
OpenStack Summit Boston DMA Appendix
 
OPNFV Meetup Tokyo #1 / Projects Summary
OPNFV Meetup Tokyo #1 / Projects SummaryOPNFV Meetup Tokyo #1 / Projects Summary
OPNFV Meetup Tokyo #1 / Projects Summary
 
Ocaml lecture slides 01 at axsh
Ocaml lecture slides 01 at axshOcaml lecture slides 01 at axsh
Ocaml lecture slides 01 at axsh
 

Software forwarding path

Editor's Notes

  1. ...
  2. http://lists.p4.org/pipermail/p4-dev_lists.p4.org/2016-May/000328.html