KOCW 컴퓨터네트워크-이석복 강의를 수강하며, 해당 내용을 바탕으로 배운 점들을 정리하였다.
라우팅 알고리즘은 크게 2가지 접근방식이 있다.
Dijkstra 알고리즘을 기반으로 한다.
각 라우터가 네트워크에 대한 상태를 모두 알고 있다고 가정한 상황이다.(네트워크에 존재하는 라우터와 각 라우터간 연결 상태 및 비용)
특정 라우터로부터 다른 라우터로 이동하는 최단 경로를 모두 계산하고, 이를 바탕으로 fowarding table을 구성한다.
이런식으로 네트워크상의 모든 라우터로 가는데 드는 최소 비용과 그렇게 하기 위해 거쳐야하는 이전 노드(라우터)를 저장한다.
이후 백트레킹을 통해 현재 노드와 연결된 라우터들 중 어떤 라우터로 이동해야 특정 지점까지 최단거리로 이동할 수 있는지를 확인하고 fowarding table에 저장한다.
테이블이 유지되고 있는 상태에서 특정 간선의 cost가 변경되면, 해당 간선에 연결된 노드들은 테이블의 업데이트가 필요한지 확인하기 위해 최단거리 값을 다시 계산한다.
그림과 같이 cost값이 4였던 경로가 1로 변경되면 노드 x, y는 테이블값을 갱신한다.
y->x/ x->y 는 cost값이 4에서 1로
z->x 는 cost값이 5에서 2로 변경된다.
이렇게 cost가 감소하는 긍정적인 방향으로의 변화는 잘 반환한다.
만약 cost가 증가하는 방향으로의 변화가 일어나면 정상적으로 작동하는가.
바뀌기 전 y노드의 테이블을 생각해보면
y->x = 4
y->z = 1 이고
바뀌기 전 z노드의 테이블은
z->x = 5의 값을 가지고 있다.
여기서 y->x간선이 60으로 변경됐을 때, 기존 방식대로 테이블 값을 계산하면 y->x값은 y->x = min(y인접노드까지 거리 + y인접노드에서 x까지 비용)이므로 1 + 5 = 6으로 업데이트 된다.
이 변화에 따라 다시 연결 노드들의 테이블 업데이트가 발생하고 결국 y->x값이 실제 최소비용인 51에 도달할 때까지 순차적으로 계산이 진행된다.
해결방법은 다음과 같다.
z에서 x까지 가는 최단루트가 만약 y를 거쳐간다면
y에게는 z에서 x까지 가는 최단 비용값을 무한대로 전달한다.
z->x가 y를 거친다면, y입장에서는 z->x값은 무의미하다.(항상 거치지 않는 것이 더 유리하기 때문에)
또 이렇게 했을 경우 간선 값이 cost를 증가시키는 방향으로 변화하더라도 빠르게 안정화된다.
두 라우팅 알고리즘의 사용여부는 Network 관리자가 선택한다.
출처: https://be-developer.tistory.com/57
Internet service를 제공하기 위해서는 비용이 발생한다.
AS내부에서는 최단거리를 계산해서 데이터 전송 경로를 계산했지만, AS외부 네트워크에서 경로를 결정하는 것은 얘기가 달라진다.
서비스를 제공하는데 비용이 들기 때문에 이득을 취할 수 있는 방향으로 경로를 설정한다.
그림에서 검정색 점선으로 된 경로는 존재하지 않는다.
가운데 있는 ISP가 어떠한 이득도 취할 수 없기 때문이다.
이러한 AS간의 통신에 사용되는 프로토콜이 BGP이다.
Border Gateway Protocol
다음과 같이 AS Number를 확인하고 경로에 저장한다.
이 AS Path를 보고 어떤 경로로 데이터를 전송할 것인지 결정하는 것이다.