본문 바로가기
IT/네트워크

[ 네트워크 ] SDN (Software Defined Network)

by 신인용 2020. 5. 24.
반응형

SDN (Software Defined Network)

 

 

SDN 요약정리

 

SDN (Software Defined Network)

 각각의 라우터들은 datagram을 어디로 보내야 하는지 flow table을 가지고 있다. 이 flow table은 logically centralized routing controller에 의해 컨트롤 된다. 그래서 data plane과 control plane으로 나뉘게 된다. 이 때 control plane을 software defined으로 해보자는 것 SDN이다.

 이전에는 라우터라는 Hardware 디바이스에 종속되어 있었다. 이것을 일반화된 forwarding (packet-handling rules)을 하자는 것이다.

 

 

 정리하자면

SDN에서는 control plane을 프로그래밍하여 data plane에서 이루어지는 일들을 control하는 것이다.

 

 

OpenFlow

 OpenFlow는 SDN에서 controller와 라우터간에 이용하는 인터페이스 기술 중 하나이다. 패킷을 제어하는 기능과 전달하는 기능을 분리하고 프로그래밍을 통해 네트워크를 제어하는 기술이다.

 

 header의 flow field에 의해 OpenFlow가 정의된다.

- 패킷의 header fields의 값들을 매치해서 어떠한 Pattern을 만들어준다.

- 매치가 된 패킷에 대해서 특정한 Action(forwarding, drop, modify 등)을 만들어 준다.

 (여기서 말하는 drop은 보안관점에서 특정주소에서 오는 패킷은 공격 또는 비정상으로 보고 drop하는 것임)

- 우선순위를 정할 수 있다.

- byte나 packet number에 대해서 counting할 수 있다.

 

 

 즉, 어떤 정보들을 가지고 일반화된 forwarding (rules)을 만들 수 있다. 이 때 rule은 drop할 수도 있고, 특정 des IP주소로 가는 것은 2번 port이다. 이런 것을 말하는 것이다.

그래서 drop하는 IP는 정해져있고, 2번 port로 보내는 IP도 정해져있고, 특정 src IP는 controller로 보내라 하는 것들이 정해져 있는 것이다.

 

 이러한 flow에 대한 table을 만들 수 있다. 이것을 software defined로 구현해보자 한 것이 OpenFlow이다.

 

 

 

 OpenFlow로 가는 것은 Flow Table Entries를 자유자재로 생성하고 갱신할 수 있다.

 Rule, Action, Stats(통계)를 포함하는 Rule이 있다. 이 Rule로 Action을 할 수 있다.

 Link layer의 heade, Network layer의 header, Transport layer의 header 각각 계층의 header 정보를 수집해서 통계를 만들고, Action을 만들 수 있다.

 

 

 

 

 

- Destination-based forwarding : Link layerheader는 무시하고, des IP주소가 51.6.0.8이면 port 6번으로 내보내겠다는 Action을 한다.

- Firewall : TCPdes port2번이면 drop한다. , scr IP128.119.1.1이면 drop한다.

- Destination-based layer 2 (switch) forwarding : MACsrc IP가 저것이면 port 3번으로 보낸다.

 

 

 

 

OpenFlow abstraction

 matchaction의 조합에 대해서 처리를 할 수 있다.

1. Router : longest destination IP prefix를 가지고 특정 output portforward하는 것.

 - match : longest destination IP prefix

 - action : forward out a link

2. Switch : MAC 주소를 가지고 어떤 특정 port로 보내는 것.

 - match : destination MAC address

 - action : forward or flood

3. Firewall : 특정 IP주소나 port number를 가지고 drop 혹은 block을 하는 것.

 - match : IP addresses and TCP/UDP port numers

 - action : permit or deny

4. NAT : IP주소에 대해서 rewrite 하는 것.

 - match : IP address and port

 - action : rewrite address and port

 

 이런 모든 기능들을 OPenFlow로 다 할 수 있다라고 본다.

 

 

 

 

OpenFlow 예시

OpenFlow 예시

1. src IP주소가 10.3, des IP주소가 10.2이면 3번으로 보낸다.

2. 1번에서 들어오는 것에 대해서 src IP주소가 10.3이고, des IP10.2이면 4번으로 보낸다.

3. 2번에서 들어오고, des IP주소가 10.2.0.3이면 3번으로 보낸다. 10.2.0.4이면 4번으로 보낸다.

 

 

 이런 matchAction에 대한 Rule들을 전부 라우터든 이더넷 스위치든 전부 설정할 수 있다. 지금까지 얘기한 것이 SDN이다. SDN이 되면서 data planecontrol plane이 분리가 되면서 훨씬 유연하게 데이터를 보낼 수 있게 되었다.

 

 

 

 

 

 

정리

 SDNcontrol plane과 data plane을 분리한 하나의 네트워크 구조이고,

 OpenFlow는 이 SDN 속에서 controller와 라우터간 인터페이스로, OpenFlow 프로토콜을 사용한다.

 

 OpenFlow를 요약하면, 중앙 controller가 경로 정보를 계산하여 라우터로 보내지며, 라우터의 flow table에 저장된다. 이후 라우터는 datagram을 받을 때마다 flow table과 비교하여 계산된 경로로 보내게 된다.

 

 

 

 

 

 

 

 

 

[참고]

Computer Networking A Top-Down Approach 7-th Edition / Kurose, Ross / Pearson

반응형

댓글