본문 바로가기
컴퓨터 네트워크

네트워크 17강 - 라우팅 알고리즘

by N.Damgom 2020. 8. 16.

지금까지 라우터의 Data Plane에 대해서 알아봤다. 이번 포스팅부터는 라우터의 두뇌 부분에 해당하는 Control Plane에 대해서 라우팅 알고리즘과 라우팅 프로토콜을 중심으로 알아보자.

 


라우팅 알고리즘

  • 네트워크 상에는 여러 네트워크 장비들이 있다. 목적지까지 무작위 경로로 갈 순 없으니 경로를 설정해야 하는데 어떤 알고리즘을 사용할까?
  • 라우팅 알고리즘의 분류 : Information
    • Global
      • 모든 라우터가 완전한 링크 정보를 알고 있다
      • Global한 라우팅 알고리즘을 Link State 알고리즘이라고 한다.
      • 다익스트라 알고리즘이 해당된다.
    • Decentralized
      • 한 라우터는 이웃한 라우더들로 가는 Link 정보와 이웃한 라우터와 목적지까지의 거리를 알고 있다.
      • Distance Vector 알고리즘이라고 한다.
      • 벨만-포드 알고리즘이 해당된다.
  • 라우팅 알고리즘을 Cost에 따라 Static과 Dynamic으로도 구분할 수 있다.

다익스트라 알고리즘

  • 여기서 다익스트라 알고지즘에 대해서 자세히 설명하지는 않겠다.
  • 블로그나 GeeksforGeeks같은 사이트에서 실제 코드와 동영상을 참고하길 바란다.
  • 나도 블로그에 적지만 말고 다시 한번 손으로 풀어봐야겠다.
  • 다익스트라 알고리즘의 핵심 포인트
    • 다익스트라 알고리즘이 진행되면서 특정 노드에 이르는 최단경로를 발견하게 된다.
    • 특정 노드에서 시작할 때 발견한 다음 노드들 중 최단 경로로 갈 수 있는 노드가 최단경로가 확정된 노드가 된다.
    • 왜냐하면 다른 길로 돌아가더라도 그 거리보다 짧을 순 없기 때문이다.
    • 최단경로가 확정된 노드로 들어가서 다시 다른 노드에 대해 최단경로를 확정한다.
    • 즉 목적지까지의 최단 경로는 최단 경로들의 합이다
    • 헷갈리지 않게 스텝/노드들로 표를 그려가며 풀어보자.
  • 시간복잡도는 일반적으로 O(n^2)이며 어떤 똑똑한 사람이 O(nlogn) 알고리즘을 발견했다.

벨만-포드 알고리즘

  • 네트워크 전체 정보가 아닌 이웃한 라우터의 Link State와 그 라우터들의 목적지까지의 거리를 이용한다.
  • x에서 y로 가는 최소 비용은 이웃한 라우터 v들에 대해  min{C(x,v) + Dv(y)}로 정의할 수 있다. 이를 벨만포드 방정식이라고 한다.
  • Recursion 방식이다.

Distance Vector란?

  • Distance Vectorm 는 모든 목적지까지로 가는데 드는 비용 벡터이다.
    • 각 라우터(노드)들은 자신의 Distance Vector와 이웃 노드들 까지의 Cost를 알고 있어야 한다.
    • 전체 네트워크 상에서 모든 노드들은 이웃들끼리 Distance Vector를 교환한다.
    • 그렇게 정보가 퍼져나가면서 전체 네트워크의 Distance Vector가 업데이트된다.
    • 한 노드가 새로운 Distance Vector를 받았을 때 벨만-포드 방정식을 사용해서 자신의 Distance Vector를 업데이트한다.
  • Distance Vector 알고리즘의 사이클
    • 1. 이웃으로 가는 링크의 코스트가 변하거나 이웃에게서 DV 업데이트를 받는다.
    • 2. 자신의 DV를 다시 벨만포드 알고리즘을 적용해서 업데이트하고 변화가 있으면 이웃에게 알린다.
    • 3. 대기한다.
  • Count to Infinity 문제가 있다.
    • 각 노드 x, y, z가 루프를 이룬다고 생각해보자.
    • y -> x로 가는 코스트가 크게 상승하면 y는 자신의 DV를 업데이트 할 때 z의 DV를 참고한다.
    • 하지만 z는 사실 코스트가 크게 상승하기전 y의 DV를 이용한 DV를 가지고 있다.
    • DV를 의존하는 노드가 DV를 물어볼 때 INF로 대답해야 한다. ( Poisoned Reverse)

Link State VS Distance Vector

  • Message Complexity
    • Link State 알고리즘은 네트워크 크기가 커질 수록 한 노드가 처리해야하는 양이 매우 많아진다.
    • Distance Vector 알고리즘은 전체 네트워크 크기랑 상관없이 자신의 DV만 계산하면 된다.
  • Speed of Convergence
    • Link State 알고리즘은 Link State가 브로드캐스팅 된 후에는 다익스트라 알고리즘을 계산하는 시간만 필요하다.
    • Distance Vector 알고리즘은 Louting Loop 문제와 규모가 커지면 Convergence가 잘 안된다.
  • Robustness
    • Link State 알고리즘은 영향이 적다.
    • Distance Vector 알고리즘은 DV에 모든 목적지 정보가 들어가있기 때문에 파장이 크다.

Dynamic Cost의 문제점

  • 한 경로의 Cost가 낮으면 그 쪽으로 트래픽이 쏠린다.
  • 그 경로의 Cost가 높아지면 다른 쪽을 트래픽이 쏠린다.
  • 위와 같은 일이 계속 일어나면 Oscillation이 발생한다.
  • 짧은 시간 내에 경로가 계속 바뀌면 In-Order 데이터 전송이 어려워지고 서로 다른 Topology로 라우팅 루프가 생기기 쉽다.

 

이번 포스팅으로 네트워크 알고리즘 설명을 마치겠다. 네트워크 알고리즘은 손으로 그려가면서 공부해야 이해가 빠른데 블로그 포스팅으로 네트워크 알고리즘을 설명하는 것은 어느정도 한계가 있다. 더 자세히 알고 싶으면 강의를 참고하길 바란다.

 

더보기

본 게시물은 kocw 이화여자대학교 이미정 교수님의 컴퓨터 네트워크 강의를 듣고 정리한 글임을 밝힙니다.

내용상 틀린 부분이 있을 수도 있으며 이에 대한 책임을 지지 않습니다.

틀린 부분이나 오타 지적은 댓글로 남겨주세요.

www.kocw.net/home/cview.do?cid=e44bdd9b3a3f9bb5