fpgaで作るopenflow switch (fpgaエクストリーム・コンピューティング 第6回)...

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

Upload: kentaro-ebisawa

Post on 14-Jul-2015

5.292 views

Category:

Technology


1 download

TRANSCRIPT

FPGAで作るOpenFlow Switch

FPGAエクストリーム・コンピューティング

第6回 (2015/02/01)

Kentaro Ebisawa |海老澤健太郎 | Twitter: @ebiken

注意書き| Disclaimer

•本発表は

「OpenFlow Switch開発に関連した情報を一般に広める事」

を目的としています。

特定製品の設計や仕様を解説するものではありません。

•そのため、ハードウェア構成や機能ブロックなどは一般化してあり、発表者の開発する製品とは異なります。

•製品仕様の詳細に関しては、個別にお問い合わせください。

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

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

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

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

“OpenFlow Switch” is 何?

Layer 2 / 3 Switchと比べながら

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

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

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

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

どう処理する? OpenFlow Instruction / Action

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

Instruction (インストラクション)

MeterPolicing(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, IPTTL (Time To Live)

Decrement TTL

Copy TTL out/inwards

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

PacketIngress

Match

Match

Goto-Table Goto-Table PacketOutput

ExecuteAction

Set(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

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)

どのパケットを どう処理する?

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

マッチ・処理方法が決まっている

マッチ・処理方法がプログラマブル

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毎の使用可能なフィールドが限定的

•サポートする Instruction / Actionの不足

•そもそも Instruction / Actionが使えないTableも

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

ユースケースを元にした継続的な改良

•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

プロトコル仕様の変更に対応

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

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

OpenFlow Switchの構成

Using Hardware Datapath

OpenFlow Switch | Software構成

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

Hardware Abstraction Layer

Hardware Specific Driver

DatapathPCIe

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

OpenFlow Switch~ Hardware Datapath実装パターン

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

Datapath (FPGA etc.)

FlowTable #0

FlowTable #x

FlowTable #N

Software (CPU)

FlowTable #0

FlowTable #x

FlowTable #N

Flow Table投入

OpenFlow Agent

Packet

インストール型

OpenFlow Switch~ Hardware Datapath実装パターン

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

Datapath (FPGA etc.)

Flow CacheTable

Software (CPU)

FlowTable #0

FlowTable #x

FlowTable #N

OpenFlow Agent

Packet

キャッシュ型 (Cache Entry無)

Flow Cache投入問い合わせ

OpenFlow Switch~ Hardware Datapath実装パターン

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

Datapath (FPGA etc.)

Flow CacheTable

Software (CPU)

FlowTable #0

FlowTable #x

FlowTable #N

OpenFlow Agent

Packet

キャッシュ型 (Cache Entry有)

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

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

OpenFlow Switch | Software構成

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

Hardware Abstraction Layer

Hardware Specific Driver

DatapathPCIe

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

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

CPU Board(OpenFlow Agent)

Physical Ports (10Gbps / 1Gbps)

PCIe Core

DMA ControlHost 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投入

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

CPU Board(OpenFlow Agent)

Physical Ports (10Gbps / 1Gbps)

PCIe Core

DMA ControlHost 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処理

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

OpenFlow Switch 設計の課題(トレードオフ)

検索Key長 / TCAM Entry幅の長さ

Priorityを考慮したUpdate

処理すべきパケットフィールドの多さ

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)

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)

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

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

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

IngressPort

Table 1MAC

Table 3

UnicastRouting

Table 4a

MulticastRouting

Table 4b

Bridge

Table 4c

ACL Policy

Table 5

VLAN

Table 2

Table毎に使用するフィールドを限定 TCAMを使用しなくて良いテーブルもあり ANDをとったフィールド組み合わせ検索ができない(例:MAC_DST==XXX && VLAN_ID==YY)

検索処理

CAM orSRAM

TCAM

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

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

パケット処理方法によるトレードオフ

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

パケット処理方法によるトレードオフ

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• 任意のヘッダフィールド値のセット

パケット処理方法によるトレードオフ

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~数サイクル) 回路規模:大

各フィールド順次処理 遅延:大(数十~数百サイクル) 回路規模:小

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

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

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

FPGAでネットワーク

ご興味あるかたは是非ご連絡を。

Let’s have fun together !!

海老澤健太郎| Kentaro Ebisawa

Twitter: @ebiken