라우팅 알고리즘
라우팅 알고리즘이란 송신 측에서부터 수신 측 라우터의 네트워크를 통과하는 최적의 경로를 결정하는 알고리즘이다. 그러나 실제로는 여러 가지 이유로 최적의 경로를 결정하지 못할 수 있다.
예를 들어 'A기관은 B기관이 소유한 네트워크가 보낸 패킷을 전달해서는 안된다'와 같은 규칙 등이 존재할 수 있다. 그럼에도 불구하고 최대한 최적의 경로를 결정하는 라우팅 알고리즘은 네트워크 분야에서 매우 중요하다.
라우팅 알고리즘 분류
라우팅 알고리즘은 중앙 집중형 혹은 분산형인지로 구분할 수 있다.
또한 라우팅 알고리즘은 정적 알고리즘과 동적 알고리즘으로 구분할 수 있다.
LS 알고리즘은 중앙 집중형 알고리즘에 속한다. 즉 모든 라우터(노드)가 모든 링크(간선)의 비용을 알고 있기 때문에 다익스트라 알고리즘을 이용해 최적의 경로를 계산할 수 있다. 한 노드(source node)에서 다른 모든 노드까지의 최적경로를 계산해 routing table에 저장해 놓는다.
DV 알고리즘은 분산형 알고리즘에 속한다. 즉 각 노드는 자신에게 연결된 이웃의 링크의 비용만 알고 있기 때문에 벨만-포드 알고리즘을 이용해 최적의 경로를 계산할 수 있다. DV 알고리즘은 반복적이고 비 동적이며 분산적이다. 이웃끼리 반복해서 정보를 교환해 최적의 경로를 갱신하는 식이다.
네트워크 전체 인식
다익스트라 알고리즘
링크 상태 정보만을 교환
이벤트 기반의 갱신 신호 교환
이웃한 라우터의 정보 인식
벨만-포드 알고리즘
이웃한 라우터와 라우팅 테이블 교환
주기적으로 갱신 데이터를 교환
출처: https://code-lab1.tistory.com/37?category=1213004 [코드 연구소:티스토리]