SlideShare a Scribd company logo
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

More Related Content

What's hot

How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
Kentaro Ebisawa
 
Understanding DPDK
Understanding DPDKUnderstanding DPDK
Understanding DPDK
Denys Haryachyy
 
Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)
Andriy Berestovskyy
 
Faster packet processing in Linux: XDP
Faster packet processing in Linux: XDPFaster packet processing in Linux: XDP
Faster packet processing in Linux: XDP
Daniel T. Lee
 
プログラマ目線から見たRDMAのメリットと その応用例について
プログラマ目線から見たRDMAのメリットとその応用例についてプログラマ目線から見たRDMAのメリットとその応用例について
プログラマ目線から見たRDMAのメリットと その応用例について
Masanori Itoh
 
20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)
Kentaro Ebisawa
 
Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409
稔 小林
 
MAP 実装してみた
MAP 実装してみたMAP 実装してみた
MAP 実装してみた
Masakazu Asama
 
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
Masahito Zembutsu
 
Intel dpdk Tutorial
Intel dpdk TutorialIntel dpdk Tutorial
Intel dpdk Tutorial
Saifuddin Kaijar
 
IPv4/IPv6 移行・共存技術の動向
IPv4/IPv6 移行・共存技術の動向IPv4/IPv6 移行・共存技術の動向
IPv4/IPv6 移行・共存技術の動向
Yuya Rin
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキング
Tomoya Hibi
 
High-Performance Networking Using eBPF, XDP, and io_uring
High-Performance Networking Using eBPF, XDP, and io_uringHigh-Performance Networking Using eBPF, XDP, and io_uring
High-Performance Networking Using eBPF, XDP, and io_uring
ScyllaDB
 
"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越
Kentaro Ebisawa
 
大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌
LINE Corporation
 
Geekなぺーじ ネットワーク技術者ではない方々向けIPv6セミナー2
Geekなぺーじ ネットワーク技術者ではない方々向けIPv6セミナー2Geekなぺーじ ネットワーク技術者ではない方々向けIPv6セミナー2
Geekなぺーじ ネットワーク技術者ではない方々向けIPv6セミナー2
Kiyotaka Doumae
 
VPP事始め
VPP事始めVPP事始め
VPP事始め
npsg
 
Cilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDPCilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDP
Thomas Graf
 
ARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくい
wata2ki
 
Cockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with ElixirCockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with Elixir
Hideki Takase
 

What's hot (20)

How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
Understanding DPDK
Understanding DPDKUnderstanding DPDK
Understanding DPDK
 
Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)
 
Faster packet processing in Linux: XDP
Faster packet processing in Linux: XDPFaster packet processing in Linux: XDP
Faster packet processing in Linux: XDP
 
プログラマ目線から見たRDMAのメリットと その応用例について
プログラマ目線から見たRDMAのメリットとその応用例についてプログラマ目線から見たRDMAのメリットとその応用例について
プログラマ目線から見たRDMAのメリットと その応用例について
 
20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)
 
Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409
 
MAP 実装してみた
MAP 実装してみたMAP 実装してみた
MAP 実装してみた
 
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
 
Intel dpdk Tutorial
Intel dpdk TutorialIntel dpdk Tutorial
Intel dpdk Tutorial
 
IPv4/IPv6 移行・共存技術の動向
IPv4/IPv6 移行・共存技術の動向IPv4/IPv6 移行・共存技術の動向
IPv4/IPv6 移行・共存技術の動向
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキング
 
High-Performance Networking Using eBPF, XDP, and io_uring
High-Performance Networking Using eBPF, XDP, and io_uringHigh-Performance Networking Using eBPF, XDP, and io_uring
High-Performance Networking Using eBPF, XDP, and io_uring
 
"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越
 
大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌
 
Geekなぺーじ ネットワーク技術者ではない方々向けIPv6セミナー2
Geekなぺーじ ネットワーク技術者ではない方々向けIPv6セミナー2Geekなぺーじ ネットワーク技術者ではない方々向けIPv6セミナー2
Geekなぺーじ ネットワーク技術者ではない方々向けIPv6セミナー2
 
VPP事始め
VPP事始めVPP事始め
VPP事始め
 
Cilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDPCilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDP
 
ARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくい
 
Cockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with ElixirCockatrice: A Hardware Design Environment with Elixir
Cockatrice: A Hardware Design Environment with Elixir
 

Similar to 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_final
Kazumasa Ikuta
 
Lagopus performance
Lagopus performanceLagopus performance
Lagopus performance
Masaru 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-hw
ykuga
 
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch Usecases
Sakiko Kawai
 
Lagopus, raw socket build
Lagopus, raw socket buildLagopus, raw socket build
Lagopus, raw socket build
Masaru Oki
 
Trema day 1
Trema day 1Trema day 1
Trema day 1
ykuga
 
RouterBOARD with OpenFlow
RouterBOARD with OpenFlowRouterBOARD with OpenFlow
RouterBOARD with OpenFlow
Toshiki 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.1
Tomoya Hibi
 
VIOPS06: OpenFlowによるネットワーク構築と実証事件
VIOPS06: OpenFlowによるネットワーク構築と実証事件VIOPS06: OpenFlowによるネットワーク構築と実証事件
VIOPS06: OpenFlowによるネットワーク構築と実証事件
VIOPS Virtualized Infrastructure Operators group ARCHIVES
 
Software forwarding path
Software forwarding pathSoftware forwarding path
Software forwarding path
Tomofumi Hayashi
 
OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!
Takashi Sogabe
 
OpenFlow
OpenFlowOpenFlow
OpenFlow
Takashi Ohmoto
 
Osc2018tokyo spring-20180224
Osc2018tokyo spring-20180224Osc2018tokyo spring-20180224
Osc2018tokyo spring-20180224
Tomoya Hibi
 
Xeon dとlagopusと、pktgen dpdk
Xeon dとlagopusと、pktgen dpdkXeon dとlagopusと、pktgen dpdk
Xeon dとlagopusと、pktgen dpdk
Masaru Oki
 
Lagopus 0.2.2
Lagopus 0.2.2Lagopus 0.2.2
Lagopus 0.2.2
Masaru Oki
 

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

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
 
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
 
Xeon dとlagopusと、pktgen dpdk
Xeon dとlagopusと、pktgen dpdkXeon dとlagopusと、pktgen dpdk
Xeon dとlagopusと、pktgen dpdk
 
Lagopus 0.2.2
Lagopus 0.2.2Lagopus 0.2.2
Lagopus 0.2.2
 

More from 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 を繋ぐ API
Kentaro Ebisawa
 
Yang Tools Quick Memo
Yang Tools Quick MemoYang Tools Quick Memo
Yang Tools Quick Memo
Kentaro 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 2019
Kentaro 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-SRH
Kentaro Ebisawa
 
Interop2019 Toyota Netcope P4
Interop2019 Toyota Netcope P4Interop2019 Toyota Netcope P4
Interop2019 Toyota Netcope P4
Kentaro 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 Translation
Kentaro 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.0
Kentaro 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 Implementation
Kentaro 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 Implementations
Kentaro Ebisawa
 
Using GTP on Linux with libgtpnl
Using GTP on Linux with libgtpnlUsing GTP on Linux with libgtpnl
Using GTP on Linux with libgtpnl
Kentaro Ebisawa
 
GTPing, How To
GTPing, How ToGTPing, How To
GTPing, How To
Kentaro 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-type
Kentaro 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 Era
Kentaro Ebisawa
 
p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4
Kentaro Ebisawa
 
zebra & openconfigd Introduction
zebra & openconfigd Introductionzebra & openconfigd Introduction
zebra & openconfigd Introduction
Kentaro Ebisawa
 
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
Kentaro Ebisawa
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
Kentaro Ebisawa
 

More from Kentaro Ebisawa (20)

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
 
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
 

Recently uploaded

YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
atsushi061452
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 

Recently uploaded (15)

YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 

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