openflow 1.5.1

55
1 © PIOLINK, Inc. SDN No.1 OpenFlow 1.5.1 2015-05-15 파이오링크 SDN개발실 정병화 [email protected]

Upload: jungbh

Post on 14-Jul-2015

1.635 views

Category:

Technology


8 download

TRANSCRIPT

Page 1: OpenFlow 1.5.1

1© PIOLINK, Inc. SDN No.1

OpenFlow 1.5.1

2015-05-15 파이오링크SDN개발실 정병화 [email protected]

Page 2: OpenFlow 1.5.1

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

Page 3: OpenFlow 1.5.1

3© PIOLINK, Inc. SDN No.1

ExtensibleBasic

Refactoring architecture

Genericstructure

Flexiblestructure

New function & component

~ 1.0 1.2 ~ 1.5 1.1

OpenFlow history

Page 4: OpenFlow 1.5.1

4© PIOLINK, Inc. SDN No.1

1.0

1.5

1.1 1.2

1.31.4

Multiple tableGroup

Extensible Match supportController role change mechanism Refactor capabilities negotiation

More flexible table miss supportPer flow metersAuxiliary connectionsTunnel-ID metadata

More extensible wire protocolFlow monitoringEvictionVacancy eventsBundles

Egress TablesPacket type aware pipelineExtensible flow entry statisticsMeter actionport properties for pipeline fieldsPort 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

Page 5: OpenFlow 1.5.1

5© PIOLINK, Inc. SDN No.1

OpenFlow

history

Flow Table Flow

TableFlow Table

v1.2v1.3v1.4v1.5

v1.1

Multiple Table& Pipeline

GroupTable

Port

OpenFlow Chanel

Virtual port

Extensible match (OXM)prerequisite systemexperimenter matchipv6 match

MatchAction set

Controller OpenFlowMessage

InstructionAction

‘set_field’ action

Metadata field

renameLogical port

refactor capabilitiesmultipart framework

flexible table miss as flow entry

ipv6 extension header match

meter

MeterTable

per connection event filtering OpenFlow Chanel

ControllerAuxiliary connections

Multiple Controller active & standby role

Tunnel-ID metadata

More extensible OXM(port,table,queue,action,etc)

More descriptive reason for packet-inBundles Message

Optical port properties

Flow monitoring

EvictionVacancy events

TCP port to 6653

Flow Table

Flow TableMultiple Table

& Pipeline

egress table

Packet type pipeline fieldsPacket register pipeline fieldsTCP flags

Extensible flow entry statistics

meter action ‘copy_field’ action Statistic Trigger

scheduled bundles

properties for pipe line fieldsproperties for recirculation

Page 6: OpenFlow 1.5.1

6© PIOLINK, Inc. SDN No.1

OpenFlow 1.1 Feature (B.9.x)1. Multiple Tables2. Groups3. Tags : MPLS & VLAN4. Virtual ports5. Controller connection failure6. Other changes

a. Rename VENDOR APIs to EXPERIMENTER APIs

Page 7: OpenFlow 1.5.1

7© PIOLINK, Inc. SDN No.1

OpenFlow 1.2 Feature (B.10.x)1. Extensible match support2. Extensible ‘set_field’ packet rewriting support3. Extensible contest expression in ‘packet_in’4. Extensible Error messages via experimenter error type5. IPv6 support added6. Simplified behaviour of flow-mod request7. Removed packet parsing specification8. Controller role change mechanism9. Other changes

a. Virtual ports renamed logical ports

Page 8: OpenFlow 1.5.1

8© PIOLINK, Inc. SDN No.1

OpenFlow 1.3.0 Feature (B.11.x)1. Refactor capabilities negotiation2. More flexible table miss support3. IPv6 Extension Header handling support4. Per flow meters5. Per connection event filtering6. Auxiliary connections7. MPLS BoS matching8. Provider Backbone Bridging tagging9. Rework tag order

10. Tunnel-ID metadata11. Cookies in packet-in12. Duration for stats13. On demand flow counters

Page 9: OpenFlow 1.5.1

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

Page 10: OpenFlow 1.5.1

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

Page 11: OpenFlow 1.5.1

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

Page 12: OpenFlow 1.5.1

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으로 전송되어야 함.

Mainconnection

Auxiliaryconnection

OpenFlow Switch

Controller

OpenFlow 1.3 New Feature

Page 13: OpenFlow 1.5.1

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

Page 14: OpenFlow 1.5.1

14© PIOLINK, Inc. SDN No.1

OpenFlow 1.4.0 Feature (B.16.x)1. More extensible wire protocol2. More descriptive reasons for packet-in3. Optical port properties4. Flow-removed reason for meter delete5. Flow monitoring6. Role status events7. Eviction8. Vacancy events9. Bundles

10. Synchronised tables11. Group and Meter change notifications12. Error code for bad priority13. Error code for Set-async-config14. PBB UCA header field15. Error code for duplicate instruction16. Error code for multipart timeout17. Change default TCP port to 6653

Page 15: OpenFlow 1.5.1

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

Page 16: OpenFlow 1.5.1

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

Page 17: OpenFlow 1.5.1

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

Page 18: OpenFlow 1.5.1

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

Page 19: OpenFlow 1.5.1

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

Page 20: OpenFlow 1.5.1

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 정의

Page 21: OpenFlow 1.5.1

21© PIOLINK, Inc. SDN No.1

OpenFlow 1.5.0 Feature (B.18.x)1. Egress Tables2. Packet Type aware pipeline3. Extensible Flow Entry Statistics4. Flow Entry Statistics Trigger5. Copy-Field action to copy between two OXM fields6. Packet Register pipeline fields7. TCP flags matching8. Group command for selective bucket operation9. Alloc set-field action to set metadata field

10. Allow wildcard to be used in set-field action11. Scheduled Bundles12. Controller connection status 13. Meter action14. Enable setting all pipeline fields in packet-out15. Port properties for pipeline fields16. Port property for recirculation17. Clarify and improve barrier18. Always generate port status on port config change19. Make all Experimenter OXM-IDs 64 bits

20. Unified requests for group, port and queue multiparts21. Rename some type for consistency22. Specification reorganisation

Page 22: OpenFlow 1.5.1

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 pipeline.

OpenFlow 1.5 New Feature

Page 23: OpenFlow 1.5.1

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

Page 24: OpenFlow 1.5.1

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

Page 25: OpenFlow 1.5.1

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

Page 26: OpenFlow 1.5.1

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

Page 27: OpenFlow 1.5.1

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

Page 28: OpenFlow 1.5.1

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

Page 29: OpenFlow 1.5.1

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

Page 30: OpenFlow 1.5.1

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

Page 31: OpenFlow 1.5.1

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

Page 32: OpenFlow 1.5.1

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

Page 33: OpenFlow 1.5.1

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

Page 34: OpenFlow 1.5.1

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

Page 35: OpenFlow 1.5.1

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

Page 36: OpenFlow 1.5.1

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

Page 37: OpenFlow 1.5.1

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]

Page 38: OpenFlow 1.5.1

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)

Page 39: OpenFlow 1.5.1

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를 사용해야 함.

Page 40: OpenFlow 1.5.1

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임을 명시

Page 41: OpenFlow 1.5.1

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 */

}

Page 42: OpenFlow 1.5.1

© PIOLINK, Inc. SDN No.1

A. OpenFlow Components.B. Deep Dive - overlapping flow entry, synchronised table, meteringC. Post OVS-v2.3.0

Appendix.

42

Page 43: OpenFlow 1.5.1

43© PIOLINK, Inc. SDN No.1

Main components of an OpenFlow switchAppendix A. OpenFlow components.

Page 44: OpenFlow 1.5.1

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_DSTOXM_OF_ETH_SRC….OXM_OF_PBB_UCA

/* Pipeline Match Fields - 6개 */OXM_OF_IN_PORTOXM_OF_IN_PHY_PORT….OXM_OF_PACKET_TYPE

HMoxm_field oxm_lengthoxm_class

31 09 8 716 15

Match Field Instructions

/* Actions type - 18개 */OFPAT_OUTPUTOFPAT_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.

Page 45: OpenFlow 1.5.1

45© PIOLINK, Inc. SDN No.1

Packet flow through the processing pipeline.Appendix A. OpenFlow components.

Page 46: OpenFlow 1.5.1

46© PIOLINK, Inc. SDN No.1

Packet flow through an OpenFlow switch.Appendix A. OpenFlow components.

Page 47: OpenFlow 1.5.1

47© PIOLINK, Inc. SDN No.1

Matching and Instruction execution in a flow table.Appendix A. OpenFlow components.

Page 48: OpenFlow 1.5.1

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)

Page 49: OpenFlow 1.5.1

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 정의

Page 50: OpenFlow 1.5.1

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의 예>

Page 51: OpenFlow 1.5.1

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에 정의 안됨

Page 52: OpenFlow 1.5.1

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

Page 53: OpenFlow 1.5.1

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.

Page 54: OpenFlow 1.5.1

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/

Page 55: OpenFlow 1.5.1

감사합니다.㈜파이오링크

서울시 금천구 가산디지털2로 98

(가산동 550-1) IT캐슬 1동 401호TEL: 02-2025-6900FAX: 02-2025-6901www.PIOLINK.com

55

감사합니다.