control plane
네트워크 계층의 기능은 2가지로 나눌 수 있습니다. 포워딩과 라우팅입니다.
포워딩
패킷을 적절한 라우터로 이동하는 것
라우팅
패킷 경로를 결정하는 것
각각의 라우터에서 포워딩 테이블들이 있고 이 포워딩테이블을 구성하기 위해서 각 라우터의 라우팅 알고리즘이 상호작용함으로써 포워딩 테이블을 구성합니다.
포워딩 테이블이 데이터 플레인의 영역이고 라우팅이 제어 플랜의 영역입니다.
SDN control plane
논리적으로 centralized된 control plane 원격의 컨트롤러와 서로 상호작용하면서 forwarding을 정의하는 것입니다.
각각의 라우터들이 있고 원격의 컨트롤러가 각 라우터에 있는 control agent와 서로 상호작용함으로써 포워딩 테이블을 정의하는 것이 SDN의 형태입니다.
라우팅 프로토콜
Routing protocol 목표
라우팅 프로토콜은 네트워크의 core가 결국 라우터들의 연결된 네트워크를 통해서 전송 HOST 와 수신 HOST 사이에서 경로를 결정하는 것입니다.
여기에서 중요한 점은 좋은 경로를 결정하는 것입니다. 출발지에서 목적지까지 일련의 라우터들을 통과해서 패킷을 전달하는 좋은 경로를 전달하는 것이 Routing protocol의 핵심적인 목표가 됩니다.
path란?
source host에서 dest host까지 패킷이 전달되는 라우터들의 sequence를 path라고 정의를 합니다.
good의 의미는 "cost" "fastest" "least congested"가 고려 대상이 될 수 있습니다.
라우팅 알고리즘을 위한 그래프 추상화
- 그래프 노드는 라우터
- 그래프의 간선은 물리적인 링크
- 링크 비용 : delay, $ cost, or congestion level
최소 비용 경로 정의
각각 링크의 비용이 정의되어야 합니다.
linkstate Routing Algorithm
Dijkstra's algorithm
네트워크 위상, 링크 비용들이 모든 노드에게 알려짐
- link state broadcast를 통해 달성됨
- 모든 노드는 같은 정보를 가짐
한 노드로부터 모든 다른 노드까지의 최소 비용 경로를 계산
- forwarding table 제공
반복적 : k번 반복 후, k개의 목적지 노드에 대해 최소 비용 경로가 알려짐
c(i,j)
노드 i에서 j로의 링크비용, i와 j가 직접 연결되지 않았다면 무한대의 비용을 가짐
D(v)
소스에서 목적지 v까지의 현재 최소 비용을 갖는 경로의 비용
p(v)
소스에서 v까지 경로에서 v의 이전 노드 (v의 이웃노드)
N
소스에서 최소 비용 경로가 명확히 알려진 노드들의 집합
Dijkstra's algorithm
초기화과정과 반복 과정으로 구분을 할 수 있습니다.
집합 N은 노드 {A}로 초기화가 됩니다.
그 다음 3~6번 이 반복수행이 됩니다. v가 A의 이웃노드이면 D(v) = c(A,v)로 되고
Loop로 계속해서 반복수행을 진행합니다. 집합 N에서 D(w)값이 최소인 w를 선택하는데 아직까지 집합 N에 속하지 않은 w를 선택합니다.
지금까지 계산된 D(w)값 중에서 minumum을 가지는 W를 선택합니다.
w를 집합 N에 소화시키고 D(v) 값을 업데이트시킵니다. 새로운 v가 추가가 되었기 때문에 w를 통해서 갈 수 있는 경로가 발생했기에 D(v) 값을 업데이트합니다.
진동 문제
링크 비용이 트래픽 양에 의존하는 경우, 경로 진동(route oscillation)이 가능합니다.
링크 비용은 트래픽 양에 의존하며, 방향성이 있을 때 현재 초기상태에서 발생하는 트래픽을
이렇게 발생한다고 가정을 해봅시다.
이렇게 초기비용이 주어졌을 때 각각의 노드는 Dijkstra's algorithm을 했을 때 A의 경로는 d에서 a로의 경로, c에서 a로의 경로가 설정이 될 것입니다.
B의 입장에서는 경로는 왼쪽으로 갈 때 1이 되므로 1을 선택합니다. c역시 A로의 경로를 계산한다고 봤을 때 왼쪽으로 갈 때 1이 발생하므로 왼쪽을 선택합니다.
전체적으로 초기 상태에서 각각의 노드들이 Dijkstra's algorithm을 할 때는 트패릭의 흐름은 전체적으로 왼쪽으로 흐르게 결정이 됩니다.
어느 시점이 지나서 다시 각 노드들이 Dijkstra's 알고리즘을 통해 정하면 새로운 경로가 만들어집니다. 새로운 경로가 결국 이전 트래픽의 역방향의 트래픽이 만들어지고 다시 전체적인 경로가 계속해서 새로운 경로를 하면 다른 방향이 되면서 경로가 계속 반대방향으로 바뀌는 현상의 문제를 Oscillation 입니다.
이러한 진동의 문제를 해결하기 위해선 각 노드가 Dijkstra's 의 시간을 동일한 시점에 실행하게 되면 이와같이 진동 문제가 발생하기 때문에 이런 동기성의 문제를 해결해주면 진동 문제는 어느정도 해결이 됩니다.
각각의 라우터들이 Dijkstra를 다르게 주면서 진동을 해결할 수 있습니다.
'IT 프로그래밍 > 컴퓨터네트워크' 카테고리의 다른 글
[컴퓨터네트워크] intra-AS routing (1) | 2024.12.05 |
---|---|
[컴퓨터네트워크] distance vector (1) | 2024.12.05 |
[컴퓨터네트워크] network address translation , IPV6 (0) | 2024.12.05 |
[컴퓨터네트워크] 네트워크 계층 (1) | 2024.12.04 |
[컴퓨터네트워크] Congestion control (1) | 2024.12.04 |