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を作る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