오래 못 할 짓 하지 않기

[ 네트워크 ] 22. Network layer : SDN 본문

3학년 2학기/네트워크 (Network)

[ 네트워크 ] 22. Network layer : SDN

쫑알bot 2024. 11. 28. 22:58
728x90

Software Defined Networking 
SDN

[ Per Router Control Plane ]

: Router 각자가 Forwarding 하기 위해 Table을 만들고 관리한다.

 

[ Software - Defined Networking Control Plane ]

 

Router가 아니라 하나의 Server에서 모든 Router들에 관련된 Table을 가지고 관리한다.

Packet 요청이 올 때마다 해당 정보에 맞는 Router로 보낸다.

이런 SDN은 Logically Centralized 한 특성을 가진다.

 

 

 

 그렇다면 왜 Logically Centralized Control Plane을 쓸까?

 

1. 관리가 편리하다.

   - router 구성을 오해하는 경우를 피할 수 있다.

   - Traffic flow에 큰 유동성을 줄 수 있다.

 

2. Table-based Forwarding

   - Table을 각 라우터가 계산하지 않아도 되고, Server에서만 계산하고 뿌려주면 되기에 그나마 더 가볍다.

 

 

📌 기존(전통) Routing 방식의 한계

 

1. 경로 지정 문제

Q : Network operator가 [ u-z로 가는 경로 ] 를 uvwz 말고, uxyz로 가려고 하면?

 

A : Link weight를 재설정 해서 올바르게 계산되어 Cost Effective한 경로로 이동하게 한다.

     * 하지만 제어가 쉽지는 않다.

 


2. 부하 분산

Q : u-z로 가는 길을 uvwz 랑 uxyz로 나누려고 한다면? = Load balancing을 하려고 한다면?

A : Traditional에서는 못 함

 


3. 트래픽 차별화

u에서 z로 가는 빨간색,파란색 두 개의 경로가 있고. 경우에 따라 이걸 다르게 써서 보내고 싶다.

예를 들어 사진에 대한 패킷은 빨간색, Text는 파란색 Traffic으로

 

하지만 Routing 알고리즘으로 한다면, Destination만 보고 경로를 정하기 때문에 불가능하다.

 

 

>> SDN은 합니다.

 

 

📌 Data Plane Switches

 

- 스위치를 통해 빠르고 간단하게 이루어지는 Forwarding을 Hardware로 구현해두었다.

 

> Switch Control 과 관련된 Table-based API를 사용한다.  → OpenFlow

  ex) 컨트롤하는 영역그렇지 않은 영역을 나누어둠

 

> Controller와의 통신이 이루어지는 프로토콜

 

 

📌 SDN Controller ( network OS )

- Network 상태를 유지하고 있는 역할을 한다.

- 위 아래 Layer들과 소통한다.

- Performance + Scalability + Fault-tolerance 를 위해 분산된 형태로 작동한다.

 

 

 

📌 Network - control  application

- 이 네트워크를 사용하는 계층으로서 , Routing + Access Control + Load Balance를 담당한다.

+ 어디에도 종속되지 않아서 Unbundled하다는 특성이 있다.

* OpenFlow protocol

TCP를 사용한다.

 

 

[ SDN 작동 방식 ]

다음 이미지를 보면, s1과 s2에서 Link 에러가 발생한 걸 알 수 있다.

 

1. Link Failure 를 감지하여, OpenFlow port status Message를 이용하여 

  Controller에게 현재 상태를 알린다.

 

2. SDN Contoller가 OpenFlow 메시지를 받고 Link 상태에 대한 정보를 Update한다.

 

3,4. Dijkstra 알고리즘을 돌려서, 4. 경로 재탐색

  * Link status가 바뀔 때마다 돌린다 .

 

5. Routing App이 SDN Controller에 있는 Flow table과 소통하여

   새로운 Flow table을 계산한다.

 

6. 업데이트가 필요한 곳에게 OpenFlow 프로토콜을 이용하여 Update한다.

 


Internet Control Message Protocol
ICMP

: Host ↔ Router 사이에서 정보를 주고받을 때 사용된다.

 [ 정보 ] 

  - Error 감지

  - Request / Reply 에 대한 Echo (ex, ping)  

 

종종 IP로 간주될 때가 있지만

엄밀히 말하면, ICMP는 IP datagram에 담겨 이동하기에 

ICMP = IP Layer 위에 있다.

 

 

Traceroute and ICMP

 

 

본인(Src) 기준 Dest를 3개의 Hop 떨어진 Router로 잡고, Segment를 보낸다.

하지만 우린 3개인 걸 알 수 없는 상태이다.

 

- src에서 dest까지 한 개의 Hop을 건너고, 도착했다는 메시지가 오지 않으면

  > TTL을 +1시켜서 다시 보낸다.

 

TTL 1로도 도착 안 해? = Dest message가 안 왔을 경우
> TTL = 2

 

TTL 2로도 도착 안 해 ?

> TTL = 3

 

이렇게 계속 올려서 나중에 Dest message가 오면 그 TTL로 Count한다.

 

📌원리  

1. 출발지가 TTL 값을 1부터 시작하여 증가시키며 UDP 패킷을 전송한다.

2. n번째 라우터에서 TTL이 0이되면 ICMP 메시지 반환 ( TTL은 한 hop을 지날 때마다 1씩 줄어든다.)

3. 라우터는 자신의 이름과 IP주소도 포함하여 전달

 

 

📌종료 조건 

- UDP 패킷이 목적지에 도달

  → 목적지에서 port unreachable 메시지를 응답

  → 출발지에서 전송 중단.

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

(출처)

한동대학교 고윤민교수님 - 컴퓨터 네트워크