Per-router control plane
각각의 라우터 별로 라우팅 알고리즘을 수행한다.
그래서 라우터별로 forwarding table을 유지하고 있다.
Routing 하는 부분이 control plane이고, forwarding 하는 부분은 data plane이다.
SDN
remote 하게 떨어져 있는 controller가 각각의 CA(local control agent)와 상호작용한다.
CA에서는 forwarding table을 계산한다.
라우터별로 CA가 있고, 중앙 장치는 CA로부터 정보를 받아서 라우팅 알고리즘을 수행한다.
SDN은 다음과 같은 이유에서 필요하다.
- 더 쉬운 네트워크 관리
- 테이블 기반 포워딩은 라우터를 프로그래밍하는 것을 가능하게 해 준다.
- 중앙집중화된 프로그래밍은 테이블을 중앙에서 계산하고 분배할 수 있어서 쉽다.
- 분산된 프로그래밍은 각 라우터에서 구현된 분산 알고리즘의 결과로 테이블을 계산해야 해서 어렵다.
SDN의 특징은 다음과 같다.
- flow-based forwarding을 한다.
- control plane과 data plane을 분리했다.
- control plane은 data plane 스위치의 외부를 제어할 수 있다?
- 라우팅을 프로그램이 가능하게 한다.
Data -plane swithces
- 하드웨어에서 일반화된 data plane forwarding을 구현하는 빠르고 간단한 스위치
- forwarding table은 컨트롤러에 의해 계산되고 설치된다.
- 테이블 기반 스위치 제어를 위한 API (openFlow)
- 무엇을 제어할 수 있고, 없는 지를 정의한다.
- 컨트롤러와의 통신을 위한 프로토콜(OpenFlow)
SDN controler (network OS)
- 네트워크 상태 정보를 유지한다.
- 네트워크 controll 애플리케이션과 상호작용한다.
- 하위의 네트워크 스위치와는 API를 통해 상호작용한다.
- 분산 시스템으로 구현된다.
- 성능, 확장성, 장애 허용성, 견고성 측면을 고려
network-control application
- 제어의 두뇌라고 불리며, SDN controller가 제공하는 하위 수준 서비스 및 API를 사용하여 control
SDN controlled switches -> data plane
SDN controller, network-control app -> control plane
종합해 보면 SDN은 아래와 같이 생겨먹었다.
우선 젤 위층은 네트워크 제어 애플리케이션들을 위한 추상화
밑에 층은 네트워크 전역에 분산되고 견고한 상태관리
젤 아래층은 제어받는 장치들과의 통신
이라 한다.
OpenFlow protocol
SDN 컨트롤러와 네트워크 장치 사이에서 동작하는 프로토콜이다.
- 메시지 교환을 위해 TCP가 사용된다.
- 세 가지 종류의 OpenFlow 메시지가 있다.
- 컨트롤러 -> 스위치
- 비동기식 메시지 (스위치 -> 컨트롤러)
- 대칭 메시지
- OpenFlow protocol과 OpenFlow API는 구별된다.
- API -> forwarding 작업을 지정하는 데 사용됨.
controller -> switch message
- features : controller 상태에 대한 queries
- configure : 컨트롤러가 스위치의 설정 파라미터들을 질의하거나 설정할 수 있도록 한다.
- modify-state : 컨트롤러가 스위치 플로우 테이블의 엔트리를 추가/제거/수정하거나 특성을 설정한다.
- packet-out : 스위치의 지정된 포트에서 특정 패킷을 내보내기 위해 사용한다.
switch -> controller message
- packet-in : 플로우 테이블의 어떤 엔트리와도 일치하지 않는 경우, 그러한 특정 패킷을 컨트롤러에게 전달하면서
처리 방법을 질의 - flow-removed : 플로우 테이블 엔트리가 시간 만료되었거나 또는 상태 수정 메시지를 받은 결과로 삭제되었음을 알림.
- port - status : 포트의 상태 변화를 컨트롤러에게 보고함.
동작방식
- s1이 링크 장애가 발생해 openFlow 포트 상태 메시지를 사용하여 컨트롤러에게 알린다.
- SDN 컨트롤러는 OpenFlow 메시지를 수신하고 링크 상태 정보를 업데이트한다.
- 다익스트라의 라우팅 알고리즘 응용 프로그램이 호출됨.
- 다익스트라의 라우팅 알고리즘은 컨트롤러에서 네트워크 그래프 정보와 링크 상태 정보에 접근하여 새로운 경로를 계산함.
- 링크 상태 라우팅 app는 SDN 컨트롤러의 플로우 테이블 계산 구성요소와 상호작용해서 새로운 플로우 테이블을 계산한다.
- 컨트롤러는 업데이트가 필요한 스위치에 새로운 테이블을 설치하기 위해 OpenFlow를 사용한다.
ODL
중간층을 제외하면 비슷한 내용이다.
어떤 식으로 관리할 것이냐를 결정하는 것이 Controller마다의 역할이다.
ODL에서는 Network service application을 분리하고 Basic Network Service Functions이라고 해서
여러 manager들로 구성을 해서 구현을 해왔다.
ONOS
요약
- SDN은 더 쉬운 네트워크 관리와, 라우터를 프로그래밍 가능하게 한다.
- 집중화가 이유, 분산화는 프로그래밍이 어려움.
- SDN의 특징은 1) control plane과 data plane을 분리 2) flow-based forwarding,
3) 네트워크 제어 기능이 data plane switch 외부에 존재 4) 라우팅을 프로그래밍 가능케 한다. - SDN은 아래에서부터 data-plane switches, SDN controller, network-control application으로 구성되어 있다.
- OpenFlow 프로토콜은 SDN 컨트롤러와 네트워크 장치 사이에서 동작하는 프로토콜이다.
- 컨트롤러 -> 스위치, 스위치 -> 컨트롤러, 대칭 3가지의 분류가 Openflow message이다.
- OpenFlow API와는 다르다.
- API는 forwarding actions를 일반화
'Computer Science > Network' 카테고리의 다른 글
[컴퓨터망]-network managment, configuration (0) | 2023.06.14 |
---|---|
[컴퓨터망]-ICMP(Internet Control Message Protocol) (0) | 2023.06.14 |
[컴퓨터망]-라우팅 알고리즘 (0) | 2023.06.13 |
[컴퓨터망]-Flow table (0) | 2023.06.12 |
[컴퓨터망]-NAT & IPv6 (3) | 2023.06.12 |