[컴퓨터네트워크] 04. 유니캐스트 라우팅(1) - Unicast Routing

2024. 4. 10. 23:25·Computer Science/Network

유니캐스트 라우팅(Unicast Routing)(1)


Introduciton Routing

  • 수없이 많은 호스트와 엄청 많은 라우터가 있는 인터넷에서의 라우팅은 계층적 라우팅으로만 가능
  • 다양한 라우팅 알고리즘과 여러 단계의 라우팅 필요
  • 인터넷의 라우팅 개념과 알고리즘을 이해하고, 어떻게 인터넷에 적용하는지를 고찰

일반적 개념

  • 유니캐스트 라우팅에서, 출발지에서 도착지까지 포워딩 테이블을 참조하여 홉 단위로 라우팅 됨
  • 출발지 호스트는 자신이 속한 네트워크의 디폴트 라우터에게 패킷을 전달하면 되므로 포워딩 테이블이 불필요
    • 호스트가, 여러 네트워크에 동시에 연결된 경우에는 필요
  • 목적지 호스트도 자신이 속한 라우터로부터 패킷을 수신하므로 포워딩 테이블 불필요
    • 여러 네트워크에 동시에 연결된 경우에는, 응답 데이터를 보낼 때 필요
  • 인터넷에 연결된 라우터에서 포워딩 테이블이 필요함

GPT

  • 유니캐스트 라우팅이란 단일 송신자(sender)로부터 단일 수신자(receiver)로 데이터 패킷을 전달하는 방법입니다.
  • 인터넷과 같은 대부분의 네트워크는 유니캐스트 라우팅을 기본으로 사용하며, 이것은 일반적으로 우리가 웹사이트에 접속하거나 이메일을 보낼 때 사용하는 라우팅 방식이다
  • 각 패킷의 헤더에 있는 목적지 주소가 해당 패킷의 최종 목적지를 나타냅니다
  • 대표적인 유니캐스트 라우팅 프로토콜
    • Static Routing: 수동으로 정의된 라우팅 경로를 사용하며, 네트워크 관리자가 라우터에 직접 라우팅 정보를 입력합니다.
    • Dynamic Routing: 라우터가 자동으로 네트워크의 상태를 감지하고 최적의 경로를 결정합니다. 라우팅 프로토콜은 네트워크 변화에 맞춰 동적으로 라우팅 테이블을 갱신합니다.
    • Distance Vector Routing Protocol (예: RIP): 각 라우터가 자신의 라우팅 테이블을 주기적으로 인접 라우터와 공유하여, 네트워크의 모든 경로에 대한 정보를 축적합니다.
    • Link State Routing Protocol (예: OSPF): 각 라우터가 네트워크의 상태를 정확히 파악하여 자신의 라우팅 테이블을 구축하고, 전체 네트워크의 맵을 유지합니다.
    • Path Vector Protocol (예: BGP): 인터넷에서 AS(자율 시스템) 간 라우팅에 사용되며, 경로 정보와 함께 목적지에 대한 경로를 전파합니다.

최소비용(Least-Cost) 라우팅

  • 인터넷을 weighted graph로 표시하면, 출발 라우터로부터 도착 라우터로의 가장 좋은 경로는, 둘 사이의 최소 비용 경로
  • 즉, 출발 라우터는 목적지로 향하는 여러 가능 경로 중에서 총 비용이 최소가 되는 경로를 선택

라우팅 알고리즘

  • 과거 여러 라우팅 알고리즘이 고안됨
  • 라우팅 알고리즘들의 차이점
    • 최소비용의 해석
    • 최소 비용 트리를 만드는 방법
  • 이 섹션에서는 공통 알고리즘을 논의하고, 인터넷의 라우팅 프로토콜이 이들 중의 한 알고리즘을 어떻게 구현했는지 고찰

거리-벡터(Distance-Vector) 라우팅

  • 거리-벡터 (DV)
    • 방향과 거리 값
  • 최적의 경로 탐색
    • 각 노드는 자신의 이웃 정보를 통해 최소 비용 트리 생성 (단순, 불완전한 정보)
      • 루트(라우터)를 기준으로 트리 생성
    • 이 정보를 이웃 노드들과 교환하여 업데이트
  • 거리-벡터 라우팅에서, 각 라우터는 계속 이웃 노드들에게 자신이 알고 있는 (미완) 정보를 끊임없이 교환

벨만-포드(Bellman-Ford) 공식

  • 소스와 목적지 사이의 최소비용경로 찾는 식
  • 소스 x, 목적지 y 사이의 최소비용
    • 중간 노드 a, b, c, ...
      • x->a->y, x->b->y, x->c->y .... 중 최소
  • 업데이트
    • 새로운 경로의 중간 노드 z
      • x->z->y

두 노드의 불안정성

  • Before failure
    • A 라우터 : A->X | 비용 : 1
    • B 라우터 : B->X | A를 거침 | 비용 : 2
  • After link failure
    • A 라우터 : A->X | 비용 : 16(보통 16은 도달할 수 없음을 의미함)
    • B 라우터 : B->X | A를 거침 | 비용 : 2
    • 아직 라우터 B가 link failure를 모르는 상태
  • After A is updated by B
    • A 라우터 : A->X | 비용 : 3
      • B 라우팅 테이블을 보고 B->X가 2니까, A->X : 3이라고 착각
  • After B is updated by A
    • B 라우터 : A->X | 비용 ㅣ 4
      • A 라우팅 테이블을 보고 A->X가 3니까, A->X : 4이라고 착각
  • Finally
    • 비용이 무한대가 됨
    • 비용이 16(무한대)가 될 때 까지 불완전한 긴 시간이 존재

링크-상태(Link-State) 라우팅

  • Link-state
    • 링크 (에지, 라우터 간의 연결) 특성
  • 저비용의 링크 선호
    • 무한대의 링크 비용 : 없거나 고장
  • 최소비용트리를 만들려면 전체 네트워크의 지도가 필요
    • 모든 라우터의 링크 비용을 알아야 함
      • cf) 거리 벡터 : 주변 노드 정보
  • Link-state database (LSDB)
    • 모든 링크 상태 집합

다익스트라 알고리즘

  • LSDB로 부터 최소비용트리 생성
  • 3가지 단계
    • 루트 노드 선정(라우터 자신). 루트 노드만 있는 트리로 시작
    • 아직 트리에 없고 연결된 노드를 선택하여 트리에 추가하고, 트리 내의 모든 노드까지의 비용을 업데이트
      • D[x] : 목적지 x 까지의 비용, W : 추가노드
      • D[x] = min {D[x], D[w] + c[w][x](전달받은 linkstate를 계산한 비용)}
    • 모든 노드가 포함될 때 까지 위 단계를 수행
  • 최종적으로, 루트노드에서 모든 노드로의 최소비용트리가 생성됨

경로-벡터(Path-Vector) 라우팅

  • 최소비용이 아닌 다른 정책(policy)를 적용하는 라우팅
    • ex) 특정 노드 제외 경로
  • Best Spanning Tree 선정(policy 적용)
  • ISP간의 패킷 경로를 위해 고안
  • 거리 벡터 방식의 Bellman-fod 알고리즘과 비슷하지만, 최소비용이 아닌 정책을 반영
  • 라우팅 테이블 내용은 경로벡터 [x, a, b, .... c, d, y]
    • Tx : x, Rx : y
    • 이웃 노드와 교환

 

 

 

'Computer Science > Network' 카테고리의 다른 글

[컴퓨터네트워크] 05. 통신절차  (0) 2024.04.10
[컴퓨터네트워크] 04. 유니캐스트 라우팅(2) - 유니캐스트 라우팅 프로토콜  (0) 2024.04.10
[컴퓨터네트워크] 03. Network Layer Protocols(3) - Mobile IP  (0) 2024.04.10
[컴퓨터네트워크] 03. Network Layer Protocols(2) - ICMPv4  (0) 2024.04.10
[컴퓨터네트워크] 03. Network Layer Protocols(1) - 네트워크 계층 프로토콜  (0) 2024.04.10
'Computer Science/Network' 카테고리의 다른 글
  • [컴퓨터네트워크] 05. 통신절차
  • [컴퓨터네트워크] 04. 유니캐스트 라우팅(2) - 유니캐스트 라우팅 프로토콜
  • [컴퓨터네트워크] 03. Network Layer Protocols(3) - Mobile IP
  • [컴퓨터네트워크] 03. Network Layer Protocols(2) - ICMPv4
lumana
lumana
배움을 나누는 공간 https://github.com/bebeis
  • lumana
    Brute force Study
    lumana
  • 전체
    오늘
    어제
    • 분류 전체보기 (456)
      • Software Development (27)
        • Performance (0)
        • TroubleShooting (1)
        • Refactoring (0)
        • Test (8)
        • Code Style, Convetion (0)
        • DDD (0)
        • Software Engineering (18)
      • Java (71)
        • Basic (5)
        • Core (21)
        • Collection (7)
        • 멀티스레드&동시성 (13)
        • IO, Network (8)
        • Reflection, Annotation (3)
        • Modern Java(8~) (12)
        • JVM (2)
      • Spring (53)
        • Framework (12)
        • MVC (23)
        • Transaction (3)
        • AOP (11)
        • Boot (0)
        • AI (0)
      • DB Access (1)
        • Jdbc (1)
        • JdbcTemplate (0)
        • JPA (14)
        • Spring Data JPA (0)
        • QueryDSL (0)
      • Computer Science (129)
        • Data Structure (27)
        • OS (14)
        • Database (10)
        • Network (21)
        • 컴퓨터구조 (5)
        • 시스템 프로그래밍 (23)
        • Algorithm (29)
      • HTTP (8)
      • Infra (1)
        • Docker (1)
      • 프로그래밍언어론 (15)
      • Programming Language(Sub) (77)
        • Kotlin (1)
        • Python (25)
        • C++ (51)
        • JavaScript (0)
      • FE (11)
        • HTML (1)
        • CSS (9)
        • React (0)
        • Application (1)
      • Unix_Linux (0)
        • Common (0)
      • PS (13)
        • BOJ (7)
        • Tip (3)
        • 프로그래머스 (0)
        • CodeForce (0)
      • Book Review (4)
        • Clean Code (4)
      • Math (3)
        • Linear Algebra (3)
      • AI (7)
        • DL (0)
        • ML (0)
        • DA (0)
        • Concepts (7)
      • 프리코스 (4)
      • Project Review (6)
      • LegacyPosts (11)
      • 모니터 (0)
      • Diary (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
lumana
[컴퓨터네트워크] 04. 유니캐스트 라우팅(1) - Unicast Routing
상단으로

티스토리툴바