SlideShare a Scribd company logo
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でトレース可能に
Software forwarding path
仮想マシンでのネットワーク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
Software forwarding path
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

PPTX
Opnfv handson apex intro
Tomofumi Hayashi
 
PPTX
nftables: the Next Generation Firewall in Linux
Tomofumi Hayashi
 
PDF
OPNFVのコンポーネントと調べ方
Mibu Ryota
 
PDF
How to run P4 BMv2
Kentaro Ebisawa
 
PDF
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
Kentaro Ebisawa
 
PDF
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
Kentaro Ebisawa
 
PPTX
NFVについて
Naoto Umemori
 
PDF
OPNFVをインストールしてみた
Mibu Ryota
 
Opnfv handson apex intro
Tomofumi Hayashi
 
nftables: the Next Generation Firewall in Linux
Tomofumi Hayashi
 
OPNFVのコンポーネントと調べ方
Mibu Ryota
 
How to run P4 BMv2
Kentaro Ebisawa
 
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
Kentaro Ebisawa
 
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
Kentaro Ebisawa
 
NFVについて
Naoto Umemori
 
OPNFVをインストールしてみた
Mibu Ryota
 

What's hot (20)

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

Viewers also liked (20)

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

Similar to Software forwarding path (20)

PDF
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
Etsuji Nakai
 
PDF
20150715 xflow kikuta_final
Kazumasa Ikuta
 
PDF
ICD/CPSY 201412
Takefumi MIYOSHI
 
PPTX
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
NTT DATA Technology & Innovation
 
PDF
20th ACRi Webinar - Kyoto SU Oura-san Presentation
直久 住川
 
PDF
CloudStack Ecosystem Day - OpenStack/Swift
irix_jp
 
PDF
『WAN SDN Controller NorthStarご紹介 & デモ』
Juniper Networks (日本)
 
PDF
Miracle Linux seminer Hatohol and ConoHa
Naoto Gohko
 
PDF
Lagopus Router
Tomoya Hibi
 
PDF
FPGA+SoC+Linux実践勉強会資料
一路 川染
 
PDF
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
Naoto Gohko
 
PDF
pgconfasia2016 lt ssd2gpu
Kohei KaiGai
 
PDF
DPDKを拡張してみた話し
Lagopus SDN/OpenFlow switch
 
PDF
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
 
PDF
NPStudy LT Lagopus Router v19.07
Tomoya Hibi
 
PDF
Neutron Icehouse Update (Japanese)
Akihiro Motoki
 
PPTX
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
NTT DATA Technology & Innovation
 
PDF
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
Naoto Gohko
 
PDF
Lagopus Project (Open Source Conference)
Tomoya Hibi
 
PDF
Faster SRv6 D-plane with XDP
Ryoga Saito
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
Etsuji Nakai
 
20150715 xflow kikuta_final
Kazumasa Ikuta
 
ICD/CPSY 201412
Takefumi MIYOSHI
 
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
NTT DATA Technology & Innovation
 
20th ACRi Webinar - Kyoto SU Oura-san Presentation
直久 住川
 
CloudStack Ecosystem Day - OpenStack/Swift
irix_jp
 
『WAN SDN Controller NorthStarご紹介 & デモ』
Juniper Networks (日本)
 
Miracle Linux seminer Hatohol and ConoHa
Naoto Gohko
 
Lagopus Router
Tomoya Hibi
 
FPGA+SoC+Linux実践勉強会資料
一路 川染
 
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
Naoto Gohko
 
pgconfasia2016 lt ssd2gpu
Kohei KaiGai
 
DPDKを拡張してみた話し
Lagopus SDN/OpenFlow switch
 
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
 
NPStudy LT Lagopus Router v19.07
Tomoya Hibi
 
Neutron Icehouse Update (Japanese)
Akihiro Motoki
 
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
NTT DATA Technology & Innovation
 
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
Naoto Gohko
 
Lagopus Project (Open Source Conference)
Tomoya Hibi
 
Faster SRv6 D-plane with XDP
Ryoga Saito
 

More from Tomofumi Hayashi (7)

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

Software forwarding path

Editor's Notes

  • #8: ...
  • #28: http://lists.p4.org/pipermail/p4-dev_lists.p4.org/2016-May/000328.html