Network Layer의 기능
1) Forwarding
2) Routing
두 기능 중 Control Plane = Routing을 담당
Data Plane의 Router 정보들을 토대로
Control Plane에서 Forwarding Table을 통해 Source-to-Dest의 최적 경로를 계산한다.
Control plane 처리 방식
1) Per-router control
2) lolgically centralized control (Software defined networking)

Forwarding table의 정보를 토대로 짜여진 최단 경로 알고리즘을 이용하여 경로를 계산

Software로 구현된 경로 설정에 따라 경로를 계산
1) Global
- Router가 전체 네트워크의 구조와 연결 비용 등의 정보인 Topology를 알고 있음
- 자신이 속해 있는 네트워크 안의 Router는 서로가 서로의 정보를 모두 알고 있다
- "Link-state algorithm" 사용
2) Decentralized
- Router가 자신과 물리적으로 연결된, 이웃 Router의 정보,
목적지까지의 비용만 알고 있음- "Distance vector algorithm" 사용
각 Router는 네트워크 전체의 Topology와 Link-state 정보를 유지한다.
각 Router는 네트워크 전체의 Link-state 정보를 이용하여 목적지까지 최적 경로를 계산.
최적 경로를 기반으로 각 Router의 Routing table을 구성한다.

한 node X에서 목적지인 node Y 까지의 값은
-> X에서 이웃한 node V까지 비용 + V에서 Y까지의 비용
으로 바꾸어 표현할 수 있다.
X->Y 까지의 경로는 다양한 경로 방식 있으며,
이웃한 node들을 거쳐 목적지까지 가는 수많은 경로 중에서 최단 경로를 찾는 방식이
Distance vector 방식이다.
각 Router는 자신의 이웃과의 경로 비용과 전체 비용 만을 알고 있기 때문에,
특정 Router의 경로 비용이 바뀌었을 때, 연쇄적으로 각 Router들의 경로 비용이 변화하게
되고, 이를 토대로 전체 경로 비용이 변화하게 된다.
Link-state 방식에서는 모든 Router가 전체 정보를 알기 때문에, 특정 Router의 변화를
전체 Router가 LSA를 통해 알게 되고, 이는 동기적이다.
반면 Distance vector에서는 이 변화가 비동기적이다.
Good news travels fast

1 ) Y->X의 비용이 4에서 1로 감소
2 ) Z에서는 Y를 통해 X로 가는 경로의 비용이 줄어든 것을 확인
3 ) Z->X의 비용이 1+1 = 2 로 갱신
이러한 상황에서는 문제가 없다. 단, 다음의 내용을 보자.
Bad news travels slow
1 ) Y->X의 경로 비용이 60으로 증가
2 ) Y가 Z를 확인하니 Z->X의 값이 1+4 = 5로 되어있음
3 ) Y->X의 비용을 Z를 통한 값인 1+5 = 6으로 갱신
4 ) Z 입장에서 Y를 통한 X까지의 경로 비용이 6으로 증가, Z->X 비용 1+6 = 7로 갱신
5 ) Y는 Z의 비용이 갱신되니, 자신 또한 1 + 7 = 8로 갱신
....
이와 같이 계속 반복적으로 경로 비용이 갱신되어
비용이 다른 경로의 비용보다 높아질 때 까지 반복된다.
