Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Software forwarding path

Avatar for Tomofumi Hayashi Tomofumi Hayashi
December 05, 2016
13

Software forwarding path

Presented at Wakame Users group #14

Avatar for Tomofumi Hayashi

Tomofumi Hayashi

December 05, 2016
Tweet

Transcript

  1. 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
  2. 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
  3. Software Forwarding Technology Forwarding Framework Intel DPDK (Data Plane Development

    Kit) ODP (Open Data Plane project) netmap XDP (eXpress Data Path)
  4. 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はプログラムが占有するので他のプログラムは使用不可
  5. DPDKの動作 Kernel NIC Process Kernel NIC Process DPDK EAL •

    Kernel/プロセス間のメモリコピー • NICからのCPU割り込みによるCPUの処理の発生 • CPUのコンテキストスイッチ • 物理メモリを直接プロセスにマップ • NICをKernel管理下からProcess直下に • NICの割り込みは無効に • CPUは占有させてLinuxのスケジューラから独立 => ネットワーク専用としての独立したリソースへ
  6. 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)を達成
  7. ODP (Open Data Plane) http://www.opendataplane.org/ 2013にLinaroが開始 APIの策定が主な作業 いくつかの実装を提供 (BSD License)

    内容はほぼDPDKと同じ CAVIUM, freescale, TI, Linaroなどがチップ向けに実装を提供 ARM系の非Intel系列? その他にいつかの参考実装を提供
  8. 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に利用
  9. 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スタックもそのまま利用可能
  10. 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でトレース可能に
  11. 仮想マシンでのネットワーク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
  12. 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
  13. Open vSwitch http://openvswitch.org/ Niciraのコードがベースで、その後Linux foundation projectに (Apache 2 license) Open

    Flowのswitchとして開発, forwardingはkernelで実施 OpenFlowベースでのフォワーディング 多くのアプリケーションが利用 Wakame-vdc OpenVNet OpenStack
  14. 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
  15. 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での操作も可能
  16. 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
  17. 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で指定
  18. 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
  19. 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