2023. 6. 14. 12:00ㆍ공부/Network
Per-router control plane
기존 네트워크 상의 라우터들은 다음과 같은 구조를 하고 있다.
라우팅 알고리즘을 통해 최적의 경로를 계산하고 적절한 출구로 패킷을 보낸다.
라우터 하나가 소프트웨어적인 부분과 하드웨어적인 부분 모두를 담당하는 구조였다.
하나의 라우터에 control plane과 data plane이 같이 있는 모습을 볼 수 있다.
그런데 라우팅 알고리즘은 각 라우터들의 control plane 끼리 상호작용한다.
그래서 이러한 control plane을 따로 분리하여 중앙 서버에서 제어를 담당하는 구조가 제시되었다.
Logically centralized control plane
Logically centralized control plane의 경우 위 그림에서 보다싶이 control plane만 분리하여 중앙에서 한번에 관리한다.
제어와 전송을 분리하여 전송과 같은 하드웨어적인 부분은 라우터에서 관리하고 제어와 같은 소프트웨어적인 부분은 따로 모아서 한번에 관리하는 것이다.
각각의 라우터에는 control agent가 존재하여 중앙의 remote controller와 정보를 주고 받는다.
기존 per-router control plane에 비해서 라우터에는 성능이 좋은 프로세서가 필요 없고 이로 인해 네트워크 장비의 비용을 절감할 수 있다.
이 방식은 다음과 같은 장점이 존재한다.
- 네트워크의 관리가 쉬워진다.
- 중앙에서 트래픽 제어를 할 수 있다. (트래픽의 유연성)
Mainframe to PC evolution
초기의 Mainframe의 경우 폐쇄적이고 독점적이었다.
Application, OS, Hardware들을 만들어서 독점하는 형식이었다.
이러한 Mainframe 구조는 이를 만든 곳에 의존적이게 되고 산업의 발전을 저하하게 된다.
그래서 Application, OS, Hardware로 나누고 interface를 공개하는 방식으로 바뀌게 되었다.
예를 들어 OS를 개발하는 곳은 특정 Hardware의 interface를 보고 Hardware에서 잘 동작하게끔 OS를 개발할 수 있다.
Mainframe 방식은 Hardware를 만드는 곳이 OS, Application도 만들었지만 지금 PC 방식은 공개된 interface를 기반으로 Hardware를 개발하는 곳은 Hardware만, OS를 개발하는 곳은 OS만, Application을 개발하는 곳은 Application만 집중할 수 있어서 서로 경쟁을 하기 때문에 발전이 빨라졌다.
SDN도 이러한 구조와 비슷하다.
network-control application들은 Application 역할, SDN controller는 OS 역할, 스위치는 Hardware 역할을 담당한다고 보면 된다.
SDN 방식은 각각의 라우터들이 flow table을 가지고 있다.
각각의 라우터들은 logically centralized routing controller에서 만든 flow table을 분배받는다.
flow table은 forwarding table과는 다르게 단순히 forwarding만 하는게 아니라 다른 역할도 수행한다.
라우팅, 접근 제어, 로드 밸런싱... 등등
OpenFlow protocol
SDN controller와 switch 사이 통신을 위한 프로토콜이다.
TCP를 사용하여 정보를 주고 받는다.
다음은 link 하나가 고장 났을 때 controller와 data plane (switch) 사이의 정보 교환의 예시이다.
- OpenFlow port를 사용하여 link failure를 알린다.
- SDN controller가 메시지를 받아서 link 정보를 갱신한다.
- Dijkstra's routing 알고리즘을 사용하는 application에게 전달한다.
- 해당 application이 network graph, link state 정보들을 controller에게 받아온다.
- 해당 application이 SDN 컨트롤러의 flow table computation component들과 정보를 교환한다.
- OpenFlow를 사용하여 새로운 테이블을 스위치들에게 나누어준다.
스위치는 단순히 값을 전달해주는 일만 하지는 않는다.
특정 패턴에 따라 취하는 행동을 다르게 할 수 있다.
예를 들어서 51.6.0.8 로 향하는 데이터그램은 6번 port로 forwarding 하고 싶다면 flow table entry는 다음과 같다.
혹은 방화벽 역할도 할 수 있다.
IP주소가 128.110.1.1인 곳에서 보낸 데이터 그램은 forwarding 하지 않고 버리고 싶다면 flow table entry는 다음과 같다.
이외에도 많은 역할을 수행할 수 있다.
'공부 > Network' 카테고리의 다른 글
[Network] MAC protocol (0) | 2023.06.24 |
---|---|
[Network] Link layer, error detection (parity, CRC) (0) | 2023.06.22 |
[Network] AS, OSPF, BGP (0) | 2023.06.12 |
[Network] Routing Algorithms (0) | 2023.06.10 |
[Network] IPv6와 ICMP (0) | 2023.06.08 |