SlideShare a Scribd company logo
1 of 43
Download to read offline
How to create
OpenFlow Switch
using FPGA
Presented at FPGA Extreme Computing #6
2015/02/01
Kentaro Ebisawa | 海老澤 健太郎 | Twitter: @ebiken
Disclaimer
•The objective of this presentation is to “share information”
related to OpenFlow Switch development and increase people
interested in OpenFlow and developing Network Equipments.
•Thus, it is not directly related to specification or design of any
existing product.
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 2
Self-introduction
Current
• Dev manager of OpenFlow Switch
@ start-up company
(Riava Networks, Inc.)
Past
• Several Technical role at multiple startup
companies to help booting up team or
company, growing presence in Asia market.
• Head of support team
• Sales Engineer (SE)
• Solution Architect designing OSS/BSS.
• Product design and research.
• Development management.
• Twitter: @ebiken
• Technical Area
• 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
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 3
List of Contents
1. What is “OpenFlow Switch” ?
(Comparing with Layer 2 / 3 switch)
2. Why use FPGA to build OpenFlow Switch?
3. OpenFlow Switch components
4. OpenFlow Switch design trade-offs
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 4
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 5
What is “OpenFlow Switch” ?
Comparing with Layer 2 / 3 switch.
How traditional network switch works (Layer 2)
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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
• Self learning (Source MAC)
Action (match)
• Forward to Port
Action (no-match)
• Flooding
VLAN 1 VLAN 2
How traditional network switch works (Layer 3)
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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 etc.
Action (match)
• Decrement TTL
• Modify Destination MAC
• Forward to Port
Action (no-match)
• Drop
• Send “ICMP Dest untreachable”
How OpenFlow switch works
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 8
Multiple Flow (Lookup) Tables
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
• Inject from Controller
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
Which packet? (OpenFlow Match Field : 40 Fields, 1261 bits)
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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
How to process it? (OpenFlow Instruction / Action)
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 10
Instruction
Meter Policing(Rate-Limit)
Apply-Actions Apply Imidiately
Clear-Actions Initialize Action Set
Write-Actions Add to Action Set
Write-Metadata Stamp metadata
Goto-Table <ID>
Go through another
table
Action (アクション)
Output <port_no> Forward packet
Group <group_id> Group processing
Set-Queue <queue_id> Assign Queue
Push-Tag <ethertype>
MPLS,PBB,VLAN
Pop-Tag <ethertype>
Set-Field
<field_type> <value>
Set value to arbitrary
fields.
Set TTL <ttl>
MPLS, IP
TTL (Time To Live)
Decrement TTL
Copy TTL out/inwards
OpenFlow Pipeline
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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)
Comparing Layer 2/3 Switch and OpenFlow Switch
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 12
Which packet? How to process it?
Layer 2 MAC Address
Forward to port where
Host with Dest MAC exists
Layer 3 IP Address
Set Dest MAC Address
Forward to Next Hop
OpenFlow
Set from Controller
(Based on Packet header)
Set from Controller
(Set header fields,
forward, QoS etc.)
Which packet? How to process it?
Layer 2 MAC Address
Forward to port where
Host with Dest MAC exists
Layer 3 IP Address
Set Dest MAC Address
Forward to Next Hop
OpenFlow
Set from Controller
(Based on Packet header)
Set from Controller
(Set header fields,
forward, QoS etc.)
Comparing Layer 2/3 Switch and OpenFlow Switch
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 13
How to Match/Process is pre-defined.
How to Match/Process is programmable.
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 14
Why use FPGA to build
OpenFlow Switch?
3 reasons for using FPGA to build OpenFlow Switch
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 15
Avoid restriction of existing Network Chip
Keep up with new version of standard.
Continuous improvements based on new use cases.
Avoid restriction of existing Network Chip
• Difficult to implement Full OpenFlow Pipeline using existing
network chip aimed for Layer 2/3 switch.
• TCAM is small
• Mostly used for ACL only.
• Re-use of L2/L3 Forwarding Table
• Limited match fields available on each table.
• Less Instruction / Action supported.
• Some tables cannot use most Instructions / Actions.
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 16
Continuous improvements based on new use cases.
• OpenFlow will make network programmable.
• Programmable = expected behavior / feature depends more on
Business requirements. (Compared to L2 / L3 switch)
• Sizing balance (where to put more HW resource) depends on
business model.
• Group, Meter, QoS, Packet-in/out … which one is more important??
• Datacenter CLOS Network ?
• Carrier / Provider Edge Gateway ?
• Security Gateway ?
• Wireless ?
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 17
Keep up with new version of standard.
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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
0x06History of OpenFlow Standard
2015
https://www.opennetworking.org/sdn-resources/technical-library#tech-spec
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 19
OpenFlow Switch components
Using Hardware Datapath
OpenFlow Switch components | Software
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 20
Hardware Abstraction Layer
Hardware Specific Driver
Datapath
PCIe
Open Flow Agent
Protocol Interface
Admin Interface
• Switch/Controller IP Address configuration
• Showing Status / Statistics
• Debug, Log
OF Protocol <-> Datapath data format conversion.
Managing Flow Entry Layout in Datapath (Stored in
TCAM/RAM)
Packet-in/out processing.
PCIe Driver.
FPGA packet processing board (Datapath) will be
recognized as PCI express device from OS.
Admin Interface
(CLI, syslog, SNMP)
CPU Board
FPGA / TCAM / RAM(*)
Physical Network Ports
(*) RAM = SRAM/DRAM/BlockRAM etc.
Protocol level interface between controller.
Managing Flow Table data coupled with OpenFlow
protocol.
OpenFlow Switch ~ Hardware Datapath Implementation Types
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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
Insert Flow Table
OpenFlow Agent
Packet
Type 1: Flow Installation
OpenFlow Switch ~ Hardware Datapath Implementation Types
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 22
Datapath (FPGA etc.)
Flow Cache
Table
Software (CPU)
Flow
Table #0
Flow
Table #x
Flow
Table #N
OpenFlow Agent
Packet
Type 2: Flow Cache (No Cache Entry)
Insert Flow CacheRequest
OpenFlow Switch ~ Hardware Datapath Implementation Types
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 23
Datapath (FPGA etc.)
Flow Cache
Table
Software (CPU)
Flow
Table #0
Flow
Table #x
Flow
Table #N
OpenFlow Agent
Packet
Type 2: Flow Cache (With Cache Entry)
OpenFlow Switch ~ Hardware Datapath Implementation Types
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 24
Type 1: Flow Installation Type 2: Flow Cache
 Packet in same flow has same latency
 Large delay processing initial packet of
each flow
 (Relatively) Easy to expect performance.
 Bottleneck between Datapath/CPU
 Significant performance impact when
cache over flows
 (Relatively) easy to add / mod Flow Entry
 Require Flushing Cache when add / mod
Flow Entry (Multi Table)
(Could be avoided with smart algorism but
complex)
 Consume more HW resource (for non-used
Flow Entry)
 Consume less HW resource (only active
flow)
OpenFlow Switch ~ Hardware Datapath Implementation Types
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 25
Type 1: Flow Installation Type 2: Flow Cache
 Packet in same flow has same latency
 Large delay processing initial packet of
each flow
 (Relatively) Easy to expect performance.
 Bottleneck between Datapath/CPU
 Significant performance impact when
cache over flows
 (Relatively) easy to add / mod Flow Entry
 Require Flushing Cache when add / mod
Flow Entry (Multi Table)
(Could be avoided with smart algorism but
complex)
 Consume more HW resource (for non-used
Flow Entry)
 Consume less HW resource (only active
flow)
Today we will discuss
Type 1 only.
OpenFlow Switch components | Hardware Datapath
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 26
Hardware Abstraction Layer
Hardware Specific Driver
Datapath
PCIe
Open Flow Agent
Protocol Interface
Admin Interface
• Switch/Controller IP Address configuration
• Showing Status / Statistics
• Debug, Log
OF Protocol <-> Datapath data format conversion.
Managing Flow Entry Layout in Datapath (Stored in
TCAM/RAM)
Packet-in/out processing.
PCIe Driver.
FPGA packet processing board (Datapath) will be
recognized as PCI express device from OS.
Admin Interface
(CLI, syslog, SNMP)
CPU Board
FPGA / TCAM / RAM(*)
Physical Network Ports
(*) RAM = SRAM/DRAM/BlockRAM etc.
Protocol level interface between controller.
Managing Flow Table data coupled with OpenFlow
protocol. Now Moving to
Datapath.
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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
Insert Flow Entry
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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 Input
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 29
OpenFlow Switch design trade-offs
a. Long Search / TCAM Entry Key Length
b. Update considering Priority
c. A lot of packet fields to process
Layer 2 Forwarding (MAC learning) Table Search (Using CAM)
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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
Search Key
Forward to Port #1
CAM (Exact Match)
Layer 2 Forwarding (MAC learning) Table Search (Hash Table)
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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
Search Key
Forward to Port #1
HASH
Hash Table (on SRAM)
Layer 3 Forwarding Table Search (TCAM - Longest Prefix Match)
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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
Search Key
• TCAM is required for LPM
• Search Key has fixed length
• Only 64bit even for IPv6
※ Actually masked per bit
OpenFlow Flow Table (TCAM – Simple design)
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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 …
Search Key (1248 bit)
Instruction/ Action
pop VLAN, …
push vlan, goto-table 1
Output 5, …
set-metadata, …
set-field …
…
TCAM (40 Fields, 1261 bits)
• Inefficient use of TCAM
• 1261 bit per TCAM Entry => about 40Mbit per 32K Entry
• Only a few fields used per Flow Entry
• Entry has Priority => Could require shifting when insert.
How to deal with Long Search Key (example 1)
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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
Match limited field per Table
 Some table does not require TCAM
 Cannot match entry using AND operation
(ex: MAC_DST==XXX && VLAN_ID==YY)
Search
Process
CAM or
SRAM
TCAM
How to deal with Long Search Key (example 2)
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 35
Assign ID for typical combination of match fields and add to Search Key.
 Flexible combination of match fields for all tables.
 Complex (Generating Search Key, selecting combination of fields etc.)
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
Generate Search Key
VLAN|MPLS|…|MATCH-2
PORT|IPV4_SRC|…|MATCH-3
Update considering Priority (using TCAM)
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 36
Strict Priority for all entries  Loose Priority (*1)
Resource efficiency (BAD  GOOD) | Management Logic (Simple  Complex)
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
(*1) Sort in priority order for each set of rules which can match same packet.
Trade-off depending on how to process packet fields.
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 37
Layer 3 Switch
• Modify MAC DA
• DA: Destination Address
• Decrement TTL
• Layer 2 Processing
MAC DA MAC SA VLAN EtherType MPLS IPv4 / IPv6 / ARP TCP / UDP / ICMP Payload
Layer 2 Switch
• VLAN Tag Push/Pop
Layer 2 / 3 Switch modifies only a few packet fields.
Trade-off depending on how to process packet fields.
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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
• Modification of almost any header fields
Trade-off depending on how to process packet fields.
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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
parallel processing
 Delay: small (1 ~ a few cycles)
 Logic size: Huge
Sequentially processing each field
 Delay: big (10s ~ 100+ cycles)
 Logic size: Small
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 40
For people who wants to try it…
Packet processing using FPGA is FUN!!
• Can buy at Digilent Inc.
• Part# 410-301P-KIT
• Academic:$1,695
• List price: $24,500
How to try?
• NetFPGA SUME
• NIC type FPGA board for research
and experimentation.
• 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
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 41
Photo from Digilent Inc.
http://digilentinc.com/Products/Detail.cfm?NavPath=2,1301,1311&Prod=NETFPGA-10G-SUME
How to try?
• OpenFlow implementation using
FPGA available on GitHub
• A bit old but good start.
•  Design Document
• Block Diagram
• State Machine
•  Source Code
• GitHub
•  OpenFlow 1.0 only
• Single Table (No multi-table)
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 42
https://github.com/NetFPGA/NetFPGA-public/wiki/NetFPGA-10G-OpenFlow-Switch
How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 43
!! Let’s have fun together !!
FPGA + OpenFlow
海老澤 健太郎 | Kentaro Ebisawa
Twitter: @ebiken

More Related Content

What's hot

OVN - Basics and deep dive
OVN - Basics and deep diveOVN - Basics and deep dive
OVN - Basics and deep diveTrinath Somanchi
 
Building DataCenter networks with VXLAN BGP-EVPN
Building DataCenter networks with VXLAN BGP-EVPNBuilding DataCenter networks with VXLAN BGP-EVPN
Building DataCenter networks with VXLAN BGP-EVPNCisco Canada
 
Palo alto networks NAT flow logic
Palo alto networks NAT flow logicPalo alto networks NAT flow logic
Palo alto networks NAT flow logicAlberto Rivai
 
Ceph アーキテクチャ概説
Ceph アーキテクチャ概説Ceph アーキテクチャ概説
Ceph アーキテクチャ概説Emma Haruka Iwao
 
Deploying IPv6 in OpenStack Environments
Deploying IPv6 in OpenStack EnvironmentsDeploying IPv6 in OpenStack Environments
Deploying IPv6 in OpenStack EnvironmentsShannon McFarland
 
SR-IOV+KVM on Debian/Stable
SR-IOV+KVM on Debian/StableSR-IOV+KVM on Debian/Stable
SR-IOV+KVM on Debian/Stablejuet-y
 
The TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux KernelThe TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux KernelDivye Kapoor
 
Understanding Cisco’ Next Generation SD-WAN Technology
Understanding Cisco’ Next Generation SD-WAN TechnologyUnderstanding Cisco’ Next Generation SD-WAN Technology
Understanding Cisco’ Next Generation SD-WAN TechnologyCisco Canada
 
OpenStack超入門シリーズ Novaのディスク周りあれこれ
OpenStack超入門シリーズ Novaのディスク周りあれこれOpenStack超入門シリーズ Novaのディスク周りあれこれ
OpenStack超入門シリーズ Novaのディスク周りあれこれToru Makabe
 
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方Toru Makabe
 
OpenSync: Open Source for Cloud to Device Enabled Services
OpenSync: Open Source for Cloud to Device Enabled ServicesOpenSync: Open Source for Cloud to Device Enabled Services
OpenSync: Open Source for Cloud to Device Enabled ServicesAll Things Open
 
Vxlan control plane and routing
Vxlan control plane and routingVxlan control plane and routing
Vxlan control plane and routingWilfredzeng
 
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/NeutronOverview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/Neutronvivekkonnect
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始めtetsusat
 
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVRToru Makabe
 
China Telecom Americas: SD-WAN Overview
China Telecom Americas:  SD-WAN OverviewChina Telecom Americas:  SD-WAN Overview
China Telecom Americas: SD-WAN OverviewVlad Sinayuk
 
"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越Kentaro Ebisawa
 
The linux networking architecture
The linux networking architectureThe linux networking architecture
The linux networking architecturehugo lu
 
Introduction To OpenStack
Introduction To OpenStackIntroduction To OpenStack
Introduction To OpenStackHaim Ateya
 

What's hot (20)

OVN - Basics and deep dive
OVN - Basics and deep diveOVN - Basics and deep dive
OVN - Basics and deep dive
 
Building DataCenter networks with VXLAN BGP-EVPN
Building DataCenter networks with VXLAN BGP-EVPNBuilding DataCenter networks with VXLAN BGP-EVPN
Building DataCenter networks with VXLAN BGP-EVPN
 
Palo alto networks NAT flow logic
Palo alto networks NAT flow logicPalo alto networks NAT flow logic
Palo alto networks NAT flow logic
 
Ceph アーキテクチャ概説
Ceph アーキテクチャ概説Ceph アーキテクチャ概説
Ceph アーキテクチャ概説
 
Deploying IPv6 in OpenStack Environments
Deploying IPv6 in OpenStack EnvironmentsDeploying IPv6 in OpenStack Environments
Deploying IPv6 in OpenStack Environments
 
SR-IOV+KVM on Debian/Stable
SR-IOV+KVM on Debian/StableSR-IOV+KVM on Debian/Stable
SR-IOV+KVM on Debian/Stable
 
The TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux KernelThe TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux Kernel
 
Understanding Cisco’ Next Generation SD-WAN Technology
Understanding Cisco’ Next Generation SD-WAN TechnologyUnderstanding Cisco’ Next Generation SD-WAN Technology
Understanding Cisco’ Next Generation SD-WAN Technology
 
OSPF v3
OSPF v3OSPF v3
OSPF v3
 
OpenStack超入門シリーズ Novaのディスク周りあれこれ
OpenStack超入門シリーズ Novaのディスク周りあれこれOpenStack超入門シリーズ Novaのディスク周りあれこれ
OpenStack超入門シリーズ Novaのディスク周りあれこれ
 
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
 
OpenSync: Open Source for Cloud to Device Enabled Services
OpenSync: Open Source for Cloud to Device Enabled ServicesOpenSync: Open Source for Cloud to Device Enabled Services
OpenSync: Open Source for Cloud to Device Enabled Services
 
Vxlan control plane and routing
Vxlan control plane and routingVxlan control plane and routing
Vxlan control plane and routing
 
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/NeutronOverview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
 
China Telecom Americas: SD-WAN Overview
China Telecom Americas:  SD-WAN OverviewChina Telecom Americas:  SD-WAN Overview
China Telecom Americas: SD-WAN Overview
 
"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越
 
The linux networking architecture
The linux networking architectureThe linux networking architecture
The linux networking architecture
 
Introduction To OpenStack
Introduction To OpenStackIntroduction To OpenStack
Introduction To OpenStack
 

Viewers also liked

Sdn and open flow tutorial 4
Sdn and open flow tutorial 4Sdn and open flow tutorial 4
Sdn and open flow tutorial 4UmaMahesh Sistu
 
Route flow autoconf demo 2nd sdn world congress 2013
Route flow autoconf demo   2nd sdn world congress 2013Route flow autoconf demo   2nd sdn world congress 2013
Route flow autoconf demo 2nd sdn world congress 2013FIBRE Testbed
 
Security defined routing_cybergamut_v1_1
Security defined routing_cybergamut_v1_1Security defined routing_cybergamut_v1_1
Security defined routing_cybergamut_v1_1Joel W. King
 
Chap.1 ethernet introduction
Chap.1 ethernet introductionChap.1 ethernet introduction
Chap.1 ethernet introduction東原 李
 
Ch 02 --- sdn and openflow architecture
Ch 02 --- sdn and openflow architectureCh 02 --- sdn and openflow architecture
Ch 02 --- sdn and openflow architectureYoram Orzach
 
Tutorial on SDN and OpenFlow
Tutorial on SDN and OpenFlowTutorial on SDN and OpenFlow
Tutorial on SDN and OpenFlowKingston Smiler
 
The Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitchThe Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitchTe-Yen Liu
 
WAN SDN meet Segment Routing
WAN SDN meet Segment RoutingWAN SDN meet Segment Routing
WAN SDN meet Segment RoutingAPNIC
 
OpenFlow tutorial
OpenFlow tutorialOpenFlow tutorial
OpenFlow tutorialopenflow
 
Introduction to OpenFlow, SDN and NFV
Introduction to OpenFlow, SDN and NFVIntroduction to OpenFlow, SDN and NFV
Introduction to OpenFlow, SDN and NFVKingston Smiler
 

Viewers also liked (11)

Sdn and open flow tutorial 4
Sdn and open flow tutorial 4Sdn and open flow tutorial 4
Sdn and open flow tutorial 4
 
Route flow autoconf demo 2nd sdn world congress 2013
Route flow autoconf demo   2nd sdn world congress 2013Route flow autoconf demo   2nd sdn world congress 2013
Route flow autoconf demo 2nd sdn world congress 2013
 
Security defined routing_cybergamut_v1_1
Security defined routing_cybergamut_v1_1Security defined routing_cybergamut_v1_1
Security defined routing_cybergamut_v1_1
 
Openflow Protocol
Openflow ProtocolOpenflow Protocol
Openflow Protocol
 
Chap.1 ethernet introduction
Chap.1 ethernet introductionChap.1 ethernet introduction
Chap.1 ethernet introduction
 
Ch 02 --- sdn and openflow architecture
Ch 02 --- sdn and openflow architectureCh 02 --- sdn and openflow architecture
Ch 02 --- sdn and openflow architecture
 
Tutorial on SDN and OpenFlow
Tutorial on SDN and OpenFlowTutorial on SDN and OpenFlow
Tutorial on SDN and OpenFlow
 
The Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitchThe Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitch
 
WAN SDN meet Segment Routing
WAN SDN meet Segment RoutingWAN SDN meet Segment Routing
WAN SDN meet Segment Routing
 
OpenFlow tutorial
OpenFlow tutorialOpenFlow tutorial
OpenFlow tutorial
 
Introduction to OpenFlow, SDN and NFV
Introduction to OpenFlow, SDN and NFVIntroduction to OpenFlow, SDN and NFV
Introduction to OpenFlow, SDN and NFV
 

Similar to Howto createOpenFlow Switchusing FPGA (at FPGAX#6)

Evaluation of OpenFlow in RB750GL
Evaluation of OpenFlow in RB750GLEvaluation of OpenFlow in RB750GL
Evaluation of OpenFlow in RB750GLToshiki Tsuboi
 
[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4Open Networking Summits
 
Open stackdaykorea2016 wedge
Open stackdaykorea2016 wedgeOpen stackdaykorea2016 wedge
Open stackdaykorea2016 wedgeJunho Suh
 
Install FD.IO VPP On Intel(r) Architecture & Test with Trex*
Install FD.IO VPP On Intel(r) Architecture & Test with Trex*Install FD.IO VPP On Intel(r) Architecture & Test with Trex*
Install FD.IO VPP On Intel(r) Architecture & Test with Trex*Michelle Holley
 
Krzysztof Mazepa - Netflow/cflow - ulubionym narzędziem operatorów SP
Krzysztof Mazepa - Netflow/cflow - ulubionym narzędziem operatorów SPKrzysztof Mazepa - Netflow/cflow - ulubionym narzędziem operatorów SP
Krzysztof Mazepa - Netflow/cflow - ulubionym narzędziem operatorów SPPROIDEA
 
Evolving Data Center switching with TRILL
Evolving Data Center switching with TRILLEvolving Data Center switching with TRILL
Evolving Data Center switching with TRILLbradhedlund
 
DPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitch
DPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitchDPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitch
DPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitchJim St. Leger
 
Protecting the Privacy of the Network – Using P4 to Prototype and Extend Netw...
Protecting the Privacy of the Network – Using P4 to Prototype and Extend Netw...Protecting the Privacy of the Network – Using P4 to Prototype and Extend Netw...
Protecting the Privacy of the Network – Using P4 to Prototype and Extend Netw...Open-NFP
 
FPGA-based error generator for PROFIBUS DP - Jean-Marc Capron (Yncréa Hauts-d...
FPGA-based error generator for PROFIBUS DP - Jean-Marc Capron (Yncréa Hauts-d...FPGA-based error generator for PROFIBUS DP - Jean-Marc Capron (Yncréa Hauts-d...
FPGA-based error generator for PROFIBUS DP - Jean-Marc Capron (Yncréa Hauts-d...PROFIBUS and PROFINET InternationaI - PI UK
 
Open source tools for optimizing your peering infrastructure @ DE-CIX TechMee...
Open source tools for optimizing your peering infrastructure @ DE-CIX TechMee...Open source tools for optimizing your peering infrastructure @ DE-CIX TechMee...
Open source tools for optimizing your peering infrastructure @ DE-CIX TechMee...Daniel Czerwonk
 
An FPGA for high end Open Networking
An FPGA for high end Open NetworkingAn FPGA for high end Open Networking
An FPGA for high end Open Networkingrinnocente
 
Introduction to FPGA acceleration
Introduction to FPGA accelerationIntroduction to FPGA acceleration
Introduction to FPGA accelerationMarco77328
 
Software Network Data Plane - Satisfying the need for speed - FD.io - VPP and...
Software Network Data Plane - Satisfying the need for speed - FD.io - VPP and...Software Network Data Plane - Satisfying the need for speed - FD.io - VPP and...
Software Network Data Plane - Satisfying the need for speed - FD.io - VPP and...Haidee McMahon
 
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
 
SRWE_Module_5-STP Concepts.pptx
SRWE_Module_5-STP Concepts.pptxSRWE_Module_5-STP Concepts.pptx
SRWE_Module_5-STP Concepts.pptxSaqibAli696638
 
From Fixed-Function to Programmable Switching Chip for Network Packet Broker ...
From Fixed-Function to Programmable Switching Chip for Network Packet Broker ...From Fixed-Function to Programmable Switching Chip for Network Packet Broker ...
From Fixed-Function to Programmable Switching Chip for Network Packet Broker ...Junho Suh
 
VNIX-NOG 2021: IPv6 Deployment Update
VNIX-NOG 2021: IPv6 Deployment UpdateVNIX-NOG 2021: IPv6 Deployment Update
VNIX-NOG 2021: IPv6 Deployment UpdateAPNIC
 

Similar to Howto createOpenFlow Switchusing FPGA (at FPGAX#6) (20)

Evaluation of OpenFlow in RB750GL
Evaluation of OpenFlow in RB750GLEvaluation of OpenFlow in RB750GL
Evaluation of OpenFlow in RB750GL
 
[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4
 
Open stackdaykorea2016 wedge
Open stackdaykorea2016 wedgeOpen stackdaykorea2016 wedge
Open stackdaykorea2016 wedge
 
Install FD.IO VPP On Intel(r) Architecture & Test with Trex*
Install FD.IO VPP On Intel(r) Architecture & Test with Trex*Install FD.IO VPP On Intel(r) Architecture & Test with Trex*
Install FD.IO VPP On Intel(r) Architecture & Test with Trex*
 
Krzysztof Mazepa - Netflow/cflow - ulubionym narzędziem operatorów SP
Krzysztof Mazepa - Netflow/cflow - ulubionym narzędziem operatorów SPKrzysztof Mazepa - Netflow/cflow - ulubionym narzędziem operatorów SP
Krzysztof Mazepa - Netflow/cflow - ulubionym narzędziem operatorów SP
 
Evolving Data Center switching with TRILL
Evolving Data Center switching with TRILLEvolving Data Center switching with TRILL
Evolving Data Center switching with TRILL
 
DPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitch
DPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitchDPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitch
DPDK Summit - 08 Sept 2014 - NTT - High Performance vSwitch
 
Protecting the Privacy of the Network – Using P4 to Prototype and Extend Netw...
Protecting the Privacy of the Network – Using P4 to Prototype and Extend Netw...Protecting the Privacy of the Network – Using P4 to Prototype and Extend Netw...
Protecting the Privacy of the Network – Using P4 to Prototype and Extend Netw...
 
FPGA-based error generator for PROFIBUS DP - Jean-Marc Capron (Yncréa Hauts-d...
FPGA-based error generator for PROFIBUS DP - Jean-Marc Capron (Yncréa Hauts-d...FPGA-based error generator for PROFIBUS DP - Jean-Marc Capron (Yncréa Hauts-d...
FPGA-based error generator for PROFIBUS DP - Jean-Marc Capron (Yncréa Hauts-d...
 
Open source tools for optimizing your peering infrastructure @ DE-CIX TechMee...
Open source tools for optimizing your peering infrastructure @ DE-CIX TechMee...Open source tools for optimizing your peering infrastructure @ DE-CIX TechMee...
Open source tools for optimizing your peering infrastructure @ DE-CIX TechMee...
 
An FPGA for high end Open Networking
An FPGA for high end Open NetworkingAn FPGA for high end Open Networking
An FPGA for high end Open Networking
 
OpenFlow Tutorial
OpenFlow TutorialOpenFlow Tutorial
OpenFlow Tutorial
 
Introduction to FPGA acceleration
Introduction to FPGA accelerationIntroduction to FPGA acceleration
Introduction to FPGA acceleration
 
Software Network Data Plane - Satisfying the need for speed - FD.io - VPP and...
Software Network Data Plane - Satisfying the need for speed - FD.io - VPP and...Software Network Data Plane - Satisfying the need for speed - FD.io - VPP and...
Software Network Data Plane - Satisfying the need for speed - FD.io - VPP and...
 
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)
 
SRWE_Module_5-STP Concepts.pptx
SRWE_Module_5-STP Concepts.pptxSRWE_Module_5-STP Concepts.pptx
SRWE_Module_5-STP Concepts.pptx
 
Dc fabric path
Dc fabric pathDc fabric path
Dc fabric path
 
CFI 2015 - Flow-centric Visibility Tools for OF@TEIN
CFI 2015 - Flow-centric Visibility Tools for OF@TEINCFI 2015 - Flow-centric Visibility Tools for OF@TEIN
CFI 2015 - Flow-centric Visibility Tools for OF@TEIN
 
From Fixed-Function to Programmable Switching Chip for Network Packet Broker ...
From Fixed-Function to Programmable Switching Chip for Network Packet Broker ...From Fixed-Function to Programmable Switching Chip for Network Packet Broker ...
From Fixed-Function to Programmable Switching Chip for Network Packet Broker ...
 
VNIX-NOG 2021: IPv6 Deployment Update
VNIX-NOG 2021: IPv6 Deployment UpdateVNIX-NOG 2021: IPv6 Deployment Update
VNIX-NOG 2021: IPv6 Deployment Update
 

More from 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
 
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックKentaro Ebisawa
 

More from 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
 
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
 

Recently uploaded

The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 

Recently uploaded (20)

The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 

Howto createOpenFlow Switchusing FPGA (at FPGAX#6)

  • 1. How to create OpenFlow Switch using FPGA Presented at FPGA Extreme Computing #6 2015/02/01 Kentaro Ebisawa | 海老澤 健太郎 | Twitter: @ebiken
  • 2. Disclaimer •The objective of this presentation is to “share information” related to OpenFlow Switch development and increase people interested in OpenFlow and developing Network Equipments. •Thus, it is not directly related to specification or design of any existing product. How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 2
  • 3. Self-introduction Current • Dev manager of OpenFlow Switch @ start-up company (Riava Networks, Inc.) Past • Several Technical role at multiple startup companies to help booting up team or company, growing presence in Asia market. • Head of support team • Sales Engineer (SE) • Solution Architect designing OSS/BSS. • Product design and research. • Development management. • Twitter: @ebiken • Technical Area • 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 How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 3
  • 4. List of Contents 1. What is “OpenFlow Switch” ? (Comparing with Layer 2 / 3 switch) 2. Why use FPGA to build OpenFlow Switch? 3. OpenFlow Switch components 4. OpenFlow Switch design trade-offs How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 4
  • 5. How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 5 What is “OpenFlow Switch” ? Comparing with Layer 2 / 3 switch.
  • 6. How traditional network switch works (Layer 2) How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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 • Self learning (Source MAC) Action (match) • Forward to Port Action (no-match) • Flooding VLAN 1 VLAN 2
  • 7. How traditional network switch works (Layer 3) How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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 etc. Action (match) • Decrement TTL • Modify Destination MAC • Forward to Port Action (no-match) • Drop • Send “ICMP Dest untreachable”
  • 8. How OpenFlow switch works How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 8 Multiple Flow (Lookup) Tables 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 • Inject from Controller 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. Which packet? (OpenFlow Match Field : 40 Fields, 1261 bits) How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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. How to process it? (OpenFlow Instruction / Action) How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 10 Instruction Meter Policing(Rate-Limit) Apply-Actions Apply Imidiately Clear-Actions Initialize Action Set Write-Actions Add to Action Set Write-Metadata Stamp metadata Goto-Table <ID> Go through another table Action (アクション) Output <port_no> Forward packet Group <group_id> Group processing Set-Queue <queue_id> Assign Queue Push-Tag <ethertype> MPLS,PBB,VLAN Pop-Tag <ethertype> Set-Field <field_type> <value> Set value to arbitrary fields. Set TTL <ttl> MPLS, IP TTL (Time To Live) Decrement TTL Copy TTL out/inwards
  • 11. OpenFlow Pipeline How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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. Comparing Layer 2/3 Switch and OpenFlow Switch How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 12 Which packet? How to process it? Layer 2 MAC Address Forward to port where Host with Dest MAC exists Layer 3 IP Address Set Dest MAC Address Forward to Next Hop OpenFlow Set from Controller (Based on Packet header) Set from Controller (Set header fields, forward, QoS etc.)
  • 13. Which packet? How to process it? Layer 2 MAC Address Forward to port where Host with Dest MAC exists Layer 3 IP Address Set Dest MAC Address Forward to Next Hop OpenFlow Set from Controller (Based on Packet header) Set from Controller (Set header fields, forward, QoS etc.) Comparing Layer 2/3 Switch and OpenFlow Switch How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 13 How to Match/Process is pre-defined. How to Match/Process is programmable.
  • 14. How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 14 Why use FPGA to build OpenFlow Switch?
  • 15. 3 reasons for using FPGA to build OpenFlow Switch How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 15 Avoid restriction of existing Network Chip Keep up with new version of standard. Continuous improvements based on new use cases.
  • 16. Avoid restriction of existing Network Chip • Difficult to implement Full OpenFlow Pipeline using existing network chip aimed for Layer 2/3 switch. • TCAM is small • Mostly used for ACL only. • Re-use of L2/L3 Forwarding Table • Limited match fields available on each table. • Less Instruction / Action supported. • Some tables cannot use most Instructions / Actions. How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 16
  • 17. Continuous improvements based on new use cases. • OpenFlow will make network programmable. • Programmable = expected behavior / feature depends more on Business requirements. (Compared to L2 / L3 switch) • Sizing balance (where to put more HW resource) depends on business model. • Group, Meter, QoS, Packet-in/out … which one is more important?? • Datacenter CLOS Network ? • Carrier / Provider Edge Gateway ? • Security Gateway ? • Wireless ? How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 17
  • 18. Keep up with new version of standard. How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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 0x06History of OpenFlow Standard 2015 https://www.opennetworking.org/sdn-resources/technical-library#tech-spec
  • 19. How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 19 OpenFlow Switch components Using Hardware Datapath
  • 20. OpenFlow Switch components | Software How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 20 Hardware Abstraction Layer Hardware Specific Driver Datapath PCIe Open Flow Agent Protocol Interface Admin Interface • Switch/Controller IP Address configuration • Showing Status / Statistics • Debug, Log OF Protocol <-> Datapath data format conversion. Managing Flow Entry Layout in Datapath (Stored in TCAM/RAM) Packet-in/out processing. PCIe Driver. FPGA packet processing board (Datapath) will be recognized as PCI express device from OS. Admin Interface (CLI, syslog, SNMP) CPU Board FPGA / TCAM / RAM(*) Physical Network Ports (*) RAM = SRAM/DRAM/BlockRAM etc. Protocol level interface between controller. Managing Flow Table data coupled with OpenFlow protocol.
  • 21. OpenFlow Switch ~ Hardware Datapath Implementation Types How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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 Insert Flow Table OpenFlow Agent Packet Type 1: Flow Installation
  • 22. OpenFlow Switch ~ Hardware Datapath Implementation Types How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 22 Datapath (FPGA etc.) Flow Cache Table Software (CPU) Flow Table #0 Flow Table #x Flow Table #N OpenFlow Agent Packet Type 2: Flow Cache (No Cache Entry) Insert Flow CacheRequest
  • 23. OpenFlow Switch ~ Hardware Datapath Implementation Types How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 23 Datapath (FPGA etc.) Flow Cache Table Software (CPU) Flow Table #0 Flow Table #x Flow Table #N OpenFlow Agent Packet Type 2: Flow Cache (With Cache Entry)
  • 24. OpenFlow Switch ~ Hardware Datapath Implementation Types How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 24 Type 1: Flow Installation Type 2: Flow Cache  Packet in same flow has same latency  Large delay processing initial packet of each flow  (Relatively) Easy to expect performance.  Bottleneck between Datapath/CPU  Significant performance impact when cache over flows  (Relatively) easy to add / mod Flow Entry  Require Flushing Cache when add / mod Flow Entry (Multi Table) (Could be avoided with smart algorism but complex)  Consume more HW resource (for non-used Flow Entry)  Consume less HW resource (only active flow)
  • 25. OpenFlow Switch ~ Hardware Datapath Implementation Types How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 25 Type 1: Flow Installation Type 2: Flow Cache  Packet in same flow has same latency  Large delay processing initial packet of each flow  (Relatively) Easy to expect performance.  Bottleneck between Datapath/CPU  Significant performance impact when cache over flows  (Relatively) easy to add / mod Flow Entry  Require Flushing Cache when add / mod Flow Entry (Multi Table) (Could be avoided with smart algorism but complex)  Consume more HW resource (for non-used Flow Entry)  Consume less HW resource (only active flow) Today we will discuss Type 1 only.
  • 26. OpenFlow Switch components | Hardware Datapath How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 26 Hardware Abstraction Layer Hardware Specific Driver Datapath PCIe Open Flow Agent Protocol Interface Admin Interface • Switch/Controller IP Address configuration • Showing Status / Statistics • Debug, Log OF Protocol <-> Datapath data format conversion. Managing Flow Entry Layout in Datapath (Stored in TCAM/RAM) Packet-in/out processing. PCIe Driver. FPGA packet processing board (Datapath) will be recognized as PCI express device from OS. Admin Interface (CLI, syslog, SNMP) CPU Board FPGA / TCAM / RAM(*) Physical Network Ports (*) RAM = SRAM/DRAM/BlockRAM etc. Protocol level interface between controller. Managing Flow Table data coupled with OpenFlow protocol. Now Moving to Datapath.
  • 27. How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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 Insert Flow Entry
  • 28. How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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 Input
  • 29. How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 29 OpenFlow Switch design trade-offs a. Long Search / TCAM Entry Key Length b. Update considering Priority c. A lot of packet fields to process
  • 30. Layer 2 Forwarding (MAC learning) Table Search (Using CAM) How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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 Search Key Forward to Port #1 CAM (Exact Match)
  • 31. Layer 2 Forwarding (MAC learning) Table Search (Hash Table) How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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 Search Key Forward to Port #1 HASH Hash Table (on SRAM)
  • 32. Layer 3 Forwarding Table Search (TCAM - Longest Prefix Match) How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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 Search Key • TCAM is required for LPM • Search Key has fixed length • Only 64bit even for IPv6 ※ Actually masked per bit
  • 33. OpenFlow Flow Table (TCAM – Simple design) How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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 … Search Key (1248 bit) Instruction/ Action pop VLAN, … push vlan, goto-table 1 Output 5, … set-metadata, … set-field … … TCAM (40 Fields, 1261 bits) • Inefficient use of TCAM • 1261 bit per TCAM Entry => about 40Mbit per 32K Entry • Only a few fields used per Flow Entry • Entry has Priority => Could require shifting when insert.
  • 34. How to deal with Long Search Key (example 1) How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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 Match limited field per Table  Some table does not require TCAM  Cannot match entry using AND operation (ex: MAC_DST==XXX && VLAN_ID==YY) Search Process CAM or SRAM TCAM
  • 35. How to deal with Long Search Key (example 2) How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 35 Assign ID for typical combination of match fields and add to Search Key.  Flexible combination of match fields for all tables.  Complex (Generating Search Key, selecting combination of fields etc.) 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 Generate Search Key VLAN|MPLS|…|MATCH-2 PORT|IPV4_SRC|…|MATCH-3
  • 36. Update considering Priority (using TCAM) How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 36 Strict Priority for all entries  Loose Priority (*1) Resource efficiency (BAD  GOOD) | Management Logic (Simple  Complex) 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 (*1) Sort in priority order for each set of rules which can match same packet.
  • 37. Trade-off depending on how to process packet fields. How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 37 Layer 3 Switch • Modify MAC DA • DA: Destination Address • Decrement TTL • Layer 2 Processing MAC DA MAC SA VLAN EtherType MPLS IPv4 / IPv6 / ARP TCP / UDP / ICMP Payload Layer 2 Switch • VLAN Tag Push/Pop Layer 2 / 3 Switch modifies only a few packet fields.
  • 38. Trade-off depending on how to process packet fields. How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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 • Modification of almost any header fields
  • 39. Trade-off depending on how to process packet fields. How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @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 parallel processing  Delay: small (1 ~ a few cycles)  Logic size: Huge Sequentially processing each field  Delay: big (10s ~ 100+ cycles)  Logic size: Small
  • 40. How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 40 For people who wants to try it… Packet processing using FPGA is FUN!!
  • 41. • Can buy at Digilent Inc. • Part# 410-301P-KIT • Academic:$1,695 • List price: $24,500 How to try? • NetFPGA SUME • NIC type FPGA board for research and experimentation. • 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 How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 41 Photo from Digilent Inc. http://digilentinc.com/Products/Detail.cfm?NavPath=2,1301,1311&Prod=NETFPGA-10G-SUME
  • 42. How to try? • OpenFlow implementation using FPGA available on GitHub • A bit old but good start. •  Design Document • Block Diagram • State Machine •  Source Code • GitHub •  OpenFlow 1.0 only • Single Table (No multi-table) How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 42 https://github.com/NetFPGA/NetFPGA-public/wiki/NetFPGA-10G-OpenFlow-Switch
  • 43. How to create OpenFlow Switch using FPGA | FPGA Extreeme Computing #6 | FPGAX 2014/02/01 | Twitter: @ebiken 43 !! Let’s have fun together !! FPGA + OpenFlow 海老澤 健太郎 | Kentaro Ebisawa Twitter: @ebiken