[네트워크] 네트워크 계층 - ICMP | IPv6 | 라우팅 알고리즘(Routing Algorithms)

sm·2023년 7월 3일
0

[CS] 네트워크

목록 보기
4/5

ICMP

  • 오류 메시지를 전송하고 제어 메시지를 교환하기 위해 사용되는 프로토콜
  • 네트워크 관련 문제를 식별하고 해결하는데 사용
    주로 IP 패킷을 전송하는 동안 발생할 수 있는 문제를 알리기 위해 사용
  • 사용자 관련 메시지가 아닌, 사용자와 관련이 없는 메시지들

TTL(Time to Live) - 패킷의 수명을 제한하는데 사용
: 각 라우터를 지날 때마다 1씩 감소, 0이 되면 패킷 폐기

=> TTL이 0이 되어 패킷이 버려질 경우, 해당 라우터는 ICMP 오류 메시지를 생성, 패킷의 출발지인 전송자에게 전송 => 네트워크 문제를 파악하고 트래픽 경로나 TTL 값을 조정하여 효율적인 통신 가능


IPv6(Internet Protocol version 6)

  • IPv4의 후속 버전, 주소 부족 문제를 해결하기 위해 개발
  • IPv4: 32bit -> 약 43억개의 고유한 IP 주소 제공
  • 128bit 주소 체계
  • 주소 공간의 크기 증가  
    => 인터넷에 연결되는 모든 장치에 고유한 주소 할당 가능

차이점)

  • 체크섬 필드 제거 : 네트워크 장비에서 패킷 처리 속도 향상을 위해.
    체크섬 검사를 네트워크 계층보다 상위 계층 프로토콜에 위임
  • Next Header 필드: 다음에 오는 헤더 , 상위 계층 프로토콜 식별
    다음으로 어떤 종류의 정보가 올지 미리 알려주는 역할
  • 기존 20바이트 => 40 바이트의 헤더 길이
  • 기본 헤더 외에 다양한 확장 헤더 추가 가능 -> 확장성/유연성

Tunneling

IPv4 네트워크를 통해 IPv6 패킷을 전송하기 위한 기술
IPv6 패킷을 IPv4 패킷에 캡슐화하여 IPv4 네트워크로 전송


라우팅 알고리즘

네트워크에서 패킷을 전송하는 경로를 결정하는 데 사용되는 알고리즘
라우팅 알고리즘에 의해 forwarding table이 구성된다. 

복습) Network layer

Routing

네트워크에서 데이터 패킷의 출발지에서 목적지로의 경로를 결정하는 과정
패킷의 header를 보고 forwarding table에서 링크 번호를 찾아서 보냄
forwarding table은 라우팅 알고리즘에 의해 업데이트


  • static(정적 라우팅): 
    forwarding table을 직접 만드는 방법
    수동으로 사전에 설정된 경로 테이블 사용하여 패킷의 경로 결정
    경로 테이블은 고정, 네트워크 토포로지가 변경되지 않는 한 경로는 변경되지 않음 -> 유연성 낮음. 들어오는 패킷이 많아진다면?
  • Dynamic(동적 라우팅) 
    Forwarding table을 네트워크 상태에 따라 자동으로 업데이트
    => 네트워크 토폴로지의 변화에 대응하여 동적으로 경로 조정
    알고리즘) Link State(링크 상태), Distance Vector(거리 벡터), Hierarchical 등 

참고) 네트워크의 토폴로지:
네트워크 구성 요소들 간의 연결 관계 - 노드들의 배치와 링크로 표현
라우팅 알고리즘은 네트워크의 토폴로지 정보를 바탕으로 패킷의 전달 경로 결정


  • 네트워크의 토폴로지, 모든 링크 비용의 정보를 토대로 계산 
    - broadcast를 통해 
  • 가정) 네트워크의 전체적인 상태 정보를 수집하고 이를 바탕으로 계산
  • Dijkstra 알고리즘) 단일 출발지에서 모든 목적지까지 최단 경로 계산
  • N개의 노드가 있다면 N번 반복하며 각 노드로까지의 최적 경로 계산

Notation

C(x,y) : 노드 x, y 사이의 연결 비용, x->y 노드로 이동하는 비용
D(v): 출발지로부터 노드 v까지 현재까지 알려진 최단 거리
p(v) : 노드 v의 직전 노드
N' : 최단 경로가이미 구해진 노드들의 집합

=> D(v) 값들을 업데이트하고 N' 에서 노드들을 선택하여 최단 경로 계산


  • 이웃하지 않는 노드는 무한대로 설정
    D(v) = min(D(v), D(w) + C(w, v)) 
    => D(v)와 D(w) + C(w, v) 중에서 작은 값을 선택하여 반환
    출발지로부터 노드 v까지의 현재까지 알려진 최단 거리 = 7 vs. 
    새로운 경로를 통해 노드 v로 가는 거리 ( w를 거쳐 v로) = 6 으로 업데이트


Distance Vector Algorithm

  • 각 노드는 자신과 이웃 노드와 거리(비용) 정보를 교환
  • 자신과 이웃 노드 간의 Distance를 벡터로 저장하는 알고리즘
  • wait : 각 노드는 인접 노드로부터 링크 비용에 변화가 있는 메시지가 올 때까지 대기
  • recompute: 메시지를 받게 되면 노드는 자신의 distance vector 업데이트. 인접 노드로부터 수신한 거리 정보를 이용하여 최단 경로 계산
  • notify: 자신의 노드의 거리 벡터에 변화가 생기면 노드는 인접 노드들에게 알림. 인접 노들도 업데이트를 수행하도록 유도 
  • 대기/갱신/알림의 과정을 반복하여 각 노드의 거리벡터를 최적의 경로로 수렴시키는 방식으로 최단 경로 계산

profile
📝 It's been waiting for you

0개의 댓글