SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
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 (インストラクション)
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
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)
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
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管理
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
インストール型
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 投入問い合わせ
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 有)
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
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管理
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 投入
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処理
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
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
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

Weitere ähnliche Inhalte

Was ist angesagt?

YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)NTT DATA Technology & Innovation
 
最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみよう最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみようTakashi Kajinami
 
BGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみたBGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみたakira6592
 
閉域網接続の技術入門
閉域網接続の技術入門閉域網接続の技術入門
閉域網接続の技術入門Masayuki Kobayashi
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414Kentaro Ebisawa
 
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観Yamato Tanaka
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化Takuya ASADA
 
"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越Kentaro Ebisawa
 
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)Kentaro Ebisawa
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 VirtualTech Japan Inc.
 
VPP事始め
VPP事始めVPP事始め
VPP事始めnpsg
 
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコシステムズ合同会社
 
Ceph アーキテクチャ概説
Ceph アーキテクチャ概説Ceph アーキテクチャ概説
Ceph アーキテクチャ概説Emma Haruka Iwao
 
CXL_説明_公開用.pdf
CXL_説明_公開用.pdfCXL_説明_公開用.pdf
CXL_説明_公開用.pdfYasunori Goto
 
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックKentaro Ebisawa
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングTomoya Hibi
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門VirtualTech Japan Inc.
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話Kazuho Oku
 

Was ist angesagt? (20)

YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
 
最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみよう最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみよう
 
BGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみたBGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみた
 
閉域網接続の技術入門
閉域網接続の技術入門閉域網接続の技術入門
閉域網接続の技術入門
 
AS45679 on FreeBSD
AS45679 on FreeBSDAS45679 on FreeBSD
AS45679 on FreeBSD
 
Multi Chassis LAG for Cloud builders
Multi Chassis LAG for Cloud buildersMulti Chassis LAG for Cloud builders
Multi Chassis LAG for Cloud builders
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
 
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化
 
"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越
 
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
 
VPP事始め
VPP事始めVPP事始め
VPP事始め
 
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
 
Ceph アーキテクチャ概説
Ceph アーキテクチャ概説Ceph アーキテクチャ概説
Ceph アーキテクチャ概説
 
CXL_説明_公開用.pdf
CXL_説明_公開用.pdfCXL_説明_公開用.pdf
CXL_説明_公開用.pdf
 
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキング
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話
 

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

Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用kazuyas
 
20150715 xflow kikuta_final
20150715 xflow kikuta_final20150715 xflow kikuta_final
20150715 xflow kikuta_finalKazumasa Ikuta
 
Lagopus performance
Lagopus performanceLagopus performance
Lagopus performanceMasaru Oki
 
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみたHiroki Nakahara
 
SDN Japan: ovs-hw
SDN Japan: ovs-hwSDN Japan: ovs-hw
SDN Japan: ovs-hwykuga
 
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch UsecasesSakiko Kawai
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始めtetsusat
 
Lagopus, raw socket build
Lagopus, raw socket buildLagopus, raw socket build
Lagopus, raw socket buildMasaru Oki
 
Trema day 1
Trema day 1Trema day 1
Trema day 1ykuga
 
RouterBOARD with OpenFlow
RouterBOARD with OpenFlowRouterBOARD with OpenFlow
RouterBOARD with OpenFlowToshiki Tsuboi
 
Lagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそばLagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそばYoshihiro Nakajima
 
Rubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつりRubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつりYuya Rin
 
Lagopus Router v19.07.1
Lagopus Router v19.07.1Lagopus Router v19.07.1
Lagopus Router v19.07.1Tomoya Hibi
 
OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!Takashi Sogabe
 
Osc2018tokyo spring-20180224
Osc2018tokyo spring-20180224Osc2018tokyo spring-20180224
Osc2018tokyo spring-20180224Tomoya Hibi
 

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

How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用
 
20150715 xflow kikuta_final
20150715 xflow kikuta_final20150715 xflow kikuta_final
20150715 xflow kikuta_final
 
Lagopus performance
Lagopus performanceLagopus performance
Lagopus performance
 
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
 
SDN Japan: ovs-hw
SDN Japan: ovs-hwSDN Japan: ovs-hw
SDN Japan: ovs-hw
 
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch Usecases
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
Lagopus, raw socket build
Lagopus, raw socket buildLagopus, raw socket build
Lagopus, raw socket build
 
Trema day 1
Trema day 1Trema day 1
Trema day 1
 
RouterBOARD with OpenFlow
RouterBOARD with OpenFlowRouterBOARD with OpenFlow
RouterBOARD with OpenFlow
 
Lagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそばLagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそば
 
Rubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつりRubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつり
 
Lagopus Router v19.07.1
Lagopus Router v19.07.1Lagopus Router v19.07.1
Lagopus Router v19.07.1
 
VIOPS06: OpenFlowによるネットワーク構築と実証事件
VIOPS06: OpenFlowによるネットワーク構築と実証事件VIOPS06: OpenFlowによるネットワーク構築と実証事件
VIOPS06: OpenFlowによるネットワーク構築と実証事件
 
Software forwarding path
Software forwarding pathSoftware forwarding path
Software forwarding path
 
Myoshimi extreme
Myoshimi extremeMyoshimi extreme
Myoshimi extreme
 
OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!
 
OpenFlow
OpenFlowOpenFlow
OpenFlow
 
Osc2018tokyo spring-20180224
Osc2018tokyo spring-20180224Osc2018tokyo spring-20180224
Osc2018tokyo spring-20180224
 

Mehr von Kentaro Ebisawa

P4 Updates (2020) (Japanese)
P4 Updates (2020) (Japanese)P4 Updates (2020) (Japanese)
P4 Updates (2020) (Japanese)Kentaro Ebisawa
 
Barefoot Faster™ 日本語紹介
Barefoot Faster™ 日本語紹介Barefoot Faster™ 日本語紹介
Barefoot Faster™ 日本語紹介Kentaro Ebisawa
 
IETF106 Hackathon 報告 & P4 based Switch の課題と未来
IETF106 Hackathon 報告 & P4 based Switch の課題と未来IETF106 Hackathon 報告 & P4 based Switch の課題と未来
IETF106 Hackathon 報告 & P4 based Switch の課題と未来Kentaro Ebisawa
 
MPLS Japan 2019 : Data & Control Plane を繋ぐ API
MPLS Japan 2019 : Data & Control Plane を繋ぐ APIMPLS Japan 2019 : Data & Control Plane を繋ぐ API
MPLS Japan 2019 : Data & Control Plane を繋ぐ APIKentaro Ebisawa
 
In Network Computing Prototype Using P4 at KSC/KREONET 2019
In Network Computing Prototype Using P4 at KSC/KREONET 2019In Network Computing Prototype Using P4 at KSC/KREONET 2019
In Network Computing Prototype Using P4 at KSC/KREONET 2019Kentaro Ebisawa
 
Comparison of SRv6 Extensions uSID, SRv6+, C-SRH
Comparison of SRv6 Extensions uSID, SRv6+, C-SRHComparison of SRv6 Extensions uSID, SRv6+, C-SRH
Comparison of SRv6 Extensions uSID, SRv6+, C-SRHKentaro Ebisawa
 
Interop2019 Toyota Netcope P4
Interop2019 Toyota Netcope P4Interop2019 Toyota Netcope P4
Interop2019 Toyota Netcope P4Kentaro Ebisawa
 
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U TranslationIETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U TranslationKentaro Ebisawa
 
p4srv6 (P4-16) design document rev1.0
p4srv6 (P4-16) design document rev1.0p4srv6 (P4-16) design document rev1.0
p4srv6 (P4-16) design document rev1.0Kentaro Ebisawa
 
SRv6 Mobile User Plane : Initial POC and Implementation
SRv6 Mobile User Plane : Initial POC and ImplementationSRv6 Mobile User Plane : Initial POC and Implementation
SRv6 Mobile User Plane : Initial POC and ImplementationKentaro Ebisawa
 
JANOG43 Forefront of SRv6, Open Source Implementations
JANOG43 Forefront of SRv6, Open Source ImplementationsJANOG43 Forefront of SRv6, Open Source Implementations
JANOG43 Forefront of SRv6, Open Source ImplementationsKentaro Ebisawa
 
Using GTP on Linux with libgtpnl
Using GTP on Linux with libgtpnlUsing GTP on Linux with libgtpnl
Using GTP on Linux with libgtpnlKentaro Ebisawa
 
SRv6 Mobile User Plane P4 proto-type
SRv6 Mobile User Plane P4 proto-typeSRv6 Mobile User Plane P4 proto-type
SRv6 Mobile User Plane P4 proto-typeKentaro Ebisawa
 
Zebra SRv6 CLI on Linux Dataplane (ENOG#49)
Zebra SRv6 CLI on Linux Dataplane (ENOG#49)Zebra SRv6 CLI on Linux Dataplane (ENOG#49)
Zebra SRv6 CLI on Linux Dataplane (ENOG#49)Kentaro Ebisawa
 
Zebra 2.0 in Hybrid Cloud Era
Zebra 2.0 in Hybrid Cloud EraZebra 2.0 in Hybrid Cloud Era
Zebra 2.0 in Hybrid Cloud EraKentaro Ebisawa
 
p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4Kentaro Ebisawa
 
zebra & openconfigd Introduction
zebra & openconfigd Introductionzebra & openconfigd Introduction
zebra & openconfigd IntroductionKentaro Ebisawa
 
"OPEN NETWORKING" に向けた Management / Data Plane の動向
"OPEN NETWORKING" に向けた Management / Data Plane の動向"OPEN NETWORKING" に向けた Management / Data Plane の動向
"OPEN NETWORKING" に向けた Management / Data Plane の動向Kentaro Ebisawa
 

Mehr von Kentaro Ebisawa (20)

P4 Updates (2020) (Japanese)
P4 Updates (2020) (Japanese)P4 Updates (2020) (Japanese)
P4 Updates (2020) (Japanese)
 
Barefoot Faster™ 日本語紹介
Barefoot Faster™ 日本語紹介Barefoot Faster™ 日本語紹介
Barefoot Faster™ 日本語紹介
 
IETF106 Hackathon 報告 & P4 based Switch の課題と未来
IETF106 Hackathon 報告 & P4 based Switch の課題と未来IETF106 Hackathon 報告 & P4 based Switch の課題と未来
IETF106 Hackathon 報告 & P4 based Switch の課題と未来
 
MPLS Japan 2019 : Data & Control Plane を繋ぐ API
MPLS Japan 2019 : Data & Control Plane を繋ぐ APIMPLS Japan 2019 : Data & Control Plane を繋ぐ API
MPLS Japan 2019 : Data & Control Plane を繋ぐ API
 
Yang Tools Quick Memo
Yang Tools Quick MemoYang Tools Quick Memo
Yang Tools Quick Memo
 
In Network Computing Prototype Using P4 at KSC/KREONET 2019
In Network Computing Prototype Using P4 at KSC/KREONET 2019In Network Computing Prototype Using P4 at KSC/KREONET 2019
In Network Computing Prototype Using P4 at KSC/KREONET 2019
 
Comparison of SRv6 Extensions uSID, SRv6+, C-SRH
Comparison of SRv6 Extensions uSID, SRv6+, C-SRHComparison of SRv6 Extensions uSID, SRv6+, C-SRH
Comparison of SRv6 Extensions uSID, SRv6+, C-SRH
 
Interop2019 Toyota Netcope P4
Interop2019 Toyota Netcope P4Interop2019 Toyota Netcope P4
Interop2019 Toyota Netcope P4
 
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U TranslationIETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation
 
p4srv6 (P4-16) design document rev1.0
p4srv6 (P4-16) design document rev1.0p4srv6 (P4-16) design document rev1.0
p4srv6 (P4-16) design document rev1.0
 
SRv6 Mobile User Plane : Initial POC and Implementation
SRv6 Mobile User Plane : Initial POC and ImplementationSRv6 Mobile User Plane : Initial POC and Implementation
SRv6 Mobile User Plane : Initial POC and Implementation
 
JANOG43 Forefront of SRv6, Open Source Implementations
JANOG43 Forefront of SRv6, Open Source ImplementationsJANOG43 Forefront of SRv6, Open Source Implementations
JANOG43 Forefront of SRv6, Open Source Implementations
 
Using GTP on Linux with libgtpnl
Using GTP on Linux with libgtpnlUsing GTP on Linux with libgtpnl
Using GTP on Linux with libgtpnl
 
GTPing, How To
GTPing, How ToGTPing, How To
GTPing, How To
 
SRv6 Mobile User Plane P4 proto-type
SRv6 Mobile User Plane P4 proto-typeSRv6 Mobile User Plane P4 proto-type
SRv6 Mobile User Plane P4 proto-type
 
Zebra SRv6 CLI on Linux Dataplane (ENOG#49)
Zebra SRv6 CLI on Linux Dataplane (ENOG#49)Zebra SRv6 CLI on Linux Dataplane (ENOG#49)
Zebra SRv6 CLI on Linux Dataplane (ENOG#49)
 
Zebra 2.0 in Hybrid Cloud Era
Zebra 2.0 in Hybrid Cloud EraZebra 2.0 in Hybrid Cloud Era
Zebra 2.0 in Hybrid Cloud Era
 
p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4
 
zebra & openconfigd Introduction
zebra & openconfigd Introductionzebra & openconfigd Introduction
zebra & openconfigd Introduction
 
"OPEN NETWORKING" に向けた Management / Data Plane の動向
"OPEN NETWORKING" に向けた Management / Data Plane の動向"OPEN NETWORKING" に向けた Management / Data Plane の動向
"OPEN NETWORKING" に向けた Management / Data Plane の動向
 

Kürzlich hochgeladen

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 

Kürzlich hochgeladen (9)

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 

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

  • 2. 注意書き | Disclaimer • 本発表は 「OpenFlow Switch開発に関連した情報を一般に広める事」 を目的としています。 特定製品の設計や仕様を解説するものではありません。 • そのため、ハードウェア構成や機能ブロックなどは一般化してあり、 発表者の開発する製品とは異なります。 • 製品仕様の詳細に関しては、個別にお問い合わせください。 FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 2
  • 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. 本日の発表内容 | 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. FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 5 “OpenFlow Switch” is 何? Layer 2 / 3 Switchと比べながら
  • 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. 従来のネットワークスイッチの動作 (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. 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. どのパケットを? 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. どう処理する? 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. 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. 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. どのパケットを どう処理する? 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. FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 14 なぜFPGAを使って作るのか?
  • 15. FPGAで OpenFlow Switch を作る3つの理由 FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 15 従来型スイッチ用チップの仕様に縛られない プロトコル仕様の変更に対応 ユースケースを元にした継続的な改良
  • 16. 従来型スイッチ用チップの仕様に縛られない •OpenFlow Pipelineを実現できない •TCAM容量の不足 •既存Forwarding Tableの流用 •Table毎の使用可能なフィールドが限定的 •サポートする Instruction / Action の不足 •そもそも Instruction / Action が使えないTableも FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 16
  • 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. プロトコル仕様の変更に対応 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. FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 19 OpenFlow Switchの構成 Using Hardware Datapath
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 29 OpenFlow Switch 設計の課題 (トレードオフ) 検索Key長 / TCAM Entry幅の長さ Priorityを考慮したUpdate 処理すべきパケットフィールドの多さ
  • 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. 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. 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. 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. 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. 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. 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. パケット処理方法によるトレードオフ 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. パケット処理方法によるトレードオフ 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. パケット処理方法によるトレードオフ 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. FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 40 試したい!という方の為に FPGAでパケット処理 楽しいですよ!
  • 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. 試してみたい人 | 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. FPGAで作るOpenFlow Switch | FPGAエクストリーム・コンピューティング 第6回 | FPGAX 2014/02/01 | @ebiken 43 FPGAでネットワーク ご興味あるかたは是非ご連絡を。 Let’s have fun together !! 海老澤 健太郎 | Kentaro Ebisawa Twitter: @ebiken