SlideShare a Scribd company logo
1 of 55
Download to read offline
1© PIOLINK, Inc. SDN No.1
OpenFlow 1.5.1
2015-05-15 파이오링크
SDN개발실 정병화 byeonghwa.jung@piolink.com
2© PIOLINK, Inc. SDN No.1
목차
● OpenFlow History
● OpenFlow 1.1 Feature
● OpenFlow 1.2 Feature
● OpenFlow 1.3 Feature
● OpenFlow 1.4 Feature
● OpenFlow 1.5 Feature
● OpenFlow 1.3.5 Feature
● OpenFlow 1.4.1 Feature
● OpenFlow 1.5.1 Feature
● Appendix
○ A. OpenFlow Components
○ B. Deep Dive - overlapping flow entry, synchronised table, metering
○ C. Post OVS Feature
● Reference
3© PIOLINK, Inc. SDN No.1
ExtensibleBasic
Refactoring
architecture
Generic
structure
Flexible
structure
New
function &
component
~ 1.0 1.2 ~ 1.51.1
OpenFlow history
4© PIOLINK, Inc. SDN No.1
1.0
1.5
1.1 1.2
1.31.4
Multiple table
Group
Extensible Match support
Controller role change mechanism Refactor capabilities negotiation
More flexible table miss support
Per flow meters
Auxiliary connections
Tunnel-ID metadata
More extensible wire protocol
Flow monitoring
Eviction
Vacancy events
Bundles
Egress Tables
Packet type aware pipeline
Extensible flow entry statistics
Meter action
port properties for pipeline fields
Port property for recirculation
2009-12-31 2011-02-28 2011-12-05
2012-04-132013-08-052014-12-01
약14개월 약8개월
약4개월
약14개월약17개월
OpenFlow history
5© PIOLINK, Inc. SDN No.1
OpenFlowhistory
Flow
Table Flow
Table
Flow
Table
v1.2
v1.3
v1.4
v1.5
v1.1
Multiple Table
& Pipeline
Group
Table
Port
OpenFlow
Chanel
Virtual port
Extensible match (OXM)
prerequisite system
experimenter match
ipv6 match
Match
Action set
Controller
OpenFlow
Message
Instruction
Action
‘set_field’ action
Metadata field
rename
Logical port
refactor capabilities
multipart framework
flexible table miss as flow
entry
ipv6 extension header match
meter
Meter
Table
per connection event filtering OpenFlow
Chanel
Controller
Auxiliary
connections
Multiple Controller
active & standby role
Tunnel-ID metadata
More extensible OXM
(port,table,queue,action,etc)
More descriptive reason for packet-in
Bundles Message
Optical port
properties
Flow monitoring
Eviction
Vacancy events
TCP port to 6653
Flow
Table
Flow
TableMultiple Table
& Pipeline
egress table
Packet type pipeline fields
Packet register pipeline fields
TCP flags
Extensible flow entry statistics
meter action
‘copy_field’
action Statistic Trigger
scheduled bundles
properties for pipe line fields
properties for recirculation
6© PIOLINK, Inc. SDN No.1
OpenFlow 1.1 Feature (B.9.x)
1. Multiple Tables
2. Groups
3. Tags : MPLS & VLAN
4. Virtual ports
5. Controller connection failure
6. Other changes
a. Rename VENDOR APIs to EXPERIMENTER APIs
7© PIOLINK, Inc. SDN No.1
OpenFlow 1.2 Feature (B.10.x)
1. Extensible match support
2. Extensible ‘set_field’ packet rewriting support
3. Extensible contest expression in ‘packet_in’
4. Extensible Error messages via experimenter error type
5. IPv6 support added
6. Simplified behaviour of flow-mod request
7. Removed packet parsing specification
8. Controller role change mechanism
9. Other changes
a. Virtual ports renamed logical ports
8© PIOLINK, Inc. SDN No.1
OpenFlow 1.3.0 Feature (B.11.x)
1. Refactor capabilities negotiation
2. More flexible table miss support
3. IPv6 Extension Header handling support
4. Per flow meters
5. Per connection event filtering
6. Auxiliary connections
7. MPLS BoS matching
8. Provider Backbone Bridging tagging
9. Rework tag order
10. Tunnel-ID metadata
11. Cookies in packet-in
12. Duration for stats
13. On demand flow counters
9© PIOLINK, Inc. SDN No.1
1. Refactor capabilities negotiation
● 목적
○ Capability 표현하기 위한 flexible한 framework로 개선
● 특징
○ Rename
■ ‘stats’ -> ‘multipart’ framework
○ Table capabilities 개선.
■ Table statistics로부터 capabilities를 분리함.
■ Capabilities 정보들을 generic & flexible TLV format으로 변경.
■ New capabilities
● Experimenter property
● Table-miss 정보.
○ Port list descriptions 정보 추가됨.
OpenFlow 1.3 New Feature
10© PIOLINK, Inc. SDN No.1
2. More flexible table miss support
● 목적
○ Table miss시 다양한 동작을 할 수 있도록 flexible한 구조로 변경.
● 특징
○ Table-misses 표현 방법 변경.
■ 이전 - table의 flags를 사용.
■ V1.3 - flow entry 사용.
● Match fields - all wildcard & lowest priority
○ Table-misses handling 확장.
■ 이전 - 3가지 (drop, controller, goto-table)
■ V1.3 - flow entry의 모든 Instruction
● eg. normal output action
○ Multipart capabilities에 table-miss 추가됨.
OpenFlow 1.3 New Feature
11© PIOLINK, Inc. SDN No.1
4. Per flow meters
● 목적
○ Flow entry에 meter 를 mapping하여 packet rate를 측정.
● 특징
○ New instruction - meter
○ Rate-limit 기능.
○ Flexible meter framework
■ Multipart capabilities에 metering band, statistics, capabilities 추가됨.
Meter
Identifier
Meter
Bands
Counters
Main components of a meter entry in the meter table.
Band Type Rate Counters
Type specific
arguments
Main components of a meter band in a meter entry.
Band Type
● drop
● dscp remark
OpenFlow 1.3 New Feature
12© PIOLINK, Inc. SDN No.1
6. Auxiliary connections
● 목적
○ Switch 처리성능 개선
● Controller channel의 개수
○ main connection - one
○ auxiliary connections - multiple
● 특징
○ 식별 ID - (Datapath-ID : Auxiliary-ID) 조합.
■ Main connection - (N : 0)
■ Auxiliary connection - (N : M)
○ Main connection에 의존적.
■ Main connection 연결 close 시 all auxiliary도 강제 close.
■ Main connection과 L4 port 만 다름.
○ Packet-out이 아닌 모든 메시지는 main connection에서 전송되어야 함.
○ Packet-in으로부터 생성된 모든 packet-out은 packet-in을 수신한 connection으로 전송되어
야 함.
Main
connection
Auxiliary
connection
OpenFlow
Switch
Controller
OpenFlow 1.3 New Feature
13© PIOLINK, Inc. SDN No.1
10. Tunnel ID metadata
● 목적
○ 다양한 encapsulation 지원
● 특징
○ Logical port에서 tunnel-id metadata를 저장.
○ New pipeline field - OXM_OF_TUNNEL_ID
○ metadata value - demultiplexing field from encapsulation header
■ eg. GRE key field from GRE header
■ eg. MPLS Label, VNI from VxLAN
○ Use Case) GTP TEID 를 사용하는 SGW, PGW
OpenFlow 1.3 New Feature
14© PIOLINK, Inc. SDN No.1
OpenFlow 1.4.0 Feature (B.16.x)
1. More extensible wire protocol
2. More descriptive reasons for packet-in
3. Optical port properties
4. Flow-removed reason for meter delete
5. Flow monitoring
6. Role status events
7. Eviction
8. Vacancy events
9. Bundles
10. Synchronised tables
11. Group and Meter change notifications
12. Error code for bad priority
13. Error code for Set-async-config
14. PBB UCA header field
15. Error code for duplicate instruction
16. Error code for multipart timeout
17. Change default TCP port to 6653
15© PIOLINK, Inc. SDN No.1
1. More extensible wire protocol
● 배경
○ 고정된 자료구조 & 제한된 확장성 개선필요.
● 특징
○ 프로트콜의 여러 part에 TLV format 적용.
○ 확장
■ Port structure - [description, mod, states] properties
■ Table structure - mod, descriptions properties, status asynchronous message
■ Queue structure - states properties
■ Set-async structure - set-async experimenter properties
■ Properties errors - unified error codes for all properties
○ 고정된 자료구조 개선
■ Queue structure - description properties
■ Set-async structure - set-async-config
OpenFlow 1.4 New Feature
16© PIOLINK, Inc. SDN No.1
5. Flow monitoring
● 목적
○ 하나의 controller가 지정한 flow table의 flow의 변화를 monitoring.
● 특징
○ Multi-controller scheme
○ 하나의 controller가 여러개의 monitor를 정의.
■ 하나의 monitor는 관찰할 flow table [table-id]을 선택.
○ Switch가 monitoring하기 위한 controller 지정.
■ Multipart message 이용 - ofp_flow_monitor_request
OpenFlow 1.4 New Feature
17© PIOLINK, Inc. SDN No.1
7. Eviction
● 배경
○ Switch의 flow table이 full 이어서 flow setup에 실패하면, controller에게 error 메시지를 전
송.
○ 그러나, controller가 이때 대응하게 되면 service에 제공에 문제발생.
● 기능 설명
○ new flow setup시 flow table가 full 일경우, switch는 priority가 낮은 flow entry를 삭제하고
공간을 확보함.
● 특징
○ Table-mod flags - OFPTC_EVICTION
○ Flow-mod - importance
○ Table-desc eviction property - ofp_table_mod_prop_eviction
OpenFlow 1.4 New Feature
18© PIOLINK, Inc. SDN No.1
8. Vacancy events
● 배경
○ Switch의 flow table이 full 이어서 flow setup에 실패하면, controller에게 error 메시지를 전
송.
○ 그러나, controller가 이때 대응하게 되면 service에 제공에 문제발생.
● 기능 설명
○ threshold capacity를 통해서 table이 full 되기전에 event 메시지를 controller에 전송.
● 특징
○ table status event - OFPT_TABLE_STATUS
○ Table-mod vacancy property - ofp_table_mod_prop_vacancy
OpenFlow 1.4 New Feature
19© PIOLINK, Inc. SDN No.1
9. Bundles
● 목적
○ OpenFlow message들을 하나의 group으로 묶어서 atomic operation의 효과.
● 특징
○ Bundle control message - OFPT_BUNDLE_CONTROL
■ bundle을 create, destroy, commit
○ Bundle add message - OFPT_BUNDLE_ADD_MESSAGE
■ bundle에 OpenFlow message를 추가함.
○ Bundle error type - OFPET_BUNDLE_FAILED
OpenFlow 1.4 New Feature
20© PIOLINK, Inc. SDN No.1
10. Synchronized tables
● 배경
○ 많은 스위치들은 동일한 데이터로 multiple lookup을 수행
○ openflow에서 multiple table을 사용하고 내부적으로 동일한 데이터로 multiple lookup을 수
행하는 경우가 있음
● 목적
○ 동일한 데이터를 처리하는 연관된 table들을 관리시 효율성 증대
● 간단한 사례
○ Multicast에서 IP forwarding 데이터를 재사용하는 RPF check 처리
○ L2 table에서 mac learning/forwarding lookup
● 특징
○ New property for table feature - OFPTFPT_TABLE_SYNC_FROM
○ 두 flow table 사이에 synchronisation abstraction 정의
21© PIOLINK, Inc. SDN No.1
OpenFlow 1.5.0 Feature (B.18.x)
1. Egress Tables
2. Packet Type aware pipeline
3. Extensible Flow Entry Statistics
4. Flow Entry Statistics Trigger
5. Copy-Field action to copy between two OXM fields
6. Packet Register pipeline fields
7. TCP flags matching
8. Group command for selective bucket operation
9. Alloc set-field action to set metadata field
10. Allow wildcard to be used in set-field action
11. Scheduled Bundles
12. Controller connection status
13. Meter action
14. Enable setting all pipeline fields in packet-out
15. Port properties for pipeline fields
16. Port property for recirculation
17. Clarify and improve barrier
18. Always generate port status on port config change
19. Make all Experimenter OXM-IDs 64 bits
20. Unified requests for group, port and queue multiparts
21. Rename some type for consistency
22. Specification reorganisation
22© PIOLINK, Inc. SDN No.1
1. Egress Tables
● 이전 버전
○ 없음
● Version 1.5
○ Output Port Context에서도 processing을 할 수 있도록 egress tables를 도입.
○ New OXM field - OXM_OF_ACTSET_OUTPUT
○ 특징
■ Egress mirroring 기능 (action list에서 output action 사용)
■ Egress flow entry에서 group과 action set에서 output action 사용 못함.
Figure. Packet flow through the processing
OpenFlow 1.5 New Feature
23© PIOLINK, Inc. SDN No.1
2. Packet Type aware pipeline
● 이전 버전
○ Ethernet packet만 처리함.
● Version 1.5
○ 다양한 Packet type 식별하여 처리함.
○ New OXM field (Pipeline match field) - OXM_OF_PACKET_TYPE
○ 특징
■ header fields의 prerequisite로서 사용.
■ packet type을 식별하기 위한 matching 으로 사용.
■ packet-in, packet-out에서 payload를 식별하기 위해 사용.
Packet Types.
namespace ns type Match description Packet-in and packet-out format
0 0 Ethernet packet (default type). Ethernet header and Ethernet payload.
1 0x800 IPv4 packet (with no header in front). IPv4 header and IPv4 payload.
1 0x86dd IPv6 packet (with no header in front). IPv6 header and IPv6 payload.
0 1 No packet (for example circuit switch). Empty.
0 0xFFFF Experimenter defined. Experimenter defined.
OpenFlow 1.5 New Feature
24© PIOLINK, Inc. SDN No.1
3. Extensible Flow Entry Statistics
● 이전 버전
○ Flow entry statistics - 고정된 구조체를 사용.
● Version 1.5
○ OXS (OpenFlow eXtensible Statistic) field 도입 - TLV Format
○ 기존의 (flow duration, flow count, packet count, byte count) statistics를 OXS field로
redefine.
○ New flow statistic entry - flow idle time
○ 통계값과 관련된 message의 format을 OXS field로 변경.
■ flow removed message
■ flow statistics multipart
■ flow aggregate multipart
OpenFlow 1.5 New Feature
25© PIOLINK, Inc. SDN No.1
4. Flow Entry Statistics Trigger
● 이전 버전
○ Polling flow entry statistics 방식 - 높은 overhead & utilisation.
● Version 1.5
○ Statistics trigger 방식 도입.
○ Threshold 값에 기반해서 컨트롤러에 통계정보를 보냄.
○ New Instruction - OFPIT_STAT_TRIGGER (Threshold 정의)
OpenFlow 1.5 New Feature
26© PIOLINK, Inc. SDN No.1
5. Copy-Field action to copy between two OXM fields
● 이전 버전
○ 없음.
○ 유사 기능 - Set-field action
■ One header or pipeline field에 static value를 설정.
● Version 1.5
○ New action - Copy-field action (OFPAT_COPY_FIELD)
○ One header or pipeline field를 another header or pipeline field로 Copy 함.
OpenFlow 1.5 New Feature
27© PIOLINK, Inc. SDN No.1
6. Packet Register pipeline fields
● 이전 버전
○ 없음.
● Version 1.5
○ Packet register fields - OXM_OF_PKT_REG(N)
○ Pipeline processing에서 packet의 정보를 임시로 저장하기 위해 사용.
○ 특징
■ Matching 용도로 사용되지 않음.
■ set-field 와 copy-field action 과 함께 사용됨.
OpenFlow 1.5 New Feature
28© PIOLINK, Inc. SDN No.1
7. TCP flags matching
● 이전 버전
○ 없음.
● Version 1.5
○ New OXM field - OFPXMT_OFB_TCP_FLAGS
○ TCP header의 flags bits 식별.
○ TCP connection의 시작/끝을 detect
OpenFlow 1.5 New Feature
29© PIOLINK, Inc. SDN No.1
8. Group command for selective bucket operation
● 이전 버전
○ 하나의 Group에서 전체 group bucket 만을 변경 가능함.
● Version 1.5
○ 하나의 Group에서 지정한 group bucket만을 삭제하고 삽입할 수 있음.
○ bucket에 bucket_id 추가됨.
OpenFlow 1.5 New Feature
30© PIOLINK, Inc. SDN No.1
9. Alloc set-field action to set metadata field
● 이전 버전
○ 제약사항 - OXM_OF_METADATA을 지원 안함.
● Version 1.5
○ OXM_OF_METADATA가 set-field action의 valid argument로 추가됨.
OpenFlow 1.5 New Feature
31© PIOLINK, Inc. SDN No.1
10. Allow wildcard to be used in set-field action
● 이전 버전
○ set-field action은 전체 field 를 설정.
● Version 1.5
○ set-field action에 mask를 적용하여, set-field의 지정한 bits만 수정 가능함.
OpenFlow 1.5 New FeatureOpenFlow 1.5 New Feature
32© PIOLINK, Inc. SDN No.1
11. Scheduled Bundles
● 이전 버전
○ 1.4버전에서 bundle feature가 추가됨.
● Version 1.5
○ bundle feature 확장
■ Scheduled bundles - bundle commit message 에 execution time 추가됨.
■ Bundle features request - controller가 switch에게 bundle capabilities 정보를 query.
● 종류: atomic bundles, ordered bundles, scheduled bundles.
● Multipart message 이용 - bundle features multipart (7.3.5.20)
OpenFlow 1.5 New Feature
33© PIOLINK, Inc. SDN No.1
12. Controller connection status
● 이전 버전
○ 없음.
● Version 1.5
○ controller가 switch와 연결된 모든 controller의 상태를 알도록 함.
○ Multipart Messages 이용 - Controller status multipart
OpenFlow 1.5 New Feature
34© PIOLINK, Inc. SDN No.1
13. Meter action
● 이전 버전
○ metering 실행 - Meter instruction
● Version 1.5
○ metering실행 - Meter action
○ 장점
■ 하나의 flow에 대해서 multiple meter가 가능해짐
● 현재 측정된 rate보다 작은 것중에서 가장 높이 설정된 rate의 meter를 수행.
● Use Case) P-GW의 Policy Rule (from PCRF)
■ group bucket 안에서 사용 가능해짐
OpenFlow 1.5 New Feature
35© PIOLINK, Inc. SDN No.1
14. Enable setting all pipeline fields in packet-out
● 이전 버전
○ packet-out 메시지에 In-Port pipeline field만 설정했음.
● Version 1.5
○ packet-out 메시지에 모든 pipeline field를 설정 가능함.
○ 특징
■ packet-out 메시지에 OXM pipeline fields를 추가함.
OpenFlow 1.5 New Feature
36© PIOLINK, Inc. SDN No.1
15. Port properties for pipeline fields
● 이전 버전
○ 없음.
● Version 1.5
○ Logical port는 pipeline fields를 사용하거나 생성함.
■ ex) pipeline field Tunnel-ID를 사용하는 Logical port
● encapsulation과 관련된 metadata를 생성 or 사용함.
○ New port description property
■ OFPPDP_PIPLINE_INPUT
● 수신된 packet에 제공되는 the list of pipeline fields 저장.
■ OFPPDP_PIPLINE_OUTPUT
● packet을 전송할때 사용되는 the list of pipeline fields 저장.
OpenFlow 1.5 New Feature
ofp_port_desc_prop_oxm
ofp_port
Array of OXM headers
37© PIOLINK, Inc. SDN No.1
16. Port property for recirculation
● 이전 버전
○ 없음.
● Version 1.5
○ Recirculation 의미?
■ OpenFlow pipeline을 통해 처리된 packet이 다른 switch로 forwarding 되지 않고 다시
동일한 switch의 port로 수신되어 OpenFlow pipeline을 수행하는 것.
○ 배경
■ Logical ports은 OpenFlow switch 안에서 network service를 제공함.
■ 이경우, Logical port로 보내진 packet은 network service를 처리한 후 다시 그 port로
되돌아 오게됨.
■ eg. tunnel endpoint or bidirectional packet processing
○ 특징
■ Packet이 recirculation되는 port는 연관된 input ports의 list를 저장함.
■ Recirculation은 다양한 pipeline fields를 저장함.
● eg. Tunnel-ID field.
○ Use Case) Service Chaining
OpenFlow 1.5 New Feature
ofp_port_desc_prop_recirculate
ofp_port
port list [N]
38© PIOLINK, Inc. SDN No.1
OpenFlow 1.3.5 Feature
● non-static의 Flow-mod (modify, delete) request는 부분적으로 적용 될 수 없음.
○ non-static Flow-mod(modify, delete)의 match fields와 matching되는 모든 flow entry들은 모
두 삭제 되거나 수정됨.
○ 만약, 이중 하나의 entry라도 적용될 수 없으면, 부분적으로 적용될 수 없음.
● flow overlap의 정의를 상세화 - overlapping entry는 equal이 아님
○ Deep Dive - overlapping flow entry 참조
● alternate OpenFlow connection transports
○ multiplexing, reliability, ordered delivery, segmentation/reassembly, flow control, security를
제공할 수 있는 transport protocol 이어야함.
○ 기존 - main connection (tcp, tls), auxiliary connection (tcp, tls, udp, tlsd)
● controller channel connection URI from OF1.5
○ switch는 각각의 controller connection을 standard URI를 통해 식별 가능
○ connection URI 형태 - protocol:name-or-address:port
(e. g. tcp:192.168.10.98:6655)
39© PIOLINK, Inc. SDN No.1
OpenFlow 1.3.5 Feature
● flow table은 생성할 때 number를 지정할 수 있음.
○ 이전에는 table ID가 sequential하게 증가 되도록 table을 생성해야 했음.
● flow-mod commands와 flags가 mandatory 되어야 하는 것을 명시
● physical port는 optional이고, 사용된다면 OpenFlow port임
● counter는 full bit range를 사용해야 함.
40© PIOLINK, Inc. SDN No.1
OpenFlow 1.4.1 Feature
● 주로 synchronisation 관련 변화
○ synchronisation관련 flow entry 추가할 때, 기존 merging 했던 것을 overwrite 함.
○ synchronisation flow table에 overlap flag를 사용한 flow modify 사용 못함.
○ bidirectional synchronised tables을 위해 reversible translation 지원
○ synchronisation error 추가 - OFPFMFC_IS_SYNC
● 그밖에
○ bundle과 flow monitoring을 위한 switch feature 추가
○ vacancy property, bundle, flow monitoring - optional임을 명시
41© PIOLINK, Inc. SDN No.1
OpenFlow 1.5.1 Feature
● Add new error OFPBAC_BAD_METER for bad meter in flow-mod
○ 수신된 메시지 안의 meter action이 스위치에 정의 되지 않은 경우 error 리턴
● Don’t specify how each packet is mapped into each meter band
○ band를 선택하는 알고리즘(measured rate에 대한 계산)은 표준문서에서 정의하
지 않고 구현에 맞김.
enum ofp_bad_action_code {
…
OFPBAC_BAD_METER = 17, /* Invalid meter id in meter action */
}
© PIOLINK, Inc. SDN No.1
A. OpenFlow Components.
B. Deep Dive - overlapping flow entry, synchronised table, metering
C. Post OVS-v2.3.0
Appendix.
42
43© PIOLINK, Inc. SDN No.1
Main components of an OpenFlow switch
Appendix A. OpenFlow components.
44© PIOLINK, Inc. SDN No.1
Flow table 구성정보
Priority Couters Timeouts Cookie Flags
Main components of a flow entry in a flow table
uint16_t type;
uint16_t length;
uint8_t oxm_fields[0];
uint8_t pad[4];
struct
ofp_match
OXM TLV header
oxm_type
enum ofp_instruction_type {
OFPIT_GOTO_TABLE = 1,
OFPIT_WRITE_METADATA = 2,
OFPIT_WRITE_ACTIONS = 3,
OFPIT_APPLY_ACTIONS = 4,
OFPIT_CLEAR_ACTIONS = 5,
OFPIT_DEPRECATED = 6,
OFPIT_STAT_TRIGGER = 7,
OFPIT_EXPERIMENTER = 0xFFFF
}
uint16_t type;
uint16_t length;
uint8_t pad[4];
uint8_t ofp_instruction_actions[0];
struct ofp_instruction_actions
struct
ofp_match
uint16_t type;
uint16_t length;
struct
ofp_action_header
enum ofp_oxm_class {
OFPXMC_NXM_0 = 0x0000,
OFPXMC_NXM_1 = 0x0001,
OFPXMC_OPENFLOW_BASIC = 0x8000,
OFPXMC_PACKET_REGS = 0x8001,
OFPXMC_EXPERIMENTER = 0xFFFF,
}
enum ofp_match_type {
OFPMT_STANDARD = 0,
OFPMT_OXM = 1,
}
/* Flow Match Fields - 45개 */
enum oxm_ofb_match_fields {
OFPXMT_OFB_IN_PORT = 0,
OFPXMT_OFB_IN_PHY_PORT = 1,
….,
OFPXMT_OFB_PACKET_TYPE = 44,
}
/* Header Match Fields - 38개 */
OXM_OF_ETH_DST
OXM_OF_ETH_SRC
….
OXM_OF_PBB_UCA
/* Pipeline Match Fields - 6개 */
OXM_OF_IN_PORT
OXM_OF_IN_PHY_PORT
….
OXM_OF_PACKET_TYPE
H
M
oxm_field oxm_lengthoxm_class
31 09 8 716 15
Match Field Instructions
/* Actions type - 18개 */
OFPAT_OUTPUT
OFPAT_COPY_TTL_OUT
…
OFPAT_GROUP
...
OFPAT_METER
...
Group
Identifier
Group
Type
Counters
Action
Buckets
Meter
Identifier
Meter
Bands
Counters
Main components of a meter entry in the meter table.
Main components of a group entry in the group table.
Band Type Rate Counters
Type specific
arguments
Main components of a meter band in a meter entry.
Band Type
● drop
● dscp remark
Appendix A. OpenFlow components.
45© PIOLINK, Inc. SDN No.1
Packet flow through the processing pipeline.
Appendix A. OpenFlow components.
46© PIOLINK, Inc. SDN No.1
Packet flow through an OpenFlow switch.
Appendix A. OpenFlow components.
47© PIOLINK, Inc. SDN No.1
Matching and Instruction execution in a flow table.
Appendix A. OpenFlow components.
48© PIOLINK, Inc. SDN No.1
B. Deep Dive - Overlapping flow entry (1.3.5관련)
● overlapping flow entry matching
○ 최초 등장 시기 - 1.0 전인 0.8 버전에 정의됨
○ 동작
■ flow mod 메시지에 overlap_check flags 설정이 안되어 있을 경우 flow entry
가 overlapping하게 생성될 수 있음
■ 동일한 priority와 multiple matching entry가 존재할 경우 어떤 flow entry가
선택될지는 spec에서 정의 안됨 (구현에 의존함)
■ overlapping flow entry들은 정확하게 same match는 아님 (1.3.5)
49© PIOLINK, Inc. SDN No.1
B. Deep Dive - Synchronised tables (1.4.1관련)
● 배경
○ 많은 스위치들은 동일한 데이터로 multiple lookup을 수행
○ openflow에서 multiple table을 사용하고 내부적으로 동일한 데이터로 multiple lookup을 수
행하는 경우가 있음
● 목적
○ 동일한 데이터를 처리하는 연관된 table들을 관리시 효율성 증대
● 간단한 사례
○ Multicast에서 IP forwarding 데이터를 재사용하는 RPF check 처리
○ L2 table에서 mac learning/forwarding lookup
● 특징
○ New property for table feature - OFPTFPT_TABLE_SYNC_FROM
○ 두 flow table 사이에 synchronisation abstraction 정의
50© PIOLINK, Inc. SDN No.1
B. Deep Dive - Metering(1.5.1관련)
● Meter table
○ rate-limiting, simple QoS
○ more complex QoS policing operation
■ DSCP based metering
○ meter는 per-port queue와 전혀 의존성이 없음.
○ meter와 per-port queue는 조합될 수 있음.
■ 복잡한 conserving QoS framework를 구현할 수 있음.
■ (e.g.) DiffServ
○ meter는 관련된 packets의 rate를 측정하고, 제어할 수 있음.
○ meter는 연결된 모든 flow entry의 aggregation으로서 rate-limit을 할 수 있음.
Counters
Type specific
arguments
Meter
Identifier
Meter
Bands
Counters
Main components of a meter entry in the meter table.
Band Type Rate
Main components of a meter band in a meter entry.
Band Type
● drop
● dscp remark
Burst
<DiffServ node의 예>
51© PIOLINK, Inc. SDN No.1
Main components of a meter entry in the meter table.
B. Deep Dive - Metering(1.5.1관련)
Meter
Identifier
Meter
Bands
Counters
● Meter entry
○ Meter identifier: meter entry의 식별자
○ Meter bands:meter band의 list, 각 meter band는 rate와 packet 처리
방법을 명시함
○ Counters:meter에 의해서 처리될 때, update 됨..
● Meter usage
○ 하나의 table 안에서 여러 flow entry는 동일한 meter entry를 사용가능
○ 하나의 flow entry는 여러(multiple) meter entry를 사용가능
“hierarchical metering 사용가능”
meter action 참고
(1) action list
- 반드시 첫 번째 위치함
- (optional) 어느 위치 있을 수 있음.
- (optional) multiple meter 사용 가능
(2) action set
- 하나의 meter 사용 가능
(v1.5.1)
spec에 정의 안됨
52© PIOLINK, Inc. SDN No.1
● Meter Bands
○ 하나의 meter는 여러개의 meter bands를 가질 수 있음.
○ 측정된 rate의 다양한 range를 위해서 packet 처리의 behaviour를 정의
○ meter entry는 여러 meter band 중 하나를 선택
■ 측정된 rate, band의 rate, meter 설정을 기반으로 meter band를 선택
■ packet은 오직 하나의 band에 의해서 처리됨
○ meter는 target rate와 rate가 초과하였을때 처리 방법을 명시
○ default meter band는 meter에 항상 포함, 설정될수 없음.
■ target rate = 0, 아무것도 하지 않음
○ meter band entry.
■ Band type: 패킷 처리에 대한 정의
● (Optional) Drop
● (Optional) DSCP remark
■ Rate: target rate
■ Burst: meter band의 granularity 정의
■ Counters: 패킷이 meter band에서 처리될때 update
■ Type specific arguments: optional arguments
○ band를 선택하는 알고리즘(measured rate에 대한 계산)은 표준문서에서 정의하지 않고 구
현에 맞김.
B. Deep Dive - Metering(1.5.1관련)
Band Type
● drop
● dscp remark
Band Type Rate Counters
Main components of a meter band in a meter entry.
Burst
Type specific
arguments
53© PIOLINK, Inc. SDN No.1
C. Post OVS-v2.3.0
● OpenFlow Spec.
○ OpenFlow 1.5 extended registers are now supported
○ The OpenFlow 1.5 actset_output field is now supported
○ OpenFlow 1.5 Copy-Field action is now supported.
○ OpenFlow 1.5 masked Set-Field action is now supported.
○ OpenFlow 1.3+ table features requests are now supported (read-only).
○ OpenFlow 1.4+ flow "importance" is now maintained in the flow table
● Other.
○ A simple wrapper script, 'ovs-docker', to integrate OVS with Docker containers.
○ The OVS database now reports controller rate limiting statistics.
○ Added support for DPDK Tunneling. VXLAN and GRE are supported protocols.
○ Support for multicast snooping (IGMPv1 and IGMPv2)
○ Support for VXLAN Group Policy extension
Appendix B. Post OVS Feature.
54© PIOLINK, Inc. SDN No.1
Reference
● openflow-spec-v1.1.0
● openflow-spec-v1.2.0
● openflow-spec-v1.3.0
● openflow-spec-v1.4.0
● openflow-spec-v1.5.0
● openflow-spec-v1.5.1
● https://github.com/openvswitch/ovs/
감사합니다.
㈜파이오링크
서울시 금천구 가산디지털2로
98
(가산동 550-1) IT캐슬 1동 401호
TEL: 02-2025-6900
FAX: 02-2025-6901
www.PIOLINK.com
55
감사합니다.

More Related Content

What's hot

Open vSwitch 패킷 처리 구조
Open vSwitch 패킷 처리 구조Open vSwitch 패킷 처리 구조
Open vSwitch 패킷 처리 구조Seung-Hoon Baek
 
CCNAv5 - S3: Chapter3 Link Aggregation
CCNAv5 - S3: Chapter3 Link AggregationCCNAv5 - S3: Chapter3 Link Aggregation
CCNAv5 - S3: Chapter3 Link AggregationVuz Dở Hơi
 
Connect Laptop/PC to Router Console Port
Connect Laptop/PC to Router Console Port Connect Laptop/PC to Router Console Port
Connect Laptop/PC to Router Console Port Yaser Rahmati
 
VXLAN BGP EVPN: Technology Building Blocks
VXLAN BGP EVPN: Technology Building BlocksVXLAN BGP EVPN: Technology Building Blocks
VXLAN BGP EVPN: Technology Building BlocksAPNIC
 
The right Wireless Architecture for you
The right Wireless Architecture for youThe right Wireless Architecture for you
The right Wireless Architecture for youCisco Canada
 
Tutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting routerTutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting routerShu Sugimoto
 
Network Automation (NetDevOps) with Ansible
Network Automation (NetDevOps) with AnsibleNetwork Automation (NetDevOps) with Ansible
Network Automation (NetDevOps) with AnsibleAPNIC
 
OpenFlow Switch Management using NETCONF and YANG
OpenFlow Switch Management using NETCONF and YANGOpenFlow Switch Management using NETCONF and YANG
OpenFlow Switch Management using NETCONF and YANGTail-f Systems
 
SDN입문 (Overlay and Underlay)
SDN입문 (Overlay and Underlay)SDN입문 (Overlay and Underlay)
SDN입문 (Overlay and Underlay)NAIM Networks, Inc.
 
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
 
MP BGP-EVPN 실전기술-1편(개념잡기)
MP BGP-EVPN 실전기술-1편(개념잡기)MP BGP-EVPN 실전기술-1편(개념잡기)
MP BGP-EVPN 실전기술-1편(개념잡기)JuHwan Lee
 
Tutorial on SDN and OpenFlow
Tutorial on SDN and OpenFlowTutorial on SDN and OpenFlow
Tutorial on SDN and OpenFlowKingston Smiler
 
Cisco Wireless LAN Controller Palo Alto Networks Config Guide
Cisco Wireless LAN Controller Palo Alto Networks Config GuideCisco Wireless LAN Controller Palo Alto Networks Config Guide
Cisco Wireless LAN Controller Palo Alto Networks Config GuideAlberto Rivai
 
Message Signaled Interrupts
Message Signaled InterruptsMessage Signaled Interrupts
Message Signaled InterruptsAnshuman Biswal
 
Troubleshooting BGP Juniper Examples
Troubleshooting BGP Juniper ExamplesTroubleshooting BGP Juniper Examples
Troubleshooting BGP Juniper ExamplesSalachudin Emir
 
MPLS WC 2014 Segment Routing TI-LFA Fast ReRoute
MPLS WC 2014  Segment Routing TI-LFA Fast ReRouteMPLS WC 2014  Segment Routing TI-LFA Fast ReRoute
MPLS WC 2014 Segment Routing TI-LFA Fast ReRouteBruno Decraene
 
"Approaches for Energy Efficient Implementation of Deep Neural Networks," a P...
"Approaches for Energy Efficient Implementation of Deep Neural Networks," a P..."Approaches for Energy Efficient Implementation of Deep Neural Networks," a P...
"Approaches for Energy Efficient Implementation of Deep Neural Networks," a P...Edge AI and Vision Alliance
 
Approaches to Network Automation
Approaches to Network AutomationApproaches to Network Automation
Approaches to Network AutomationAPNIC
 

What's hot (20)

Open vSwitch 패킷 처리 구조
Open vSwitch 패킷 처리 구조Open vSwitch 패킷 처리 구조
Open vSwitch 패킷 처리 구조
 
CCNAv5 - S3: Chapter3 Link Aggregation
CCNAv5 - S3: Chapter3 Link AggregationCCNAv5 - S3: Chapter3 Link Aggregation
CCNAv5 - S3: Chapter3 Link Aggregation
 
Connect Laptop/PC to Router Console Port
Connect Laptop/PC to Router Console Port Connect Laptop/PC to Router Console Port
Connect Laptop/PC to Router Console Port
 
VXLAN BGP EVPN: Technology Building Blocks
VXLAN BGP EVPN: Technology Building BlocksVXLAN BGP EVPN: Technology Building Blocks
VXLAN BGP EVPN: Technology Building Blocks
 
The right Wireless Architecture for you
The right Wireless Architecture for youThe right Wireless Architecture for you
The right Wireless Architecture for you
 
Tutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting routerTutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting router
 
Network Automation (NetDevOps) with Ansible
Network Automation (NetDevOps) with AnsibleNetwork Automation (NetDevOps) with Ansible
Network Automation (NetDevOps) with Ansible
 
100Gbps OpenStack For Providing High-Performance NFV
100Gbps OpenStack For Providing High-Performance NFV100Gbps OpenStack For Providing High-Performance NFV
100Gbps OpenStack For Providing High-Performance NFV
 
OpenFlow Switch Management using NETCONF and YANG
OpenFlow Switch Management using NETCONF and YANGOpenFlow Switch Management using NETCONF and YANG
OpenFlow Switch Management using NETCONF and YANG
 
SDN입문 (Overlay and Underlay)
SDN입문 (Overlay and Underlay)SDN입문 (Overlay and Underlay)
SDN입문 (Overlay and Underlay)
 
The Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitchThe Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitch
 
MP BGP-EVPN 실전기술-1편(개념잡기)
MP BGP-EVPN 실전기술-1편(개념잡기)MP BGP-EVPN 실전기술-1편(개념잡기)
MP BGP-EVPN 실전기술-1편(개념잡기)
 
Tutorial on SDN and OpenFlow
Tutorial on SDN and OpenFlowTutorial on SDN and OpenFlow
Tutorial on SDN and OpenFlow
 
Cisco Wireless LAN Controller Palo Alto Networks Config Guide
Cisco Wireless LAN Controller Palo Alto Networks Config GuideCisco Wireless LAN Controller Palo Alto Networks Config Guide
Cisco Wireless LAN Controller Palo Alto Networks Config Guide
 
Message Signaled Interrupts
Message Signaled InterruptsMessage Signaled Interrupts
Message Signaled Interrupts
 
EVPN for Cloud Builders
EVPN for Cloud BuildersEVPN for Cloud Builders
EVPN for Cloud Builders
 
Troubleshooting BGP Juniper Examples
Troubleshooting BGP Juniper ExamplesTroubleshooting BGP Juniper Examples
Troubleshooting BGP Juniper Examples
 
MPLS WC 2014 Segment Routing TI-LFA Fast ReRoute
MPLS WC 2014  Segment Routing TI-LFA Fast ReRouteMPLS WC 2014  Segment Routing TI-LFA Fast ReRoute
MPLS WC 2014 Segment Routing TI-LFA Fast ReRoute
 
"Approaches for Energy Efficient Implementation of Deep Neural Networks," a P...
"Approaches for Energy Efficient Implementation of Deep Neural Networks," a P..."Approaches for Energy Efficient Implementation of Deep Neural Networks," a P...
"Approaches for Energy Efficient Implementation of Deep Neural Networks," a P...
 
Approaches to Network Automation
Approaches to Network AutomationApproaches to Network Automation
Approaches to Network Automation
 

Viewers also liked

Open Flow Tutorial Series - Set 1
Open Flow Tutorial Series - Set 1Open Flow Tutorial Series - Set 1
Open Flow Tutorial Series - Set 1Radhika Hirannaiah
 
OpenFlow tutorial
OpenFlow tutorialOpenFlow tutorial
OpenFlow tutorialopenflow
 
Architecture of OpenFlow SDNs
Architecture of OpenFlow SDNsArchitecture of OpenFlow SDNs
Architecture of OpenFlow SDNsUS-Ignite
 
Introduction to OpenFlow
Introduction to OpenFlowIntroduction to OpenFlow
Introduction to OpenFlowJoel W. King
 
SDN - OpenFlow protocol
SDN - OpenFlow protocolSDN - OpenFlow protocol
SDN - OpenFlow protocolUlf Marxen
 
Introduction to OpenFlow
Introduction to OpenFlowIntroduction to OpenFlow
Introduction to OpenFlowrjain51
 
Introduction to Software Defined Networking (SDN)
Introduction to Software Defined Networking (SDN)Introduction to Software Defined Networking (SDN)
Introduction to Software Defined Networking (SDN)rjain51
 

Viewers also liked (8)

Open Flow Tutorial Series - Set 1
Open Flow Tutorial Series - Set 1Open Flow Tutorial Series - Set 1
Open Flow Tutorial Series - Set 1
 
OpenFlow tutorial
OpenFlow tutorialOpenFlow tutorial
OpenFlow tutorial
 
Architecture of OpenFlow SDNs
Architecture of OpenFlow SDNsArchitecture of OpenFlow SDNs
Architecture of OpenFlow SDNs
 
Introduction to OpenFlow
Introduction to OpenFlowIntroduction to OpenFlow
Introduction to OpenFlow
 
Openflow Protocol
Openflow ProtocolOpenflow Protocol
Openflow Protocol
 
SDN - OpenFlow protocol
SDN - OpenFlow protocolSDN - OpenFlow protocol
SDN - OpenFlow protocol
 
Introduction to OpenFlow
Introduction to OpenFlowIntroduction to OpenFlow
Introduction to OpenFlow
 
Introduction to Software Defined Networking (SDN)
Introduction to Software Defined Networking (SDN)Introduction to Software Defined Networking (SDN)
Introduction to Software Defined Networking (SDN)
 

Similar to OpenFlow 1.5.1

Opendaylight beryllium
Opendaylight berylliumOpendaylight beryllium
Opendaylight berylliumCheolmin Lee
 
ONOS(Open Network Operating System) V1.0 Avocet
ONOS(Open Network Operating System) V1.0 AvocetONOS(Open Network Operating System) V1.0 Avocet
ONOS(Open Network Operating System) V1.0 Avocetrootfs32
 
ONF Atrium 분석
ONF Atrium 분석ONF Atrium 분석
ONF Atrium 분석jungbh
 
Open vSwitch와 Mininet을 이용한 가상 네트워크 생성과 OpenDaylight를 사용한 네트워크 제어실험
Open vSwitch와 Mininet을 이용한 가상 네트워크 생성과 OpenDaylight를 사용한 네트워크 제어실험Open vSwitch와 Mininet을 이용한 가상 네트워크 생성과 OpenDaylight를 사용한 네트워크 제어실험
Open vSwitch와 Mininet을 이용한 가상 네트워크 생성과 OpenDaylight를 사용한 네트워크 제어실험Seung-Hoon Baek
 
ONOS (Open Network Operating System) Blackbird Release 분석
ONOS (Open Network Operating System)  Blackbird Release 분석ONOS (Open Network Operating System)  Blackbird Release 분석
ONOS (Open Network Operating System) Blackbird Release 분석rootfs32
 
Kubernetes in action
Kubernetes in actionKubernetes in action
Kubernetes in actionBingu Shim
 
2nd SDN Interest Group Seminar-Session3 (121218)
2nd SDN Interest Group Seminar-Session3 (121218)2nd SDN Interest Group Seminar-Session3 (121218)
2nd SDN Interest Group Seminar-Session3 (121218)NAIM Networks, Inc.
 
3rd SDN Interest Group Seminar-Session 3 (130123)
3rd SDN Interest Group Seminar-Session 3 (130123)3rd SDN Interest Group Seminar-Session 3 (130123)
3rd SDN Interest Group Seminar-Session 3 (130123)NAIM Networks, Inc.
 
BigQuery Data Lake & Airflow Contribution
BigQuery Data Lake & Airflow ContributionBigQuery Data Lake & Airflow Contribution
BigQuery Data Lake & Airflow ContributionJason Kim
 
한대희 Web proxy_개발_2006년11월_pas_ktf
한대희 Web proxy_개발_2006년11월_pas_ktf한대희 Web proxy_개발_2006년11월_pas_ktf
한대희 Web proxy_개발_2006년11월_pas_ktfDaehee Han
 
백기선의 스프링 부트
백기선의 스프링 부트백기선의 스프링 부트
백기선의 스프링 부트Keesun Baik
 
K8s beginner 2_advanced_ep02_201904221130_post
K8s beginner 2_advanced_ep02_201904221130_postK8s beginner 2_advanced_ep02_201904221130_post
K8s beginner 2_advanced_ep02_201904221130_postInho Kang
 
ACI Netflow 구성 가이드
ACI Netflow 구성 가이드ACI Netflow 구성 가이드
ACI Netflow 구성 가이드Woo Hyung Choi
 
OpenDaylight의 High Availability 기능 분석
OpenDaylight의 High Availability 기능 분석OpenDaylight의 High Availability 기능 분석
OpenDaylight의 High Availability 기능 분석Seung-Hoon Baek
 
SDN - 2018 Zeropage Devil's Camp
SDN - 2018 Zeropage Devil's CampSDN - 2018 Zeropage Devil's Camp
SDN - 2018 Zeropage Devil's CampMookeunJi
 
20150818 jun lee_openstack juno release 내용 분석
20150818 jun lee_openstack juno release 내용 분석20150818 jun lee_openstack juno release 내용 분석
20150818 jun lee_openstack juno release 내용 분석rootfs32
 
kubernetes from beginner to advanced
kubernetes  from beginner to advancedkubernetes  from beginner to advanced
kubernetes from beginner to advancedOracle Korea
 
kubernetes : From beginner to Advanced
kubernetes : From beginner to Advancedkubernetes : From beginner to Advanced
kubernetes : From beginner to AdvancedInho Kang
 

Similar to OpenFlow 1.5.1 (20)

Opendaylight beryllium
Opendaylight berylliumOpendaylight beryllium
Opendaylight beryllium
 
ONOS(Open Network Operating System) V1.0 Avocet
ONOS(Open Network Operating System) V1.0 AvocetONOS(Open Network Operating System) V1.0 Avocet
ONOS(Open Network Operating System) V1.0 Avocet
 
ONF Atrium 분석
ONF Atrium 분석ONF Atrium 분석
ONF Atrium 분석
 
Open vSwitch와 Mininet을 이용한 가상 네트워크 생성과 OpenDaylight를 사용한 네트워크 제어실험
Open vSwitch와 Mininet을 이용한 가상 네트워크 생성과 OpenDaylight를 사용한 네트워크 제어실험Open vSwitch와 Mininet을 이용한 가상 네트워크 생성과 OpenDaylight를 사용한 네트워크 제어실험
Open vSwitch와 Mininet을 이용한 가상 네트워크 생성과 OpenDaylight를 사용한 네트워크 제어실험
 
ONOS (Open Network Operating System) Blackbird Release 분석
ONOS (Open Network Operating System)  Blackbird Release 분석ONOS (Open Network Operating System)  Blackbird Release 분석
ONOS (Open Network Operating System) Blackbird Release 분석
 
OCP Switch Overview
OCP Switch OverviewOCP Switch Overview
OCP Switch Overview
 
Kubernetes in action
Kubernetes in actionKubernetes in action
Kubernetes in action
 
2nd SDN Interest Group Seminar-Session3 (121218)
2nd SDN Interest Group Seminar-Session3 (121218)2nd SDN Interest Group Seminar-Session3 (121218)
2nd SDN Interest Group Seminar-Session3 (121218)
 
3rd SDN Interest Group Seminar-Session 3 (130123)
3rd SDN Interest Group Seminar-Session 3 (130123)3rd SDN Interest Group Seminar-Session 3 (130123)
3rd SDN Interest Group Seminar-Session 3 (130123)
 
BigQuery Data Lake & Airflow Contribution
BigQuery Data Lake & Airflow ContributionBigQuery Data Lake & Airflow Contribution
BigQuery Data Lake & Airflow Contribution
 
한대희 Web proxy_개발_2006년11월_pas_ktf
한대희 Web proxy_개발_2006년11월_pas_ktf한대희 Web proxy_개발_2006년11월_pas_ktf
한대희 Web proxy_개발_2006년11월_pas_ktf
 
백기선의 스프링 부트
백기선의 스프링 부트백기선의 스프링 부트
백기선의 스프링 부트
 
K8s beginner 2_advanced_ep02_201904221130_post
K8s beginner 2_advanced_ep02_201904221130_postK8s beginner 2_advanced_ep02_201904221130_post
K8s beginner 2_advanced_ep02_201904221130_post
 
ACI Netflow 구성 가이드
ACI Netflow 구성 가이드ACI Netflow 구성 가이드
ACI Netflow 구성 가이드
 
DPDK
DPDKDPDK
DPDK
 
OpenDaylight의 High Availability 기능 분석
OpenDaylight의 High Availability 기능 분석OpenDaylight의 High Availability 기능 분석
OpenDaylight의 High Availability 기능 분석
 
SDN - 2018 Zeropage Devil's Camp
SDN - 2018 Zeropage Devil's CampSDN - 2018 Zeropage Devil's Camp
SDN - 2018 Zeropage Devil's Camp
 
20150818 jun lee_openstack juno release 내용 분석
20150818 jun lee_openstack juno release 내용 분석20150818 jun lee_openstack juno release 내용 분석
20150818 jun lee_openstack juno release 내용 분석
 
kubernetes from beginner to advanced
kubernetes  from beginner to advancedkubernetes  from beginner to advanced
kubernetes from beginner to advanced
 
kubernetes : From beginner to Advanced
kubernetes : From beginner to Advancedkubernetes : From beginner to Advanced
kubernetes : From beginner to Advanced
 

OpenFlow 1.5.1

  • 1. 1© PIOLINK, Inc. SDN No.1 OpenFlow 1.5.1 2015-05-15 파이오링크 SDN개발실 정병화 byeonghwa.jung@piolink.com
  • 2. 2© PIOLINK, Inc. SDN No.1 목차 ● OpenFlow History ● OpenFlow 1.1 Feature ● OpenFlow 1.2 Feature ● OpenFlow 1.3 Feature ● OpenFlow 1.4 Feature ● OpenFlow 1.5 Feature ● OpenFlow 1.3.5 Feature ● OpenFlow 1.4.1 Feature ● OpenFlow 1.5.1 Feature ● Appendix ○ A. OpenFlow Components ○ B. Deep Dive - overlapping flow entry, synchronised table, metering ○ C. Post OVS Feature ● Reference
  • 3. 3© PIOLINK, Inc. SDN No.1 ExtensibleBasic Refactoring architecture Generic structure Flexible structure New function & component ~ 1.0 1.2 ~ 1.51.1 OpenFlow history
  • 4. 4© PIOLINK, Inc. SDN No.1 1.0 1.5 1.1 1.2 1.31.4 Multiple table Group Extensible Match support Controller role change mechanism Refactor capabilities negotiation More flexible table miss support Per flow meters Auxiliary connections Tunnel-ID metadata More extensible wire protocol Flow monitoring Eviction Vacancy events Bundles Egress Tables Packet type aware pipeline Extensible flow entry statistics Meter action port properties for pipeline fields Port property for recirculation 2009-12-31 2011-02-28 2011-12-05 2012-04-132013-08-052014-12-01 약14개월 약8개월 약4개월 약14개월약17개월 OpenFlow history
  • 5. 5© PIOLINK, Inc. SDN No.1 OpenFlowhistory Flow Table Flow Table Flow Table v1.2 v1.3 v1.4 v1.5 v1.1 Multiple Table & Pipeline Group Table Port OpenFlow Chanel Virtual port Extensible match (OXM) prerequisite system experimenter match ipv6 match Match Action set Controller OpenFlow Message Instruction Action ‘set_field’ action Metadata field rename Logical port refactor capabilities multipart framework flexible table miss as flow entry ipv6 extension header match meter Meter Table per connection event filtering OpenFlow Chanel Controller Auxiliary connections Multiple Controller active & standby role Tunnel-ID metadata More extensible OXM (port,table,queue,action,etc) More descriptive reason for packet-in Bundles Message Optical port properties Flow monitoring Eviction Vacancy events TCP port to 6653 Flow Table Flow TableMultiple Table & Pipeline egress table Packet type pipeline fields Packet register pipeline fields TCP flags Extensible flow entry statistics meter action ‘copy_field’ action Statistic Trigger scheduled bundles properties for pipe line fields properties for recirculation
  • 6. 6© PIOLINK, Inc. SDN No.1 OpenFlow 1.1 Feature (B.9.x) 1. Multiple Tables 2. Groups 3. Tags : MPLS & VLAN 4. Virtual ports 5. Controller connection failure 6. Other changes a. Rename VENDOR APIs to EXPERIMENTER APIs
  • 7. 7© PIOLINK, Inc. SDN No.1 OpenFlow 1.2 Feature (B.10.x) 1. Extensible match support 2. Extensible ‘set_field’ packet rewriting support 3. Extensible contest expression in ‘packet_in’ 4. Extensible Error messages via experimenter error type 5. IPv6 support added 6. Simplified behaviour of flow-mod request 7. Removed packet parsing specification 8. Controller role change mechanism 9. Other changes a. Virtual ports renamed logical ports
  • 8. 8© PIOLINK, Inc. SDN No.1 OpenFlow 1.3.0 Feature (B.11.x) 1. Refactor capabilities negotiation 2. More flexible table miss support 3. IPv6 Extension Header handling support 4. Per flow meters 5. Per connection event filtering 6. Auxiliary connections 7. MPLS BoS matching 8. Provider Backbone Bridging tagging 9. Rework tag order 10. Tunnel-ID metadata 11. Cookies in packet-in 12. Duration for stats 13. On demand flow counters
  • 9. 9© PIOLINK, Inc. SDN No.1 1. Refactor capabilities negotiation ● 목적 ○ Capability 표현하기 위한 flexible한 framework로 개선 ● 특징 ○ Rename ■ ‘stats’ -> ‘multipart’ framework ○ Table capabilities 개선. ■ Table statistics로부터 capabilities를 분리함. ■ Capabilities 정보들을 generic & flexible TLV format으로 변경. ■ New capabilities ● Experimenter property ● Table-miss 정보. ○ Port list descriptions 정보 추가됨. OpenFlow 1.3 New Feature
  • 10. 10© PIOLINK, Inc. SDN No.1 2. More flexible table miss support ● 목적 ○ Table miss시 다양한 동작을 할 수 있도록 flexible한 구조로 변경. ● 특징 ○ Table-misses 표현 방법 변경. ■ 이전 - table의 flags를 사용. ■ V1.3 - flow entry 사용. ● Match fields - all wildcard & lowest priority ○ Table-misses handling 확장. ■ 이전 - 3가지 (drop, controller, goto-table) ■ V1.3 - flow entry의 모든 Instruction ● eg. normal output action ○ Multipart capabilities에 table-miss 추가됨. OpenFlow 1.3 New Feature
  • 11. 11© PIOLINK, Inc. SDN No.1 4. Per flow meters ● 목적 ○ Flow entry에 meter 를 mapping하여 packet rate를 측정. ● 특징 ○ New instruction - meter ○ Rate-limit 기능. ○ Flexible meter framework ■ Multipart capabilities에 metering band, statistics, capabilities 추가됨. Meter Identifier Meter Bands Counters Main components of a meter entry in the meter table. Band Type Rate Counters Type specific arguments Main components of a meter band in a meter entry. Band Type ● drop ● dscp remark OpenFlow 1.3 New Feature
  • 12. 12© PIOLINK, Inc. SDN No.1 6. Auxiliary connections ● 목적 ○ Switch 처리성능 개선 ● Controller channel의 개수 ○ main connection - one ○ auxiliary connections - multiple ● 특징 ○ 식별 ID - (Datapath-ID : Auxiliary-ID) 조합. ■ Main connection - (N : 0) ■ Auxiliary connection - (N : M) ○ Main connection에 의존적. ■ Main connection 연결 close 시 all auxiliary도 강제 close. ■ Main connection과 L4 port 만 다름. ○ Packet-out이 아닌 모든 메시지는 main connection에서 전송되어야 함. ○ Packet-in으로부터 생성된 모든 packet-out은 packet-in을 수신한 connection으로 전송되어 야 함. Main connection Auxiliary connection OpenFlow Switch Controller OpenFlow 1.3 New Feature
  • 13. 13© PIOLINK, Inc. SDN No.1 10. Tunnel ID metadata ● 목적 ○ 다양한 encapsulation 지원 ● 특징 ○ Logical port에서 tunnel-id metadata를 저장. ○ New pipeline field - OXM_OF_TUNNEL_ID ○ metadata value - demultiplexing field from encapsulation header ■ eg. GRE key field from GRE header ■ eg. MPLS Label, VNI from VxLAN ○ Use Case) GTP TEID 를 사용하는 SGW, PGW OpenFlow 1.3 New Feature
  • 14. 14© PIOLINK, Inc. SDN No.1 OpenFlow 1.4.0 Feature (B.16.x) 1. More extensible wire protocol 2. More descriptive reasons for packet-in 3. Optical port properties 4. Flow-removed reason for meter delete 5. Flow monitoring 6. Role status events 7. Eviction 8. Vacancy events 9. Bundles 10. Synchronised tables 11. Group and Meter change notifications 12. Error code for bad priority 13. Error code for Set-async-config 14. PBB UCA header field 15. Error code for duplicate instruction 16. Error code for multipart timeout 17. Change default TCP port to 6653
  • 15. 15© PIOLINK, Inc. SDN No.1 1. More extensible wire protocol ● 배경 ○ 고정된 자료구조 & 제한된 확장성 개선필요. ● 특징 ○ 프로트콜의 여러 part에 TLV format 적용. ○ 확장 ■ Port structure - [description, mod, states] properties ■ Table structure - mod, descriptions properties, status asynchronous message ■ Queue structure - states properties ■ Set-async structure - set-async experimenter properties ■ Properties errors - unified error codes for all properties ○ 고정된 자료구조 개선 ■ Queue structure - description properties ■ Set-async structure - set-async-config OpenFlow 1.4 New Feature
  • 16. 16© PIOLINK, Inc. SDN No.1 5. Flow monitoring ● 목적 ○ 하나의 controller가 지정한 flow table의 flow의 변화를 monitoring. ● 특징 ○ Multi-controller scheme ○ 하나의 controller가 여러개의 monitor를 정의. ■ 하나의 monitor는 관찰할 flow table [table-id]을 선택. ○ Switch가 monitoring하기 위한 controller 지정. ■ Multipart message 이용 - ofp_flow_monitor_request OpenFlow 1.4 New Feature
  • 17. 17© PIOLINK, Inc. SDN No.1 7. Eviction ● 배경 ○ Switch의 flow table이 full 이어서 flow setup에 실패하면, controller에게 error 메시지를 전 송. ○ 그러나, controller가 이때 대응하게 되면 service에 제공에 문제발생. ● 기능 설명 ○ new flow setup시 flow table가 full 일경우, switch는 priority가 낮은 flow entry를 삭제하고 공간을 확보함. ● 특징 ○ Table-mod flags - OFPTC_EVICTION ○ Flow-mod - importance ○ Table-desc eviction property - ofp_table_mod_prop_eviction OpenFlow 1.4 New Feature
  • 18. 18© PIOLINK, Inc. SDN No.1 8. Vacancy events ● 배경 ○ Switch의 flow table이 full 이어서 flow setup에 실패하면, controller에게 error 메시지를 전 송. ○ 그러나, controller가 이때 대응하게 되면 service에 제공에 문제발생. ● 기능 설명 ○ threshold capacity를 통해서 table이 full 되기전에 event 메시지를 controller에 전송. ● 특징 ○ table status event - OFPT_TABLE_STATUS ○ Table-mod vacancy property - ofp_table_mod_prop_vacancy OpenFlow 1.4 New Feature
  • 19. 19© PIOLINK, Inc. SDN No.1 9. Bundles ● 목적 ○ OpenFlow message들을 하나의 group으로 묶어서 atomic operation의 효과. ● 특징 ○ Bundle control message - OFPT_BUNDLE_CONTROL ■ bundle을 create, destroy, commit ○ Bundle add message - OFPT_BUNDLE_ADD_MESSAGE ■ bundle에 OpenFlow message를 추가함. ○ Bundle error type - OFPET_BUNDLE_FAILED OpenFlow 1.4 New Feature
  • 20. 20© PIOLINK, Inc. SDN No.1 10. Synchronized tables ● 배경 ○ 많은 스위치들은 동일한 데이터로 multiple lookup을 수행 ○ openflow에서 multiple table을 사용하고 내부적으로 동일한 데이터로 multiple lookup을 수 행하는 경우가 있음 ● 목적 ○ 동일한 데이터를 처리하는 연관된 table들을 관리시 효율성 증대 ● 간단한 사례 ○ Multicast에서 IP forwarding 데이터를 재사용하는 RPF check 처리 ○ L2 table에서 mac learning/forwarding lookup ● 특징 ○ New property for table feature - OFPTFPT_TABLE_SYNC_FROM ○ 두 flow table 사이에 synchronisation abstraction 정의
  • 21. 21© PIOLINK, Inc. SDN No.1 OpenFlow 1.5.0 Feature (B.18.x) 1. Egress Tables 2. Packet Type aware pipeline 3. Extensible Flow Entry Statistics 4. Flow Entry Statistics Trigger 5. Copy-Field action to copy between two OXM fields 6. Packet Register pipeline fields 7. TCP flags matching 8. Group command for selective bucket operation 9. Alloc set-field action to set metadata field 10. Allow wildcard to be used in set-field action 11. Scheduled Bundles 12. Controller connection status 13. Meter action 14. Enable setting all pipeline fields in packet-out 15. Port properties for pipeline fields 16. Port property for recirculation 17. Clarify and improve barrier 18. Always generate port status on port config change 19. Make all Experimenter OXM-IDs 64 bits 20. Unified requests for group, port and queue multiparts 21. Rename some type for consistency 22. Specification reorganisation
  • 22. 22© PIOLINK, Inc. SDN No.1 1. Egress Tables ● 이전 버전 ○ 없음 ● Version 1.5 ○ Output Port Context에서도 processing을 할 수 있도록 egress tables를 도입. ○ New OXM field - OXM_OF_ACTSET_OUTPUT ○ 특징 ■ Egress mirroring 기능 (action list에서 output action 사용) ■ Egress flow entry에서 group과 action set에서 output action 사용 못함. Figure. Packet flow through the processing OpenFlow 1.5 New Feature
  • 23. 23© PIOLINK, Inc. SDN No.1 2. Packet Type aware pipeline ● 이전 버전 ○ Ethernet packet만 처리함. ● Version 1.5 ○ 다양한 Packet type 식별하여 처리함. ○ New OXM field (Pipeline match field) - OXM_OF_PACKET_TYPE ○ 특징 ■ header fields의 prerequisite로서 사용. ■ packet type을 식별하기 위한 matching 으로 사용. ■ packet-in, packet-out에서 payload를 식별하기 위해 사용. Packet Types. namespace ns type Match description Packet-in and packet-out format 0 0 Ethernet packet (default type). Ethernet header and Ethernet payload. 1 0x800 IPv4 packet (with no header in front). IPv4 header and IPv4 payload. 1 0x86dd IPv6 packet (with no header in front). IPv6 header and IPv6 payload. 0 1 No packet (for example circuit switch). Empty. 0 0xFFFF Experimenter defined. Experimenter defined. OpenFlow 1.5 New Feature
  • 24. 24© PIOLINK, Inc. SDN No.1 3. Extensible Flow Entry Statistics ● 이전 버전 ○ Flow entry statistics - 고정된 구조체를 사용. ● Version 1.5 ○ OXS (OpenFlow eXtensible Statistic) field 도입 - TLV Format ○ 기존의 (flow duration, flow count, packet count, byte count) statistics를 OXS field로 redefine. ○ New flow statistic entry - flow idle time ○ 통계값과 관련된 message의 format을 OXS field로 변경. ■ flow removed message ■ flow statistics multipart ■ flow aggregate multipart OpenFlow 1.5 New Feature
  • 25. 25© PIOLINK, Inc. SDN No.1 4. Flow Entry Statistics Trigger ● 이전 버전 ○ Polling flow entry statistics 방식 - 높은 overhead & utilisation. ● Version 1.5 ○ Statistics trigger 방식 도입. ○ Threshold 값에 기반해서 컨트롤러에 통계정보를 보냄. ○ New Instruction - OFPIT_STAT_TRIGGER (Threshold 정의) OpenFlow 1.5 New Feature
  • 26. 26© PIOLINK, Inc. SDN No.1 5. Copy-Field action to copy between two OXM fields ● 이전 버전 ○ 없음. ○ 유사 기능 - Set-field action ■ One header or pipeline field에 static value를 설정. ● Version 1.5 ○ New action - Copy-field action (OFPAT_COPY_FIELD) ○ One header or pipeline field를 another header or pipeline field로 Copy 함. OpenFlow 1.5 New Feature
  • 27. 27© PIOLINK, Inc. SDN No.1 6. Packet Register pipeline fields ● 이전 버전 ○ 없음. ● Version 1.5 ○ Packet register fields - OXM_OF_PKT_REG(N) ○ Pipeline processing에서 packet의 정보를 임시로 저장하기 위해 사용. ○ 특징 ■ Matching 용도로 사용되지 않음. ■ set-field 와 copy-field action 과 함께 사용됨. OpenFlow 1.5 New Feature
  • 28. 28© PIOLINK, Inc. SDN No.1 7. TCP flags matching ● 이전 버전 ○ 없음. ● Version 1.5 ○ New OXM field - OFPXMT_OFB_TCP_FLAGS ○ TCP header의 flags bits 식별. ○ TCP connection의 시작/끝을 detect OpenFlow 1.5 New Feature
  • 29. 29© PIOLINK, Inc. SDN No.1 8. Group command for selective bucket operation ● 이전 버전 ○ 하나의 Group에서 전체 group bucket 만을 변경 가능함. ● Version 1.5 ○ 하나의 Group에서 지정한 group bucket만을 삭제하고 삽입할 수 있음. ○ bucket에 bucket_id 추가됨. OpenFlow 1.5 New Feature
  • 30. 30© PIOLINK, Inc. SDN No.1 9. Alloc set-field action to set metadata field ● 이전 버전 ○ 제약사항 - OXM_OF_METADATA을 지원 안함. ● Version 1.5 ○ OXM_OF_METADATA가 set-field action의 valid argument로 추가됨. OpenFlow 1.5 New Feature
  • 31. 31© PIOLINK, Inc. SDN No.1 10. Allow wildcard to be used in set-field action ● 이전 버전 ○ set-field action은 전체 field 를 설정. ● Version 1.5 ○ set-field action에 mask를 적용하여, set-field의 지정한 bits만 수정 가능함. OpenFlow 1.5 New FeatureOpenFlow 1.5 New Feature
  • 32. 32© PIOLINK, Inc. SDN No.1 11. Scheduled Bundles ● 이전 버전 ○ 1.4버전에서 bundle feature가 추가됨. ● Version 1.5 ○ bundle feature 확장 ■ Scheduled bundles - bundle commit message 에 execution time 추가됨. ■ Bundle features request - controller가 switch에게 bundle capabilities 정보를 query. ● 종류: atomic bundles, ordered bundles, scheduled bundles. ● Multipart message 이용 - bundle features multipart (7.3.5.20) OpenFlow 1.5 New Feature
  • 33. 33© PIOLINK, Inc. SDN No.1 12. Controller connection status ● 이전 버전 ○ 없음. ● Version 1.5 ○ controller가 switch와 연결된 모든 controller의 상태를 알도록 함. ○ Multipart Messages 이용 - Controller status multipart OpenFlow 1.5 New Feature
  • 34. 34© PIOLINK, Inc. SDN No.1 13. Meter action ● 이전 버전 ○ metering 실행 - Meter instruction ● Version 1.5 ○ metering실행 - Meter action ○ 장점 ■ 하나의 flow에 대해서 multiple meter가 가능해짐 ● 현재 측정된 rate보다 작은 것중에서 가장 높이 설정된 rate의 meter를 수행. ● Use Case) P-GW의 Policy Rule (from PCRF) ■ group bucket 안에서 사용 가능해짐 OpenFlow 1.5 New Feature
  • 35. 35© PIOLINK, Inc. SDN No.1 14. Enable setting all pipeline fields in packet-out ● 이전 버전 ○ packet-out 메시지에 In-Port pipeline field만 설정했음. ● Version 1.5 ○ packet-out 메시지에 모든 pipeline field를 설정 가능함. ○ 특징 ■ packet-out 메시지에 OXM pipeline fields를 추가함. OpenFlow 1.5 New Feature
  • 36. 36© PIOLINK, Inc. SDN No.1 15. Port properties for pipeline fields ● 이전 버전 ○ 없음. ● Version 1.5 ○ Logical port는 pipeline fields를 사용하거나 생성함. ■ ex) pipeline field Tunnel-ID를 사용하는 Logical port ● encapsulation과 관련된 metadata를 생성 or 사용함. ○ New port description property ■ OFPPDP_PIPLINE_INPUT ● 수신된 packet에 제공되는 the list of pipeline fields 저장. ■ OFPPDP_PIPLINE_OUTPUT ● packet을 전송할때 사용되는 the list of pipeline fields 저장. OpenFlow 1.5 New Feature ofp_port_desc_prop_oxm ofp_port Array of OXM headers
  • 37. 37© PIOLINK, Inc. SDN No.1 16. Port property for recirculation ● 이전 버전 ○ 없음. ● Version 1.5 ○ Recirculation 의미? ■ OpenFlow pipeline을 통해 처리된 packet이 다른 switch로 forwarding 되지 않고 다시 동일한 switch의 port로 수신되어 OpenFlow pipeline을 수행하는 것. ○ 배경 ■ Logical ports은 OpenFlow switch 안에서 network service를 제공함. ■ 이경우, Logical port로 보내진 packet은 network service를 처리한 후 다시 그 port로 되돌아 오게됨. ■ eg. tunnel endpoint or bidirectional packet processing ○ 특징 ■ Packet이 recirculation되는 port는 연관된 input ports의 list를 저장함. ■ Recirculation은 다양한 pipeline fields를 저장함. ● eg. Tunnel-ID field. ○ Use Case) Service Chaining OpenFlow 1.5 New Feature ofp_port_desc_prop_recirculate ofp_port port list [N]
  • 38. 38© PIOLINK, Inc. SDN No.1 OpenFlow 1.3.5 Feature ● non-static의 Flow-mod (modify, delete) request는 부분적으로 적용 될 수 없음. ○ non-static Flow-mod(modify, delete)의 match fields와 matching되는 모든 flow entry들은 모 두 삭제 되거나 수정됨. ○ 만약, 이중 하나의 entry라도 적용될 수 없으면, 부분적으로 적용될 수 없음. ● flow overlap의 정의를 상세화 - overlapping entry는 equal이 아님 ○ Deep Dive - overlapping flow entry 참조 ● alternate OpenFlow connection transports ○ multiplexing, reliability, ordered delivery, segmentation/reassembly, flow control, security를 제공할 수 있는 transport protocol 이어야함. ○ 기존 - main connection (tcp, tls), auxiliary connection (tcp, tls, udp, tlsd) ● controller channel connection URI from OF1.5 ○ switch는 각각의 controller connection을 standard URI를 통해 식별 가능 ○ connection URI 형태 - protocol:name-or-address:port (e. g. tcp:192.168.10.98:6655)
  • 39. 39© PIOLINK, Inc. SDN No.1 OpenFlow 1.3.5 Feature ● flow table은 생성할 때 number를 지정할 수 있음. ○ 이전에는 table ID가 sequential하게 증가 되도록 table을 생성해야 했음. ● flow-mod commands와 flags가 mandatory 되어야 하는 것을 명시 ● physical port는 optional이고, 사용된다면 OpenFlow port임 ● counter는 full bit range를 사용해야 함.
  • 40. 40© PIOLINK, Inc. SDN No.1 OpenFlow 1.4.1 Feature ● 주로 synchronisation 관련 변화 ○ synchronisation관련 flow entry 추가할 때, 기존 merging 했던 것을 overwrite 함. ○ synchronisation flow table에 overlap flag를 사용한 flow modify 사용 못함. ○ bidirectional synchronised tables을 위해 reversible translation 지원 ○ synchronisation error 추가 - OFPFMFC_IS_SYNC ● 그밖에 ○ bundle과 flow monitoring을 위한 switch feature 추가 ○ vacancy property, bundle, flow monitoring - optional임을 명시
  • 41. 41© PIOLINK, Inc. SDN No.1 OpenFlow 1.5.1 Feature ● Add new error OFPBAC_BAD_METER for bad meter in flow-mod ○ 수신된 메시지 안의 meter action이 스위치에 정의 되지 않은 경우 error 리턴 ● Don’t specify how each packet is mapped into each meter band ○ band를 선택하는 알고리즘(measured rate에 대한 계산)은 표준문서에서 정의하 지 않고 구현에 맞김. enum ofp_bad_action_code { … OFPBAC_BAD_METER = 17, /* Invalid meter id in meter action */ }
  • 42. © PIOLINK, Inc. SDN No.1 A. OpenFlow Components. B. Deep Dive - overlapping flow entry, synchronised table, metering C. Post OVS-v2.3.0 Appendix. 42
  • 43. 43© PIOLINK, Inc. SDN No.1 Main components of an OpenFlow switch Appendix A. OpenFlow components.
  • 44. 44© PIOLINK, Inc. SDN No.1 Flow table 구성정보 Priority Couters Timeouts Cookie Flags Main components of a flow entry in a flow table uint16_t type; uint16_t length; uint8_t oxm_fields[0]; uint8_t pad[4]; struct ofp_match OXM TLV header oxm_type enum ofp_instruction_type { OFPIT_GOTO_TABLE = 1, OFPIT_WRITE_METADATA = 2, OFPIT_WRITE_ACTIONS = 3, OFPIT_APPLY_ACTIONS = 4, OFPIT_CLEAR_ACTIONS = 5, OFPIT_DEPRECATED = 6, OFPIT_STAT_TRIGGER = 7, OFPIT_EXPERIMENTER = 0xFFFF } uint16_t type; uint16_t length; uint8_t pad[4]; uint8_t ofp_instruction_actions[0]; struct ofp_instruction_actions struct ofp_match uint16_t type; uint16_t length; struct ofp_action_header enum ofp_oxm_class { OFPXMC_NXM_0 = 0x0000, OFPXMC_NXM_1 = 0x0001, OFPXMC_OPENFLOW_BASIC = 0x8000, OFPXMC_PACKET_REGS = 0x8001, OFPXMC_EXPERIMENTER = 0xFFFF, } enum ofp_match_type { OFPMT_STANDARD = 0, OFPMT_OXM = 1, } /* Flow Match Fields - 45개 */ enum oxm_ofb_match_fields { OFPXMT_OFB_IN_PORT = 0, OFPXMT_OFB_IN_PHY_PORT = 1, …., OFPXMT_OFB_PACKET_TYPE = 44, } /* Header Match Fields - 38개 */ OXM_OF_ETH_DST OXM_OF_ETH_SRC …. OXM_OF_PBB_UCA /* Pipeline Match Fields - 6개 */ OXM_OF_IN_PORT OXM_OF_IN_PHY_PORT …. OXM_OF_PACKET_TYPE H M oxm_field oxm_lengthoxm_class 31 09 8 716 15 Match Field Instructions /* Actions type - 18개 */ OFPAT_OUTPUT OFPAT_COPY_TTL_OUT … OFPAT_GROUP ... OFPAT_METER ... Group Identifier Group Type Counters Action Buckets Meter Identifier Meter Bands Counters Main components of a meter entry in the meter table. Main components of a group entry in the group table. Band Type Rate Counters Type specific arguments Main components of a meter band in a meter entry. Band Type ● drop ● dscp remark Appendix A. OpenFlow components.
  • 45. 45© PIOLINK, Inc. SDN No.1 Packet flow through the processing pipeline. Appendix A. OpenFlow components.
  • 46. 46© PIOLINK, Inc. SDN No.1 Packet flow through an OpenFlow switch. Appendix A. OpenFlow components.
  • 47. 47© PIOLINK, Inc. SDN No.1 Matching and Instruction execution in a flow table. Appendix A. OpenFlow components.
  • 48. 48© PIOLINK, Inc. SDN No.1 B. Deep Dive - Overlapping flow entry (1.3.5관련) ● overlapping flow entry matching ○ 최초 등장 시기 - 1.0 전인 0.8 버전에 정의됨 ○ 동작 ■ flow mod 메시지에 overlap_check flags 설정이 안되어 있을 경우 flow entry 가 overlapping하게 생성될 수 있음 ■ 동일한 priority와 multiple matching entry가 존재할 경우 어떤 flow entry가 선택될지는 spec에서 정의 안됨 (구현에 의존함) ■ overlapping flow entry들은 정확하게 same match는 아님 (1.3.5)
  • 49. 49© PIOLINK, Inc. SDN No.1 B. Deep Dive - Synchronised tables (1.4.1관련) ● 배경 ○ 많은 스위치들은 동일한 데이터로 multiple lookup을 수행 ○ openflow에서 multiple table을 사용하고 내부적으로 동일한 데이터로 multiple lookup을 수 행하는 경우가 있음 ● 목적 ○ 동일한 데이터를 처리하는 연관된 table들을 관리시 효율성 증대 ● 간단한 사례 ○ Multicast에서 IP forwarding 데이터를 재사용하는 RPF check 처리 ○ L2 table에서 mac learning/forwarding lookup ● 특징 ○ New property for table feature - OFPTFPT_TABLE_SYNC_FROM ○ 두 flow table 사이에 synchronisation abstraction 정의
  • 50. 50© PIOLINK, Inc. SDN No.1 B. Deep Dive - Metering(1.5.1관련) ● Meter table ○ rate-limiting, simple QoS ○ more complex QoS policing operation ■ DSCP based metering ○ meter는 per-port queue와 전혀 의존성이 없음. ○ meter와 per-port queue는 조합될 수 있음. ■ 복잡한 conserving QoS framework를 구현할 수 있음. ■ (e.g.) DiffServ ○ meter는 관련된 packets의 rate를 측정하고, 제어할 수 있음. ○ meter는 연결된 모든 flow entry의 aggregation으로서 rate-limit을 할 수 있음. Counters Type specific arguments Meter Identifier Meter Bands Counters Main components of a meter entry in the meter table. Band Type Rate Main components of a meter band in a meter entry. Band Type ● drop ● dscp remark Burst <DiffServ node의 예>
  • 51. 51© PIOLINK, Inc. SDN No.1 Main components of a meter entry in the meter table. B. Deep Dive - Metering(1.5.1관련) Meter Identifier Meter Bands Counters ● Meter entry ○ Meter identifier: meter entry의 식별자 ○ Meter bands:meter band의 list, 각 meter band는 rate와 packet 처리 방법을 명시함 ○ Counters:meter에 의해서 처리될 때, update 됨.. ● Meter usage ○ 하나의 table 안에서 여러 flow entry는 동일한 meter entry를 사용가능 ○ 하나의 flow entry는 여러(multiple) meter entry를 사용가능 “hierarchical metering 사용가능” meter action 참고 (1) action list - 반드시 첫 번째 위치함 - (optional) 어느 위치 있을 수 있음. - (optional) multiple meter 사용 가능 (2) action set - 하나의 meter 사용 가능 (v1.5.1) spec에 정의 안됨
  • 52. 52© PIOLINK, Inc. SDN No.1 ● Meter Bands ○ 하나의 meter는 여러개의 meter bands를 가질 수 있음. ○ 측정된 rate의 다양한 range를 위해서 packet 처리의 behaviour를 정의 ○ meter entry는 여러 meter band 중 하나를 선택 ■ 측정된 rate, band의 rate, meter 설정을 기반으로 meter band를 선택 ■ packet은 오직 하나의 band에 의해서 처리됨 ○ meter는 target rate와 rate가 초과하였을때 처리 방법을 명시 ○ default meter band는 meter에 항상 포함, 설정될수 없음. ■ target rate = 0, 아무것도 하지 않음 ○ meter band entry. ■ Band type: 패킷 처리에 대한 정의 ● (Optional) Drop ● (Optional) DSCP remark ■ Rate: target rate ■ Burst: meter band의 granularity 정의 ■ Counters: 패킷이 meter band에서 처리될때 update ■ Type specific arguments: optional arguments ○ band를 선택하는 알고리즘(measured rate에 대한 계산)은 표준문서에서 정의하지 않고 구 현에 맞김. B. Deep Dive - Metering(1.5.1관련) Band Type ● drop ● dscp remark Band Type Rate Counters Main components of a meter band in a meter entry. Burst Type specific arguments
  • 53. 53© PIOLINK, Inc. SDN No.1 C. Post OVS-v2.3.0 ● OpenFlow Spec. ○ OpenFlow 1.5 extended registers are now supported ○ The OpenFlow 1.5 actset_output field is now supported ○ OpenFlow 1.5 Copy-Field action is now supported. ○ OpenFlow 1.5 masked Set-Field action is now supported. ○ OpenFlow 1.3+ table features requests are now supported (read-only). ○ OpenFlow 1.4+ flow "importance" is now maintained in the flow table ● Other. ○ A simple wrapper script, 'ovs-docker', to integrate OVS with Docker containers. ○ The OVS database now reports controller rate limiting statistics. ○ Added support for DPDK Tunneling. VXLAN and GRE are supported protocols. ○ Support for multicast snooping (IGMPv1 and IGMPv2) ○ Support for VXLAN Group Policy extension Appendix B. Post OVS Feature.
  • 54. 54© PIOLINK, Inc. SDN No.1 Reference ● openflow-spec-v1.1.0 ● openflow-spec-v1.2.0 ● openflow-spec-v1.3.0 ● openflow-spec-v1.4.0 ● openflow-spec-v1.5.0 ● openflow-spec-v1.5.1 ● https://github.com/openvswitch/ovs/
  • 55. 감사합니다. ㈜파이오링크 서울시 금천구 가산디지털2로 98 (가산동 550-1) IT캐슬 1동 401호 TEL: 02-2025-6900 FAX: 02-2025-6901 www.PIOLINK.com 55 감사합니다.