onos(open network operating system) v1.0 avocet

93
ONOS (Open Network Operating System) V1.0 Avocet 2015. 03. 11 ㈜파이오링크 SDN개발실 이준 ([email protected])

Upload: rootfs32

Post on 15-Jul-2015

735 views

Category:

Technology


9 download

TRANSCRIPT

Page 1: ONOS(Open Network Operating System) V1.0 Avocet

ONOS

(Open Network Operating System)

V1.0 Avocet

2015. 03. 11

㈜파이오링크

SDN개발실 이준 ([email protected])

Page 2: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Index

What is ONOS ?

ONOS Release

ONOS Architecture

Key Elements of ONOS

- Distributed Core

- Northbound abstraction

- Southbound abstraction

- Software Modularity

Conclusions

References

Appendix A

- Installing and Running ONOS

Appendix B

- ONOS Northbound API

Appendix C

- ONOS V1.1.0 Blackbird 소개

2

Page 3: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

What is ONOS?

ONOS (Open Networking Operating System)

-스탠포드, UC 버클리, AT&T 등 학계 및 통신사업자가 주도하고 있는 프로젝트, 최근 국내 이동통신사 SKT 참여

• ODL (OpenDayLight)과 경쟁관계

• Service Provider를 위한 캐리어급 오픈소스 SDN 운영체제 개발을 목표로 함

- Distributed Network OS for Large Scale Networks

• Wan core backbone: 200-500 routers, 5K-10K ports

• Metro networks: 10K-50K routers, 2M-3M+ ports

• Cellular access network: 20K-100K devices, 100K-10M+ ports

• Wired access/aggregation: 10K-50K devices, 100K-1M ports

- Large Scale Networks 를 관리하기 위한 Distributed Network OS

• Scale-out

• High Performance

• High Availability

- Here distributed does not mean geo-distributed, but a single cluster of 5-25 co-

located physical servers

3

Page 4: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

ONOS Release

4

Name Version Date Description

Avocet 1.0.0 Dec. 5, 2014 First open source ONOS release

1.0.1 Jan. 22, 2015 Maintenance Release 1

Blackbird 1.1.0-rc1 February 28th, 2015 Not available yet

Page 5: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

ONOS Architecture

5

Page 6: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

ONOS General Architecture

6

ONOS 는 위 그림과 같이 계층(Layer) 구조로 되어 있음

Network Element 설정을 위한 Protocol(openflow, netconf), ONOS 에서 Protocol 제어를 위한 Provider, ONOS

에서 Network Element 의 포워딩 제어 및 정보수집을 위한 Southbound Interface, ONOS 의 핵심인 Distributed

Core, 응용계층에 정보 제공을 위한 Northbound Interface, 서비스 제공을 위한 응용프로그램 계층

Network

Elements

Page 7: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

ONOS Distributed Architecture

7

분산처리를 위해 여러 개의 ONOS 를 Cluster 형태로 묶어 운영이 가능 함

Page 8: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

ONOS Distributed Architecture

8

ONOS 에는 두 가지 종류의 Control Channel 이 존재 함

Cluster 구성 시 Instance 사이에 정보를 교환하는 Control Channel (The control network)

Network Device 와 ONOS 사이에 정보를 교환하는 Control Channel (The network control channel)

Page 9: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

ONOS Architecture

9

ONOS 에서 Service 와 Subsystem 의 정의

각 Layer 에 위치한 Component 들이 모여 하나의 Service 를 구성

ONOS Architecture 에서 Service 와 Subsystem 은 동일한 개념

만약 OpenFlow 프로토콜을 이용해서, Flow 테이블을 추가하는 서비스를 구성하고 싶을 경우, Providers,

Distributed Core, Apps 에 Component 를 추가 해야 함

Page 10: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

ONOS Architecture

ONOS defines several primary subsystems (services)

- Device Subsystem: Device 들을 관리하는 역할

- Link Subsystem: Link 들을 관리하는 역할

- Host Subsystem: Host 와 Host 의 위치를 관리하는 역할

- Topology Subsystem: Network Graph View 를 관리하는 역할

- PathService: Topology Graph 를 이용하여 Device 와 Host 들 사이의 경로를 찾고 계산하는 역할

- FlowRule Subsystem: Device 에 Install 된 Flow rule 들을 관리하는 역할

- Packet Subsystem: Application 들이 Network Device로 부터 수신하는 데이터 패킷을

모니터링하고 생성하는 역할

10

Page 11: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

ONOS Architecture

Subsystem Structure

11

ONOS 에서 Subsystem 의 상세 구조

Provider Component 와 App Component 는 Distributed Core 의 Manager Component에 등록하여, Provider 에서 오는 정보를 App 이 수신하고, App 에서 Provider 로 명령 전달이 가능 함

Page 12: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

ONOS Architecture

ONOS에서 Event 와 Description 의 정의

- ONOS 내부에서 전달되는 정보(information) 를 의미 함

- Description

• Southbound API 를 통해 전달되는 Network Element 의 정보(information)를 의미

- ex) HostDescription 은 Host 의 MAC, IP주소와 네트워크 상의 위치를 의미함(vlan or device에 연결된 port)

- Event

• Store 에서 분산처리를 위해 사용

• Manager 에서 Listener로 네트워크 상태변화와 같은 정보를 알리기 위해 사용

- ex) DeviceEvent: DEVICE_ADD, DEVICE_REMOVED, DEVICE_UPDATED

12

Page 13: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

ONOS Architecture

13

ONOS에서 Event 와 Description 의 정의

네트워크 상에 OpenFlow 스위치가 활성화 될 경우, OpenFlow Provider 를 통해 Description 형태로, 스위치 정보전달

Component Manager 에 스위치 정보가 저장되고, 스위치 정보는 Event 형태로 동일한 Service 의 Application 이나 다른 Application 으로 전달

Page 14: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

14

Page 15: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

15

ONOS 의 핵심은 다음과 같이 요약 가능

- Scale-out, High Availability, Performance, North-bound Abstraction. South-bound Abstraction

Page 16: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Distributed Core

- Performance

- Scale-out

- High Availability

- State Management

16

Page 17: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Distributed Core

-여러 개의 ONOS Instance 를 묶어 Cluster 형태로 운영 가능

17

Instance 1 Instance 2 Distributed

Network OS

Network

Elements

172.17.0.2 172.17.0.3

Cluster 형태로 운영하기 위해서 ONOS 에서 Clustering 설정이 필요 함

Custer 구성 시 각 Switch 들은 Instance 1 과 Instance 2 로 연결을 수행 해야 함

- Switch 가 등록될 경우 Switch 의 상태 정보는 Instance 1과 Instance 2 에 모두 저장 됨

OF: 1 OF: 3 OF: 5

OF: 2 OF: 4 OF: 6

Page 18: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Distributed Core

18

클러스터 구성 시 ONOS GUI 실행 모습

GUI 를 통해 Instance1(172.17.0.2) 와 Instance2(172.17.0.3) 의 네트워크 상태정보 확인이 가능

Page 19: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Distributed Core

19

Switch 1, 4, 5, 6 은 Instance 1 에 연결, Switch 2, 3 은 Instance 2 에 연결

각 Switch 들은 두개의 Instance 에 연결을 하지만, Instance 들 사이에서 하나의 Master Instance 를 설정하여, 서비스를 제공 받음

- ex) 사용자가 OF1 에 Flow Table 을 추가할 경우 Instance1(172.17.0.2) 에서 추가해야 하지만, 추가된 Flow Table 정보는

Instance2(172.17.0.3) 에도 저장

OF: 1

OF: 2

OF: 3

OF: 4

OF: 5

OF: 6

Page 20: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Distributed Core

Instance 1 Instance 2 Distributed

Network OS

Network

Elements

172.17.0.2 172.17.0.3

OF: 1

Switch 1 : Master Switch 1: Standby

Distributed

Registry

Master Election 알고리즘을 통해 Master 와 Standby Instance 를 선정

Master 를 통해 서비스를 제공 받다가 Master 에 장애가 발생할 경우 Standby Instance 가 Master 로 변경되어 짐

Master 는 한 개지만, Standby Instance 는 두 개 이상

- ex> Master 가 Instance1 이고 Standby 가 Instance2, Instance3, Instance4 …

Page 21: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Distributed Core

21

Instance1(172.17.0.2) 은 네트워크 상에 파란색으로 표시되는 Switch 들의 Master

Instance2(172.17.0.3) 은 네트워크 상에 갈색으로 표시되는 Switch 들의 Master

Page 22: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Distributed Core

22

• 명령어를 통해 Master Instance 재설정이 가능

• 앞 페이지와 Instance 당 스위치 수 비교: Cluster 로 구성된 Instance 들 사이의 관리 Switch 를 적절하게 분배

OF: 1

OF: 2

OF: 3

OF: 4

OF: 5

OF: 6

Page 23: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Distributed Core

- Performance

- Scale-out

- High Availability

- State Management

23

Page 24: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Performance : Key Performance Requirements

24

Large Network 를 관리하기 위해서 고성능을 요구함

Page 25: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Distributed Core

- Performance

- Scale-out

- High Availability

- State Management

25

Page 26: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Scale-out

26

각 Instance 는 Network 의 한 부분을 구축하고 관리하는 역할을 담당

Page 27: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Scale-out

27

네트워크 규모가 커짐에 따라 Control Capacity 증가 가능

-

Page 28: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Distributed Core

- Performance

- Scale-out

- High Availability

- State Management

28

Page 29: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

High Availability

29

ONOS 는 클러스터 형태로도 운영이 가능 (Single Instance or Multiple Instance)

- 각기 다른 서버들을 하나로 묶어서 하나의 시스템 같이 동작하게 함

Network Device 에서는 Single Instance 인지 Multiple Instance 인지 인식하지 못함

Page 30: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

High Availability

30

서버 클러스터로 운영 시 Network Device 는 한 개의 Master Instance 로 서비스를 제공 받음

클러스터로 연결된 Instance 들 사이에 Leader election Mechanism 을 통해 하나의 Master Instance 를 선정

Page 31: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

High Availability: Fault-tolerance using Distributed Registry

31

Network Element 에 High Availability 서비스를 제공

클러스터의 Master Instance 에서 장애가 발생할 경우…

Page 32: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

High Availability: Fault-tolerance using Distributed Registry

32

클러스터로 묶인 다른 마스터 후보 (정상적인 서버)와 재 연결

Network Device 들에게 지속적이고, 끊기지 않게 서비스 이용 가능

- 클러스터 운영 시 Switch 의 정보는 Instance1, Instance2, Instance3 에 동기화 되어 있음

- 다른 Instance 에 연결되어도 정상적인 서비스 가능

Page 33: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

High Availability Example: Fault-tolerance using Distributed Registry

33

최초 설정 시 Instance 1은 Switch 4, 5, 6 의 Master, Instance 2 는 Standby

최초 설정 시 Instance 2는 Switch 1, 2, 3 의 Master, Instance 1 은 Standby

OF: 1

OF: 2

OF: 3

OF: 4

OF: 5

OF: 6

Page 34: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

High Availability Example: Fault-tolerance using Distributed Registry

34

Instance 2 를 강제로 종료 할 경우, Switch 4, 5, 6 의 Master 가 Instance 1 으로 변경

OF: 1

OF: 2

OF: 3

OF: 4

OF: 5

OF: 6

Page 35: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Distributed Core

- Performance

- Scale-out

- High Availability

- State Management

35

Page 36: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

36

State Management

Distributed Core 의 주된 역할은 State Management (Intents, Topology, Flow Tables)

클러스터로 묶인 서버에 저장되어 있는 State 들에 대한 동기화 필요

각 state 들이 사이즈, read/write pattern, 지속시간 등이 다르기 때문에 각 state에 최적화된 동기화 메커니즘이

필요 함

Page 37: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

37

State Management : Example #01

Switch A 가 네트워크에 연결될 경우 Instance1 이 Switch A의 Master 로 설정됨

Instance2, Instance3 는 Switch A의 Standby 가 됨

Page 38: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

38

State Management : Example #01

Instance1 의 저장소에 Switch A의 Master 는 Instance1 이라는 정보를 저장하려고 할 때 , Instance1 은

Standby 의 저장소에 해당 정보를 바로 동기화 함

Page 39: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

39

State Management : Example #01

Instance1, Instance2, Instance3 의 분산저장소에 동시에 Lock, Store(switch A의 Master 정보), Unlock 을 진행

Page 40: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

40

State Management : Example #02

Instance1 에 연결된 Switch A의 상태가 비활성화(Inactive) 에서 활성화(Active) 상태로 변경됨

Page 41: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

41

State Management: Example #02

Instance1 의 저장소에 Switch A의 상태가 Active 라는 정보를 저장한 후 , Instance1 은 Standby 의 저장소에 해당 정보를 동기화 함

Page 42: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

42

State Management : Example #02

Instance1 의 저장소에 Switch A의 상태가 Active 라는 정보를 저장한 후 , Instance1 은 Standby 의 저장소에 해당 정보를 동기화 함

Page 43: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Master Election: Strong Consistency

-정보를 저장하려고 할 때, 바로 동기화 함

-즉각적이고 정확한 Consistency 를 보장 (Write 에 대한 일관성을 보장)

- 정확한 Consistency 를 보장하지 않을 경우, 여러 개의 Master를 인식할 가능성이 존재

Network State: Eventual Consistency

- 정보를 저장한 후, 동기화 함

- 즉각적이고 정확한 Consistency 를 보장하지 않지만, 시스템 부하를 줄임

- 네트워크 상태는 수시로 변경됨으로, 실시간으로 반영하기 어려움

43

각 State의 특징에 맞는 Consistency 모델 필요

Page 44: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

- Application Intents

• Strongly consistent

44

172.16.0.0

172.17.0.0

172.18.0.0

- Flow Rules, Flow Stats

• Eventually consistent

- Network Topology

• Eventually consistent

Intent Intent Intent

State Management

ONOS 는 서비스 제공을 위해 Intent, Network Topology, Flow Rule 등 다양한 상태정보를 저장하고 있음

상태정보의 특성에 맞는 Consistent 알고리즘이 필요

Page 45: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Northbound Abstractions

- Intent Framework

- Global Network View

45

Page 46: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Northbound Abstractions

- Northbound Interface 추상화를 통해 서비스 개발 및 설정, 관리가 용이하도록 함

46

Page 47: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Northbound Abstractions

- Intent Framework

- Global Network View

47

Page 48: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Intent Framework

- Intent 프로그래밍

• Application specifies high-level intents (not low-level rules)

• How 가 아닌 What 에 초점을 맞춘 Programming

- 상세 설정은 ONOS 에서…

- Examples:

• Host A 와 Host B 를 연결

• Switch X 와 Switch Y 사이에 Z 의 Bandwidth 를 가지는 최적의 Path 설정

• Host A 와 Host B 사이 트래픽을 차단

48

Page 49: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Intent Framework Design

49

Intent Framework 는 위와 같은 구조로 되어 있음

Page 50: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Intents in ONOS 1.0.0

- Connectivity-Based

• Host to Host, Multi-Point to Single Point

- Supports Constraints as policy

• Link type, bandwidth

50

Page 51: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Northbound Abstractions: Intent Example

Application 에서 Intent 를 설정 할 경우 ONOS 에서 Compile, Install 과정을 거쳐 Network Device 에 맞는

Protocol 로 변경되어 전달 됨

51

Page 52: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Northbound Abstractions: Intent Example

- Intent: Set up connection between Host A and Host B

52

Host A Host B

Connection

Page 53: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Northbound Abstractions: Intent Example

- Intent: Set up connection between Host A and Host B

53

Host A Host B

Connection

Host A Host B Host A Host B

Compilation

Host to Host Intent

Path Intent Path Intent

Compile 을 통해 두개의 Path Intent 로 변환

Page 54: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Northbound Abstractions: Intent Example

54

Host A Host B Host A Host B

Install

Path Intent Path Intent

Flow Rule Batch Flow Rule Batch Install 시 Network Device 에 적합한 형태로 변환

Page 55: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Intent Example : Connectivity-Based (Host to Host)

55

GUI 를 이용해, 연결을 원하는 호스트 클릭

Host 1(10.0.0.1) 에서 Host 2 (10.0.0.2) 로 가는 Path 를 설정하고 싶을 경우

Host 1, Host 2를 순서대로 클릭 (Network 의 Switch 는 클릭하지 않음)

Page 56: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Intent Example : Connectivity-Based (Host to Host)

56

Host1, Host2 사이의 최적화된 경로를 찾아 ONOS 에서 Flow Path 를 생성 함

ONOS 에서 각 스위치에 Flow Table 을 추가 함

Page 57: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Intent Example : Connectivity-Based (Host to Host)

57

ONOS 에서 명령어를 이용해, Intent 와 Flow Table 을 확인

Page 58: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Intent Example : Connectivity-Based (Multi-point to Single point)

58

여러 개의 Host 를 클릭할 경우 Multi-Source Flow 생성이 가능 함

Page 59: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Northbound Abstractions

- Intent Framework

- Global Network View

59

Page 60: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Global Network View

- Application 에게 ONOS 가 관리하는 Network 의 Global View를 제공

• Host, switch, link, network utilization 변수로 사용될 수 있는 상태 값

- Application 에서는 Northbound API 를 통해 Application 에 적합한 Network View를

Program이 가능함

• Network View 를 통해 최적화된 경로를 찾는 Application

• 네트워크 모니터링을 통한 동적인 트래픽 부하분산 Application

• 보안검사 수행을 위한 트래픽 경로변경 Application

60

Page 61: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Network View: Model Object Types

61

ONOS 에서는 GUI를 통해 Network View 를 제공 함. Network Elements 들을 하나의 Object 로 단순화 하여 표현

- Switch, router, access-point 는 종류에 관계 없이 하나의 Device Object 로 표현

Object 와 Link 로 Network View 를 제공, 자동으로 인식하고 사용자가 직접 추가 가능

Page 62: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

62

Network Graph and Switches

네트워크 상에 OpenFlow 를 지원하는 스위치가 있을 경우, OpenFlow 프로토콜을 이용하여 ONOS 의 Switch

Manager 에서 Switch 정보 수집

Switch Manager 에 저장된 정보를 이용하여 Network Graph 에서 Switch 정보를 표현

Page 63: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Network Graph and Switches

63

네트워크에 6개의 OpenFlow 스위치가 존재 할 경우 ONOS에서 Network View

Page 64: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

64

Network Graph: Links

ONOS 의 Link Discovery 모듈에서 네트워크에 존재하는 Device 간 Link 정보를 수집

Link Discovery 에 저장된 정보를 이용하여 Network Graph 에서 Device 들이 연결된 link 정보를 표현

Page 65: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Network Graph: Links

65

네트워크에 6개의 OpenFlow 스위치 사이에 Link 가 생성될경우 ONOS에서 Network View

Page 66: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

66

Network Graph: Devices

네트워크 상에 존재하는 Host 에서 패킷이 발생될 경우 ONOS 의 Device Manager 에서 Device 들의 정보 수집

- MAC, IP 주소, Link 정보

Device Manager 에 저장된 정보를 이용하여 Network Graph 에서 Host 정보를 표현

Page 67: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Network Graph: Devices

67

네트워크에 3개의 Host 를 추가하고, ping 명령어를 이용해 패킷을 발생 시킬 경우 ONOS에서 Network View

Host 에서 패킷이 발생되지 않을 경우 ONOS 는 해당 Host 를 인식하지 못함

Page 68: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Southbound Abstraction

68

Page 69: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Southbound Abstraction

- ONOS 가 서로 다른 프로토콜을 사용하는 (OpenFlow, NetConf, etc)다양한 종류의 디바이스들을 제어하고 관리할 수 있도록 지원 (device -agnostic)

• ONOS는 Southbound Abstraction 을 통해 Network Elements 들을 하나의 Object

로 로 표현

- Pluggable Southbound: 새로운 종류의 디바이스와 프로토콜 추가 가능

69

Page 70: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Southbound Abstraction

70

Bring Your Own Provider: ONOS 를 이용하여 Network Device 를 제어 할때 ONOS 에서 제공하는 OpenFlow,

NetConf 외에 새로운 프로토콜이 필요할 경우

사용자가 새로운 Provider Component를 개발하여 ONOS 모듈에 추가 가능

- 사용자가 원하는 프로토콜 확장이 가능함

Page 71: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Provider Lifecycle

71

OpenFlow

Provider

NetConf

Provider

Provider

Component

Provider

Core

Provider Service Provider Registry

1. register

4. unregister

2. sensing 3. command

1. Provider 는 Provider Registry 를 통해 Core 에 등록

2. Provider 는 Core 에 새로운 이벤트(Device connected, Packet in)를 알리기 위해서 Provider Service

모듈을 이용

3. Core 는 Provider 가 관리하는 Network Element로 명령을 내리기 위해 Provider 를 이용

4. Provider 는 Provider Registry 를 통해 Core 에 등록 삭제

ONOS에 새로운 Provider Component 를 추가하는 방법은 다음과 같음

Page 72: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

OpenFlow Specific Provider

- Device Provider

- Packet Provider

- Flow Provider

Generic Provider

- LLDP Provider

- Host Provider

72

현재 ONOS V1.0.0 에서 제공하고 있는 Provider Component

Page 73: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Software Modularity

73

Page 74: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Key Elements of ONOS

Software Modularity

- Software System 으로써 ONOS 개발, 디버깅, 통합 및 수정이 용이하도록 모듈화

- Java 언어 기반의 OSGi framework (karaf 사용)

• 재부팅 없이 동적으로 Component 추가 삭제가 가능함

-모듈화 구조를 통해 기능확장이 용이 함

74

Page 75: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Conclusions

오픈소스 네트워크 운영체제

- 개방성과 비용절감

확장성, 높은 가용성, 성능

- 서비스 제공업체와 기업들의 요구를 충족 시킬 수 있는 SDN 컨트롤러

- 새롭고 차별화된 서비스 개발을 가능하게 함

Southbound, Northbound API 기능과 모듈 구성

- 서비스 개발이 쉽고 다양한 서비스 개발이 가능

75

대규모 네트워크 환경에 필요한 캐리어급 SDN 컨트롤러

Page 76: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

References

http://onosproject.org/resources/

http://wiki.onosproject.org

ONOS: Open Network Operating System, Pankaj Berde, Open Networking Laboratory

ONOS: Towards an Open, Distributed SDN OS, Pankaj Berde

76

Page 77: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Appendix A

Installing and Running ONOS

77

Page 78: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Appendix A: Installing and Running ONOS

1. Git 설치

78

2. Karaf 3.0.2 와 Maven 3.2.2 binaries 다운로드

build:~$ sudo apt-get install git-core

build:~$ cd; mkdir Downloads Applications build:~$ cd Downloads build:~$ wget http://download.nextag.com/apache/karaf/3.0.2/apache-karaf-3.0.2.tar.gz build:~$ wget http://www.apache.org/dist/maven/binaries/apache-maven-3.2.2-bin.tar.gz build:~$ tar -zxvf apache-karaf-3.0.2.tar.gz -C ../Applications/ build:~$ tar -zxvf apache-maven-3.2.2-bin.tar.gz -C ../Applications/

Page 79: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Appendix A: Installing and Running ONOS

3. Oracle Java 8 설치

79

build:~$ sudo apt-get install software-properties-common -y build:~$ sudo add-apt-repository ppa:webupd8team/java -y build:~$ sudo apt-get update build:~$ sudo apt-get install oracle-java8-installer oracle-java8-set-default -y

4. Git 을 이용하여, ONOS 소스 Home Directory 로 복사

build:~$ git clone https://gerrit.onosproject.org/onos -b 1.0.0

5. ~/.profile 에 아래 내용 추가

. ~/onos/tools/dev/bash_profile

6. 명령어 수행

build:~$ . ~/.profile

Page 80: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Appendix A: Installing and Running ONOS

7. Karaf 설정 파일 featureRepositories 부분에 아래 내용 추가

80

build:~$ vi ~/Applications/apache-karaf-3.0.2/etc/org.apache.karaf.features.cfg

mvn:org.onosproject/onos-features/1.0.0-SNAPSHOT/xml/features

8. Maven 을 이용하여 ONOS 빌드

build:~$ cd ~/onos build:~$ mvn clean install # or use the alias 'mci'

Page 81: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Appendix A: Installing and Running ONOS

9. cell definition 파일 생성 (ONOS 에서 사용하는 환경변수 파일)

81

build:~$ vi ~/onos/tools/test/cells/tutorial

# ONOS from Scratch tutorial cell # the address of the VM to install the package onto export OC1="192.168.56.101" # the default address used by ONOS utilities when none are supplied export OCI="192.168.56.101" # the ONOS apps to load at startup export ONOS_FEATURES="onos-api,onos-core-trivial,onos-cli,onos-openflow,onos-app-ifwd" # the Mininet VM (if you have one) export OCN="192.168.56.102" # pattern to specify which address to use for inter-ONOS node communication (not used with single-instance core) export ONOS_NIC="192.168.56.*"

10. cell 적용

build:~$ cell tutorial

Page 82: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Appendix A: Installing and Running ONOS

82

11. 사용자 계정 비밀번호 설정

build:~$ onos-push-keys 192.168.56.101 [email protected]'s password: [email protected]'s password:

12. ONOS 패키지 생성

build:~$ onos-package -rw-rw-r-- 1 onosuser onosuser 33395409 Dec 4 16:12 /tmp/onos-1.0.0.onosuser.tar.gz

13. ONOS 패키지 설치

build:~$ onos-install -f $OC1 onos start/running, process 2028

Page 83: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Appendix A: Installing and Running ONOS

83

14. ONOS 실행

build:~$ onos $OC1 Logging in as karaf Welcome to Open Network Operating System (ONOS)! ____ _ ______ ____ / __ \/ |/ / __ \/ __/ / /_/ / / /_/ /\ \ \____/_/|_/\____/___/ Hit '<tab>' for a list of available commands and '[cmd] --help' for help on a specific command. Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown ONOS. onos>

15. GUI bundle 로드

onos> feature:install onos-gui

16. GUI 실행 확인 (웹브라우져에서 실행)

http://localhost:8181/onos/ui/index.html

17. ONOS 명령어 확인

onos> --help

Page 84: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Appendix B

ONOS Northbound API

84

Page 85: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Appendix B: ONOS Northbound API

ONOS Northbound API

- ONOS 에서는 App 에서 Network Elements 들을 관리/제어 할 수 있는 API 를 제공

- ONOS V1.0.0 기준이며 향후 변경 가능성 존재 함

- REST API 형태로 제공

• Device

• Link

• Host

• Topology

• Path

• Flow

• Intent

85

Page 86: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Appendix B: ONOS Northbound API

ONOS Northbound API

86

GET /devices Lists all infrastructure devices.

GET /devices/{deviceId} Lists details of a specific infrastructure device.

GET /devices/{deviceId}/ports Lists ports of a specific infrastructure device.

POST /devices Creates a new infrastructure device into inventory (future).

PUT /devices/{deviceId} Updates a device - attributes, availability, mastership.

DELETE /devices/{deviceId} Deletes an infrastructure device from inventory

GET /links Lists all infrastructure links.

GET /links?{device=deviceId}{port=portNumber}{direction=[ALL,INGRESS,EGRESS]}

Lists details of a link.

POST /links Creates a new infrastructure link into inventory (future).

PUT /links/{linkId} Updates a link - attributes, e.g. type.

DELETE /link/{linkId} Deletes an infrastructure link from inventory.

Device

Link

Page 87: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Appendix B: ONOS Northbound API

ONOS Northbound API

87

GET /hosts Lists all end-stations hosts.

GET /hosts/{hostId} Lists details of a specific end-station host specified by the host ID.

GET /hosts/{mac}/{vlan} Lists details of a specific end-station host specified by the host MAC address and VLan Id.

POST /hosts Creates a new end-station host into inventory (future).

PUT /hosts/{hostId} Updates an end-station host - attributes, e.g. IP, location.

DELETE /hosts/{hostId} Deletes an end-station host from inventory.

GET /paths/{elementId}/{elementId} Gets set of pre-computed shortest paths between the specified source and destination network elements.

Host

Path

Page 88: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Appendix B: ONOS Northbound API

ONOS Northbound API

88

GET /topology Gets overview of the current topology.

GET /topology/clusters Gets list of topology cluster overviews.

GET /topology/cluster/{clusterId} Gets overview of a specific topology cluster.

GET /topology/cluster/{clusterId}/devices Gets infrastructure devices that belong to the specified topology cluster.

GET /topology/cluster/{clusterId}/links Gets infrastructure links that belong to the specified topology cluster.

GET /topology/broadcast/{connectPoint} Gets indication whether the given point permits broadcast.

GET /topology/infrastructure/{connectPoint} Gets indication whether the given point belongs to network infrastructure.

Topology

Page 89: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Appendix B: ONOS Northbound API

ONOS Northbound API

89

GET /intent/{intent-id} Gets the details for the given Intent object.

GET /intents Gets a collection containing all the Intent objects currently in the system.

POST /intent Creates a new Intent object.

POST /intents Creates a batch of Intent objects (pending -may not be included in finalized API).

DELETE /intent/{Intent-id} Removes an intent from the system.

Intent

Page 90: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Appendix B: ONOS Northbound API

ONOS Northbound API

90

GET /flows/{deviceId} Gets list of flow rules applied to the specified infrastructure device.

GET /flows/{deviceId}/{flowId} Gets details of a specified flow rule.

GET /flows Gets details of all flow rules in the system.

POST /flows/ Applies batch of flow rule operations; this includes add/remove operations.

POST /flows/{deviceId} Applies a new flow rule on the specified device.

DELETE /flows/{deviceId}/{flowId} Deletes a flow rule from the specified device.

GET /flows/link/{linkId} Gets aggregate statistics for all flows traversing the given link.

Flow

Page 91: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Appendix C

ONOS V1.1.0 Blackbird 소개

91

Page 92: ONOS(Open Network Operating System) V1.0 Avocet

© PIOLINK, Inc. SDN No.1

Appendix C: ONOS V1.1.0 Blackbird 소개

Feb 28th, 2015 Release 예정

ONOS V1.1 의 Main Theme 는 Stability and Performance

- ONOS V1.0 에서 Perf/Scale-out 은 Target 이 아니었음

ONOS V1.1.0 Release

- ONOS V1.0(Avocet) 에서 발견된 Bug 수정

- Performance and Scale

• 실제 하드웨어(Commodity Bare-metal Servers) 기반 Performance, Scale 테스트

• Clustering 성능평가를 위한 기준 값 제시

• Distributed Core 를 Hazelcast 에서 RAFT 를 이용한 구현으로 변경

- HA 부분 개선

- Use Case 내용 추가: SDN-IP at Internet2

- UI 개선

- Test Framework 개선

다음 Release 는 Cardinal (May 31st, 2015 예정)

92

Page 93: ONOS(Open Network Operating System) V1.0 Avocet

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

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

(가산동 550-1) IT캐슬 1동 401호

TEL: 02-2025-6900

FAX: 02-2025-6901

www.PIOLINK.com

93