Slide 1

Slide 1 text

FPGAで作る OpenFlow Switch FPGAエクストリーム・コンピューティング 第6回 (2015/02/01) Kentaro Ebisawa | 海老澤 健太郎 | Twitter: @ebiken

Slide 2

Slide 2 text

注意書き | Disclaimer • 本発表は 「OpenFlow Switch開発に関連した情報を一般に広める事」 を目的としています。 特定製品の設計や仕様を解説するものではありません。 • そのため、ハードウェア構成や機能ブロックなどは一般化してあり、 発表者の開発する製品とは異なります。 • 製品仕様の詳細に関しては、個別にお問い合わせください。 FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 2

Slide 3

Slide 3 text

自己紹介 |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

Slide 4

Slide 4 text

本日の発表内容 | 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

Slide 5

Slide 5 text

FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 5 “OpenFlow Switch” is 何? Layer 2 / 3 Switchと比べながら

Slide 6

Slide 6 text

従来のネットワークスイッチの動作 (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

Slide 7

Slide 7 text

従来のネットワークスイッチの動作 (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”

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

どのパケットを? 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

Slide 10

Slide 10 text

どう処理する? 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)検索 Action (アクション) Output パケット転送 Group グループ処理 Set-Queue Queueアサイン Push-Tag MPLS,PBB,VLAN Pop-Tag Set-Field 任意のフィールドに 値をセット Set TTL MPLS, IP TTL (Time To Live) Decrement TTL Copy TTL out/inwards

Slide 11

Slide 11 text

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)

Slide 12

Slide 12 text

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)

Slide 13

Slide 13 text

どのパケットを どう処理する? 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 マッチ・処理方法が決まっている マッチ・処理方法がプログラマブル

Slide 14

Slide 14 text

FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 14 なぜFPGAを使って作るのか?

Slide 15

Slide 15 text

FPGAで OpenFlow Switch を作る3つの理由 FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 15 従来型スイッチ用チップの仕様に縛られない プロトコル仕様の変更に対応 ユースケースを元にした継続的な改良

Slide 16

Slide 16 text

従来型スイッチ用チップの仕様に縛られない •OpenFlow Pipelineを実現できない •TCAM容量の不足 •既存Forwarding Tableの流用 •Table毎の使用可能なフィールドが限定的 •サポートする Instruction / Action の不足 •そもそも Instruction / Action が使えないTableも FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 16

Slide 17

Slide 17 text

ユースケースを元にした継続的な改良 •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

Slide 18

Slide 18 text

プロトコル仕様の変更に対応 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 0x06 OpenFlow 仕様の変遷 2015

Slide 19

Slide 19 text

FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 19 OpenFlow Switchの構成 Using Hardware Datapath

Slide 20

Slide 20 text

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管理

Slide 21

Slide 21 text

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 インストール型

Slide 22

Slide 22 text

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 投入 問い合わせ

Slide 23

Slide 23 text

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 有)

Slide 24

Slide 24 text

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のみハードウェ アリソースを消費

Slide 25

Slide 25 text

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のみハードウェ アリソースを消費

Slide 26

Slide 26 text

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管理

Slide 27

Slide 27 text

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 Provider FPGA Switch / Queue PCIe Flow Entry 投入

Slide 28

Slide 28 text

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 Provider FPGA Switch / Queue PCIe Packet処理

Slide 29

Slide 29 text

FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 29 OpenFlow Switch 設計の課題 (トレードオフ) 検索Key長 / TCAM Entry幅の長さ Priorityを考慮したUpdate 処理すべきパケットフィールドの多さ

Slide 30

Slide 30 text

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)

Slide 31

Slide 31 text

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)

Slide 32

Slide 32 text

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 単位

Slide 33

Slide 33 text

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のシフト必要(重い処理)

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

パケット処理方法によるトレードオフ 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

Slide 38

Slide 38 text

パケット処理方法によるトレードオフ 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 • 任意のヘッダフィールド値のセット

Slide 39

Slide 39 text

パケット処理方法によるトレードオフ 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~数サイクル)  回路規模:大 各フィールド順次処理  遅延:大(数十~数百サイクル)  回路規模:小

Slide 40

Slide 40 text

FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 40 試したい!という方の為に FPGAでパケット処理 楽しいですよ!

Slide 41

Slide 41 text

• 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

Slide 42

Slide 42 text

試してみたい人 | 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

Slide 43

Slide 43 text

FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 43 FPGAでネットワーク ご興味あるかたは是非ご連絡を。 Let’s have fun together !! 海老澤 健太郎 | Kentaro Ebisawa Twitter: @ebiken