Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
FPGAで作る
OpenFlow Switch
FPGAエクストリーム・コンピューティング
第6回 (2015/02/01)
Kentaro Ebisawa | 海老澤 健太郎 | Twitter: @ebiken
注意書き | Disclaimer
• 本発表は
「OpenFlow Switch開発に関連した情報を一般に広める事」
を目的としています。
特定製品の設計や仕様を解説するものではありません。
• そのため、ハードウェア構成や機能ブロックなどは...
自己紹介 |Self-introduction
今
• OpenFlow Switchの開発マネジメント
@某ベンチャー企業
(Riava Networks, Inc.)
昔
• ベンチャー企業の技術系Role色々
• アジア展開や立ち上げフェ...
本日の発表内容 | List of Contents
1. “OpenFlow Switch” is 何?
(Layer 2/3 Switchと比べながら)
2. なぜFPGAを使って作るのか?
3. OpenFlow Switch の構成
4...
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 5
“OpenFlow Switch” is 何?
Layer 2 / 3 Swit...
従来のネットワークスイッチの動作 (Layer 2)
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 6
MAC Address P...
従来のネットワークスイッチの動作 (Layer 3)
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 7
Subnet (LPM) ...
OpenFlow スイッチの動作
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 8
Flow Table x N個
1 2 3 4...
どのパケットを? OpenFlow Match Field : 40 Fields, 1261 bits
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01...
どう処理する? OpenFlow Instruction / Action
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 10
I...
OpenFlow Pipeline
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 11
OpenFlow Pipeline
Flo...
Layer 2/3 Switch と OpenFlow Switch の違い
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 12
...
どのパケットを どう処理する?
Layer 2 MAC Address
宛先MAC Addressの
ホストがいるポートへ転送
Layer 3 IP Address
宛先MAC Addressを変更
Next Hopへ転送
OpenFlow
コ...
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 14
なぜFPGAを使って作るのか?
FPGAで OpenFlow Switch を作る3つの理由
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 15
従来型スイッチ用...
従来型スイッチ用チップの仕様に縛られない
•OpenFlow Pipelineを実現できない
•TCAM容量の不足
•既存Forwarding Tableの流用
•Table毎の使用可能なフィールドが限定的
•サポートする Instructio...
ユースケースを元にした継続的な改良
•OpenFlowはネットワークをプログラマブルに。
•ビジネスモデルで必要な機能・サイジングバランスが変わる
• Group, Meter, QoS, Packet-in/out … どれが重要?
•Dat...
プロトコル仕様の変更に対応
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 18
2010 2011 2012 2013 2014
...
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 19
OpenFlow Switchの構成
Using Hardware Datap...
OpenFlow Switch | Software 構成
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 20
Hardware ...
OpenFlow Switch ~ Hardware Datapath実装パターン
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken ...
OpenFlow Switch ~ Hardware Datapath実装パターン
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken ...
OpenFlow Switch ~ Hardware Datapath実装パターン
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken ...
OpenFlow Switch ~ Hardware Datapath実装パターン
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken ...
OpenFlow Switch ~ Hardware Datapath実装パターン
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken ...
OpenFlow Switch | Software 構成
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 26
Hardware ...
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 27
CPU Board
(OpenFlow Agent)
Physical Por...
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 28
CPU Board
(OpenFlow Agent)
Physical Por...
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 29
OpenFlow Switch 設計の課題
(トレードオフ)
検索Key長 /...
Layer 2 Forwarding (MAC learning) Table 検索 (CAM)
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @...
Layer 2 Forwarding (MAC learning) Table 検索 (Hash Table)
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02...
Layer 3 Forwarding Table 検索 (TCAM - Longest Prefix Match)
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/...
OpenFlow Flow Table (TCAM – Simple design)
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken...
Search Key 幅に対する対応 (TCAM使用例)
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 34
参考文献:”OF-D...
Search Key 幅に対する対応 (TCAM使用例)
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 35
MATCHフィールド...
Priorityを考慮したUpdateの効率化(TCAM使用例)
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 36
全エントリP...
パケット処理方法によるトレードオフ
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 37
Layer 3 Switch
• MAC ...
パケット処理方法によるトレードオフ
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 38
MAC DA MAC SA VLAN Et...
パケット処理方法によるトレードオフ
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 39
MAC DA MAC SA VLAN Et...
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 40
試したい!という方の為に
FPGAでパケット処理
楽しいですよ!
• Digilent Inc. で購入可能
• Part# 410-301P-KIT
• Academic:$1,695 (≒20万円)
• 定価:$24,500(≒300万円)
試してみたい人 | How to try?
• NetFPGA ...
試してみたい人 | How to try?
• FPGA上のOpenFlow実装
• ちょっと古いけど
•  Design Document
• Block Diagram
• State Machine
•  Source Code
• ...
FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 43
FPGAでネットワーク
ご興味あるかたは是非ご連絡を。
Let’s have ...
Upcoming SlideShare
Loading in …5
×

FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6

OpenFlow Switchは従来の Layer 2/3 Switchと異なり、より柔軟なパケットマッチング・変換・転送処理を実現するため、従来のネットワーク・プロセッサとは異なる設計が必要となります。
本発表では、既存のネットワーク・プロセッサではなく、FPGAを用いた独自設計によるOpenFlow Switchの開発経験を元に、ハードウェア処理にかかわるOpenFlowの機能概要と、FPGAを用いた実現方法や課題について解説します。

FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6

  1. 1. FPGAで作る OpenFlow Switch FPGAエクストリーム・コンピューティング 第6回 (2015/02/01) Kentaro Ebisawa | 海老澤 健太郎 | Twitter: @ebiken
  2. 2. 注意書き | Disclaimer • 本発表は 「OpenFlow Switch開発に関連した情報を一般に広める事」 を目的としています。 特定製品の設計や仕様を解説するものではありません。 • そのため、ハードウェア構成や機能ブロックなどは一般化してあり、 発表者の開発する製品とは異なります。 • 製品仕様の詳細に関しては、個別にお問い合わせください。 FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 2
  3. 3. 自己紹介 |Self-introduction 今 • OpenFlow Switchの開発マネジメント @某ベンチャー企業 (Riava Networks, Inc.) 昔 • ベンチャー企業の技術系Role色々 • アジア展開や立ち上げフェーズ中心 • サポート部門統括 • 技術営業(SE) • システム設計(Solution Architect) • 製品デザイン/設計 • 開発マネジメント • Twitter: @ebiken • 技術分野も色々 • ATM / Ethernet / PPPoE / L2TP / RADIUS • Streaming / Web Proxy • Virtualization • OpenVZ / Parallels Cloud Server • Hosting Service. OSS/BSS. • Operation / Business Support System • IPv6/v4 Translation (nat64) • OpenFlow FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 3
  4. 4. 本日の発表内容 | List of Contents 1. “OpenFlow Switch” is 何? (Layer 2/3 Switchと比べながら) 2. なぜFPGAを使って作るのか? 3. OpenFlow Switch の構成 4. OpenFlow Switch 設計の課題 FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 4
  5. 5. FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 5 “OpenFlow Switch” is 何? Layer 2 / 3 Switchと比べながら
  6. 6. 従来のネットワークスイッチの動作 (Layer 2) FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 6 MAC Address Port 00-00-5E-00-53-01 1 00-00-5E-00-53-02 2 00-00-5E-00-53-03 3 00-00-5E-00-53-04 4 Layer 2 forwarding (MAC learning) table 1 2 3 4 5 -01 -02 -03 -04 -05 Table Entry • 自習(送信元アドレス) Action (match) • Forward to Port Action (no-match) • Flooding VLAN 1 VLAN 2
  7. 7. 従来のネットワークスイッチの動作 (Layer 3) FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 7 Subnet (LPM) Gateway Port 192.168.10.0 /24 10.0.0.5 5 192.168.20.0 /24 172.16.0.1 1 ... ... ... 0.0.0.0/0 172.16.0.1 1 Layer 3 forwarding table 1 2 3 4 5 172.16.0.0/24 10.0.0.0/24 Table Entry • Routing Protocol で学習 Action (match) • Decrement TTL • Modify Destination MAC • Forward to Port Action (no-match) • Drop • Send “ICMP Dest untreachable”
  8. 8. OpenFlow スイッチの動作 FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 8 Flow Table x N個 1 2 3 4 5 Match Field Instruction / Action MPLS Label pop MPLS label, meter 10, goto-table 4 VLAN output port 2, ... IPv4 Address, TCP port set IPv4 Address, Queue 10, goto-table 3 ... ... Table Entry • コントローラーから投入 Match Field Instruction / Action MPLS Label pop MPLS label, meter 10, goto-table 4 VLAN output port 2, ... IPv4 Address, TCP port set IPv4 Address, Queue 10, goto-table 3 ... ... Match Field Instruction / Action MPLS Label pop MPLS label, meter 10, goto-table 4 VLAN output port 2, ... IPv4 Address, TCP port set IPv4 Address, Queue 10, goto-table 3 ... ... Match Field Instruction / Action MPLS Label pop MPLS label, meter 10, goto-table 4 VLAN output port 2 IPv4 Address, TCP port set IPv4 Address, Queue 10, goto-table 3 ... ... OpenFlow Controller
  9. 9. どのパケットを? OpenFlow Match Field : 40 Fields, 1261 bits FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 9 Field Name bits OXM_OF_IN_PORT 32 OXM_OF_IN_PHY_PORT 32 OXM_OF_METADATA 64 OXM_OF_ETH_DST 48 OXM_OF_ETH_SRC 48 OXM_OF_ETH_TYPE 16 OXM_OF_VLAN_VID 12+1 OXM_OF_VLAN_PCP 3 OXM_OF_IP_DSCP 6 OXM_OF_IP_ECN 2 OXM_OF_IP_PROTO 8 OXM_OF_IPV4_SRC 32 OXM_OF_IPV4_DST 32 OXM_OF_TCP_SRC 16 Field Name bits OXM_OF_TCP_DST 16 OXM_OF_UDP_SRC 16 OXM_OF_UDP_DST 16 OXM_OF_SCTP_SRC 16 OXM_OF_SCTP_DST 16 OXM_OF_ICMPV4_TYPE 8 OXM_OF_ICMPV4_CODE 8 OXM_OF_ARP_OP 16 OXM_OF_ARP_SPA 32 OXM_OF_ARP_TPA 32 OXM_OF_ARP_SHA 48 OXM_OF_ARP_THA 48 OXM_OF_IPV6_SRC 128 Field Name bits OXM_OF_IPV6_DST 128 OXM_OF_IPV6_FLABEL 20 OXM_OF_ICMPV6_TYPE 8 OXM_OF_ICMPV6_CODE 8 OXM_OF_IPV6_ND_TARGET 128 OXM_OF_IPV6_ND_SLL 48 OXM_OF_IPV6_ND_TLL 48 OXM_OF_MPLS_LABEL 20 OXM_OF_MPLS_TC 3 OXM_OF_MPLS_BOS 1 OXM_OF_PBB_ISID 24 OXM_OF_TUNNEL_ID 64 OXM_OF_IPV6_EXTHDR 9
  10. 10. どう処理する? OpenFlow Instruction / Action FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 10 Instruction (インストラクション) Meter Policing(Rate-Limit) パケット色分け Apply-Actions Actionの即適用 Clear-Actions Action Set 初期化 Write-Actions Action Set へ記録 Write-Metadata メタ情報をスタンプ Goto-Table <ID> テーブル(ID)検索 Action (アクション) Output <port_no> パケット転送 Group <group_id> グループ処理 Set-Queue <queue_id> Queueアサイン Push-Tag <ethertype> MPLS,PBB,VLAN Pop-Tag <ethertype> Set-Field <field_type> <value> 任意のフィールドに 値をセット Set TTL <ttl> MPLS, IP TTL (Time To Live) Decrement TTL Copy TTL out/inwards
  11. 11. OpenFlow Pipeline FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 11 OpenFlow Pipeline Flow Table #0 Flow Entry Flow Entry Flow Table #n Flow Entry Flow Entry Match Flow Table #1 Flow Entry Action Set (associated with each packet) Flow Entry Action Action Action Packet Ingress Match Match Goto-Table Goto-Table Packet Output Execute Action Set(1) (2) (3) (4) (5) (6) (7) (8) (9)
  12. 12. Layer 2/3 Switch と OpenFlow Switch の違い FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 12 どのパケットを どう処理する? Layer 2 MAC Address 宛先MAC Addressの ホストがいるポートへ転送 Layer 3 IP Address 宛先MAC Addressを変更 Next Hopへ転送 OpenFlow コントローラーから設定 (パケット・ヘッダ情報) コントローラーから設定 (ヘッダ変更・転送・QoS)
  13. 13. どのパケットを どう処理する? Layer 2 MAC Address 宛先MAC Addressの ホストがいるポートへ転送 Layer 3 IP Address 宛先MAC Addressを変更 Next Hopへ転送 OpenFlow コントローラーから設定 (パケット・ヘッダ情報) コントローラーから設定 (ヘッダ変更・転送・QoS) Layer 2/3 Switch と OpenFlow Switch の違い FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 13 マッチ・処理方法が決まっている マッチ・処理方法がプログラマブル
  14. 14. FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 14 なぜFPGAを使って作るのか?
  15. 15. FPGAで OpenFlow Switch を作る3つの理由 FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 15 従来型スイッチ用チップの仕様に縛られない プロトコル仕様の変更に対応 ユースケースを元にした継続的な改良
  16. 16. 従来型スイッチ用チップの仕様に縛られない •OpenFlow Pipelineを実現できない •TCAM容量の不足 •既存Forwarding Tableの流用 •Table毎の使用可能なフィールドが限定的 •サポートする Instruction / Action の不足 •そもそも Instruction / Action が使えないTableも FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 16
  17. 17. ユースケースを元にした継続的な改良 •OpenFlowはネットワークをプログラマブルに。 •ビジネスモデルで必要な機能・サイジングバランスが変わる • Group, Meter, QoS, Packet-in/out … どれが重要? •Datacenter CLOS Network? •Carrier / Provider Edge Gateway? •Security Gateway? •Wireless? FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 17
  18. 18. プロトコル仕様の変更に対応 FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 18 2010 2011 2012 2013 2014 (Dec. 31, 2009) 1.0.0 (Jun. 7, 2012) 1.0.1 Errata (Nov. 1, 2013) 1.0.2 Errata (Apr. 13, 2012) 1.3.0 1.3.1 (Sept. 6, 2012) (Apr. 25, 2013) 1.3.2 (Mar. 27, 2014) 1.3.4 1.3.3 (Dec. 18, 2013) (Feb. 28, 2011) 1.1.0 (Dec. 5, 2011) 1.2 (Oct. 15, 2013) 1.4.0 0x01 0x02 0x04 0x05 0x03 Wire Protocol # (Jan. 9, 2015) 1.5.0 0x06OpenFlow 仕様の変遷 2015
  19. 19. FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 19 OpenFlow Switchの構成 Using Hardware Datapath
  20. 20. OpenFlow Switch | Software 構成 FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 20 Hardware Abstraction Layer Hardware Specific Driver Datapath PCIe Open Flow Agent Protocol Interface 管理インターフェース • Switch/Controlアドレス設定 • ステータス / 統計情報参照 • Debug, Log OF Protocol <-> Datapathのフォーマット変換 Flow Table の Datapath Layout管理(TCAM/RAM) Packet-in/out 仲介処理 PCIe Driver. FPGAボードはPCIeデバイスとしてOSから認識 Admin Interface (CLI, syslog, SNMP) CPU Board FPGA / TCAM / RAM(*) Physical Network Ports (*) RAM = SRAM/DRAM/BlockRAM etc. Controller とのプロトコル・インターフェース OpenFlowプロトコルレベルでの Flow Table管理
  21. 21. OpenFlow Switch ~ Hardware Datapath実装パターン FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 21 Datapath (FPGA etc.) Flow Table #0 Flow Table #x Flow Table #N Software (CPU) Flow Table #0 Flow Table #x Flow Table #N Flow Table 投入 OpenFlow Agent Packet インストール型
  22. 22. OpenFlow Switch ~ Hardware Datapath実装パターン FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 22 Datapath (FPGA etc.) Flow Cache Table Software (CPU) Flow Table #0 Flow Table #x Flow Table #N OpenFlow Agent Packet キャッシュ型 (Cache Entry 無) Flow Cache 投入問い合わせ
  23. 23. OpenFlow Switch ~ Hardware Datapath実装パターン FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 23 Datapath (FPGA etc.) Flow Cache Table Software (CPU) Flow Table #0 Flow Table #x Flow Table #N OpenFlow Agent Packet キャッシュ型 (Cache Entry 有)
  24. 24. OpenFlow Switch ~ Hardware Datapath実装パターン FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 24 インストール型 キャッシュ型  同じフローのパケットは遅延が同じ  各フロー最初のパケットは遅延大  性能を予測しやすい。  Datapath/CPU間のバスボトルネック  キャッシュ溢れ時にパフォーマンス 劣化  Flow Entry毎の追加・変更が可能  Flow Entry追加・変更時にCache Flushが必要 (Multi Table)  使わないFlow Entryもハードウェア・ リソースを消費  実際に流れたFlowのみハードウェ アリソースを消費
  25. 25. OpenFlow Switch ~ Hardware Datapath実装パターン FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 25 インストール型 キャッシュ型  同じフローのパケットは遅延が同じ  各フロー最初のパケットは遅延大  性能を予測しやすい。  Datapath/CPU間のバスボトルネック  キャッシュ溢れ時にパフォーマンス 劣化  Flow Entry毎の追加・変更が可能  Flow Entry追加・変更時にCache Flushが必要 (Multi Table)  使わないFlow Entryもハードウェア・ リソースを消費  実際に流れたFlowのみハードウェ アリソースを消費
  26. 26. OpenFlow Switch | Software 構成 FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 26 Hardware Abstraction Layer Hardware Specific Driver Datapath PCIe Open Flow Agent Protocol Interface 管理インターフェース • Switch/Controlアドレス設定 • ステータス / 統計情報参照 • Debug, Log OF Protocol <-> Datapathのフォーマット変換 Flow Table の Datapath Layout管理(TCAM/RAM) Packet-in/out 仲介処理 PCIe Driver. FPGAボードはPCIeデバイスとしてOSから認識 Admin Interface (CLI, syslog, SNMP) CPU Board FPGA / TCAM / RAM(*) Physical Network Ports (*) RAM = SRAM/DRAM/BlockRAM etc. Controller とのプロトコル・インターフェース OpenFlowプロトコルレベルでの Flow Table管理
  27. 27. FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 27 CPU Board (OpenFlow Agent) Physical Ports (10Gbps / 1Gbps) PCIe Core DMA Control Host Interface MAC (XAUI / QSGMII) TCAM (Match Field) SRAM | DRAM (Instruction, Action) (Packet Buffer) Packet FIFO OpenFlow Pipeline Processor Flow Table ProviderFPGA Switch / Queue PCIe Flow Entry 投入
  28. 28. FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 28 CPU Board (OpenFlow Agent) Physical Ports (10Gbps / 1Gbps) PCIe Core DMA Control Host Interface MAC (XAUI / QSGMII) TCAM (Match Field) SRAM | DRAM (Instruction, Action) (Packet Buffer) Packet FIFO OpenFlow Pipeline Processor Flow Table ProviderFPGA Switch / Queue PCIe Packet処理
  29. 29. FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 29 OpenFlow Switch 設計の課題 (トレードオフ) 検索Key長 / TCAM Entry幅の長さ Priorityを考慮したUpdate 処理すべきパケットフィールドの多さ
  30. 30. Layer 2 Forwarding (MAC learning) Table 検索 (CAM) FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 30 MAC Address (48 bit) Port 00-00-5E-00-53-FE 5 00-15-17-ED-9E-5B 3 6C-F0-49-7F-79-AA 1 00-00-5E-00-53-01 1 00-15-17-ED-9E-01 2 … … 00-00-5E-00-53-01 検索Key Port 1 へ転送 CAM (Exact Match)
  31. 31. Layer 2 Forwarding (MAC learning) Table 検索 (Hash Table) FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 31 MAC Address Port MAC Address Port MAC Address Port 0 ⇒ 00-00-5E-00-53-FE 5 1 ⇒ 00-15-17-ED-9E-00 3 00-15-17-ED-9E-2F 2 00-15-17-ED-9E-8B 4 2 ⇒ 6C-F0-49-7F-79-AA 1 3 ⇒ 00-00-5E-00-53-08 3 00-00-5E-00-53-01 1 4 ⇒ 00-15-17-ED-9E-01 2 00-00-5E-00-53-F0 4 00-15-17-ED-9E-32 8 … ⇒ … … … … … … 00-00-5E-00-53-01 検索Key Port #1 へ転送 HASH Hash Table (on SRAM)
  32. 32. Layer 3 Forwarding Table 検索 (TCAM - Longest Prefix Match) FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 32 TCAM (with Don’t care bit) IPv4 Address (32 bit) Gateway 192 168 10 * 10.0.0.5 10 128 0 * 172.16.0.1 192 168 20 * 172.16.0.2 192 168 * * 10.0.0.100 ... ... ... ... ... * * * * 172.16.0.1 192.168.20.100 検索Key • LPMなのでTCAMが必要 • TCAMは上からMatch • 検索Keyは固定長(IPv6 でも 64bit) ※ 実際は bit 単位
  33. 33. OpenFlow Flow Table (TCAM – Simple design) FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 33 IN_PORT METADATA ETH_DST ETH_SRC VLAN_VID MPLS_LBL IP_PROTO IPV4_SRC … 10 * * * 1 * * 10.1.1.* … * * * * * * 6 10.1.1.1 … * * * * 10 * * * … 5 * * * 5 * * * … * 0xABAB0010 * * * * 17 * … … … … … … … … … … PORT, METADATA, ETH_DST … 検索Key (1248 bit) Instruction/ Action pop VLAN, … push vlan, goto-table 1 Output 5, … set-metadata, … set-field … … TCAM (40 Fields, 1261 bits) • 無駄が多い。 • 1261 bit 幅のTCAMが必要 ⇒ 32K Entry で約40Mbit • 各 Flow Entry でマッチしたいフィールドは数個。 • Priorityが存在 ⇒ 挿入時にEntryのシフト必要(重い処理)
  34. 34. Search Key 幅に対する対応 (TCAM使用例) FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 34 参考文献:”OF-DPA Abstract Switch Specification ver1.0” by Broadcom Corporation. Simplified “Figure 2: OpenFlow OF-DPA Abstract Switch Pipeline“ https://github.com/Broadcom-Switch/of-dpa/blob/master/doc/OFDPA_OASS-ETP101-R.PDF Ingress Port Table 1 MAC Table 3 Unicast Routing Table 4a Multicast Routing Table 4b Bridge Table 4c ACL Policy Table 5 VLAN Table 2 Table毎に使用するフィールドを限定  TCAMを使用しなくて良いテーブルもあり  ANDをとったフィールド組み合わせ検索ができない (例: MAC_DST==XXX && VLAN_ID==YY) 検索 処理 CAM or SRAM TCAM
  35. 35. Search Key 幅に対する対応 (TCAM使用例) FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 35 MATCHフィールドの組み合わせ毎にIDを振り、検索Keyに追加  柔軟なフィールドの組み合わせが可能  処理が複雑(検索Keyの生成、フィールド組み合わせ選択ロジック) TCAM Entry Match Bit String MAC=X|VLAN=0|…|MATCH=1 VLAN=1|MPLS=a|…|MATCH=2 MAC=*|VLAN=5|…|MATCH=1 PORT=4|IPV4_SRC=Z|…|MATCH=3 PORT=*|IPV4_SRC=Y|…|MATCH=3 … MAC|VLAN|…|MATCH-1 検索Key生成 VLAN|MPLS|…|MATCH-2 PORT|IPV4_SRC|…|MATCH-3
  36. 36. Priorityを考慮したUpdateの効率化(TCAM使用例) FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 36 全エントリPriority順  同一マッチのみPriority順 リソース利用効率 (悪い  良い) | 管理ロジック(シンプル  複雑) Priority PORT VLAN IP Addr TCP Port 255 3 * * 80 255 1 20 10.0.0.* * 50 * * * 80 10 1 * * 443 0 * * * * Priority PORT VLAN IP Addr TCP Port 255 3 * * 80 255 1 20 10.0.0.* * 50 * * * 80 10 1 * * 443 0 * * * * Priority PORT VLAN IP Addr TCP Port 10 * 10 10.0.0.* 22
  37. 37. パケット処理方法によるトレードオフ FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 37 Layer 3 Switch • MAC DA 変更 • DA: Destination Address • Decrement TTL • Layer 2 処理 MAC DA MAC SA VLAN EtherType MPLS IPv4 / IPv6 / ARP TCP / UDP / ICMP Payload Layer 2 Switch • VLAN Tag Push/Pop
  38. 38. パケット処理方法によるトレードオフ FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 38 MAC DA MAC SA VLAN EtherType MPLS IPv4 / IPv6 / ARP TCP / UDP / ICMP Payload OpenFlow Switch • VLAN Tag Push/Pop • MPLS Push / Pop • 任意のヘッダフィールド値のセット
  39. 39. パケット処理方法によるトレードオフ FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 39 MAC DA MAC SA VLAN EtherType MPLS IPv4 / IPv6 / ARP TCP / UDP / ICMP Payload MAC DA MAC SA VLAN EtherType MPLS IPv4 / IPv6 / ARP TCP / UDP / ICMP Payload 全フィールド並列処理  遅延:小(1~数サイクル)  回路規模:大 各フィールド順次処理  遅延:大(数十~数百サイクル)  回路規模:小
  40. 40. FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 40 試したい!という方の為に FPGAでパケット処理 楽しいですよ!
  41. 41. • Digilent Inc. で購入可能 • Part# 410-301P-KIT • Academic:$1,695 (≒20万円) • 定価:$24,500(≒300万円) 試してみたい人 | How to try? • NetFPGA SUME • 研究用のNIC型ハードウェア • FPGA: Virtex-7 690T • Network: • 4 x 10Gbps (SFP+) • Memory: • 2 x 4GB DDR3 SoDIMM • 3 x 72Mbits QDR II SRAM • PCIe x8 Gen. 3 (8Gbps x8) • 2 x SATA-III FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 41 Photo from Digilent Inc. http://digilentinc.com/Products/Detail.cfm?NavPath=2,1301,1311&Prod=NETFPGA-10G-SUME
  42. 42. 試してみたい人 | How to try? • FPGA上のOpenFlow実装 • ちょっと古いけど •  Design Document • Block Diagram • State Machine •  Source Code • GitHub •  OpenFlow 1.0 only • Single Table (No multi-table) FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 42 https://github.com/NetFPGA/NetFPGA-public/wiki/NetFPGA-10G-OpenFlow-Switch
  43. 43. FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 43 FPGAでネットワーク ご興味あるかたは是非ご連絡を。 Let’s have fun together !! 海老澤 健太郎 | Kentaro Ebisawa Twitter: @ebiken

×