SDN (Software defined network)
기존의 단순히 Forwarding table을 이용한 최단 경로 알고리즘 사용을 통한 경로 지정은
network의 트래픽 상태 등을 고려하지 않아 문제가 많다.
이를 해결하기 정보들을 Control plane에서 판단하여, Software로 정의된 방식에 따라
경로를 설정한다.

SDN
Control의 "brain", SDN Controller에서 제공하는 API를 사용하여 기능을 향상시킨다.
Policy에 따라, SW로 제어하여 각종 행동들을 설정
Network 상태 정보를 유지
Network-control app과 northbound API를 통해 상호작용
Network switch와 southbound API를 통해 상호작용
SDN Controller에 의해 Switch(Router와 동일) flow table 계산됨
SDN Controller와 통신을 위한 Protocol 사용
SDN Controller 구성 요소

Interface layer : Network control app을 위한 API
Network-wide state management layer : 네트워크, 링크, 스위치, 서비스의 상태 정보
Communication layer : Switch와의 통신
OpenFlow Protocol
Features : Controller가 Switch에 요청, Switch는 응답
Configure : Controller가 Switch의 구성 parameter를 설정
Modify-state : Flow entries를 OpenFlow table에서 Add, Delete, Modify
Packet-out : Controller가 특정 Switch port에서 Packet-out을 시킬 수 있음
Packet-in : Controller에 Packet을 전송.
Flow-removed : Flow table entry가 switch에서 삭제됨
Port status : Port의 변경 사항을 Controller에 전달

1 ) S1이 OpenFlow port status message를 Controller에 전송
2 ) SDN controller가 OpenFlow message 수신, link-status 정보 업데이트
3 ) 다익스트라 알고리즘이 link-status 변경으로 불려옴
4 ) 다익스트라 알고리즘이 Network graph, Link-state info에 접근하여 새로운 경로 계산
5 ) link state routing app이 SDN controller의 flow-table 요소에 상호작용
6 ) Controller가 OpenFlow를 이용하여 새로운 table을 switch에 업데이트
ICMP (Internet Control Message Protocol)
ICMP message는 IP datagram에 포함되어 전송
Host / Router가 Network-level 통신을 위해 사용
- Error reporting
- Echo request / reply
ICMP Message
- Type / Code / Error 원인