IP패킷 전달과 포워딩


IP패킷 전달과 포워딩

연결형과 비연결형 서비스

연결형 서비스

  • 발신지의 네트워크층 프로토콜은 패킷을 보내기 전에 먼저 목적지의 네트워크층 프로토콜과 연결 설정(경로 설정(라우팅)에 의해)
  • 연결이 설정되면 발신지에서 목적지로 가는 패킷들은 순서대로 하나씩 보냄
  • 모든 패킷은 같은 경로를 통해 전달됨
  • 메시지에 속한 모든 패킷이 전달되면 연결 해제됨

비연결형 서비스

  • 각 패킷은 서로 독립적으로 처리
  • 패킷들 사이에 아무런 관계가 없으며 하나의 메시지에 속한 모든 패킷들은 같은 목적지에 전달되더라도 서로 다른 경로로 전달될 수 있다
  • IP 프로토콜은 원래 비연결형으로 설계됨

직접 전달과 간접 전달

패킷 포워딩

  • 패킷을 전달하는 방법
  • 네트워크 계층은 물리적인 네트워크를 통해 패킷이 처리되는 과정을 감독
  • IP 패킷을 발신지에서 최종 목적지까지 전달하는 것으로, 이를 위해 경로를 지정하는 과정 필요
  • 패킷을 최종 목적지까지 전달하는 방법
    • 직접 전달
    • 간접 전달

직접 전달

  • 최종 목적지가 전달자와 같은 네트워크에 연결되어 있는 호스트
  • 패킷의 발신지와 목적지가 같은 네트워크에 위치
  • 최종 라우터와 목적지 호스트 사이에 수행
  • 목적지 주소에서 netid를 추출한 후 네트워크 주소와 비교하여 같으면 직접 전달 수행
  • 송신자는 목적지 IP 주소를 이용하여 목적지 물리 주소를 찾고(ARP 이용) 데이터 링크층으로 보내 패킷을 전달

간접 전달

  • 최종 목적지가 같은 네트워크에 있지 않은 호스트
  • 최종 목적지 호스트와 같은 네트워크에 연결된 라우터에 도달할 때 까지 여러 라우터를 경유하여 전달
  • 목적지 IP주소와 라우팅 테이블을 이용하여 패킷이 전달되어야 하는 다음 라우터의 IP주소를 찾는다

포워딩

포워딩

  • 패킷을 목적지로 가는 경로상에 올려놓는 것을 의미
  • 오늘날의 인터넷은 링크의 조합으로 되어 있으므로, 포워딩은 패킷을 다음 홉으로 전달하는 것을 의미
  • IP 프로토콜이 원래 비연결형 프로토콜로 설계되었지만, 오늘날 IP는 연결형 프로토콜로 사용되는 경향
  • 포워딩의 기법
    • 목적지 주소 기반 포워딩
    • 레이블 기반 포워딩

목적지 주소 기반 포워딩

  • 전통적인 방법으로 오늘날 주도적으로 사용되고 있음
  • 포워딩을 위하여 호스트나 라우터는 라우팅 테이블을 가지고 있어야 한다
  • 호스트가 송신할 패킷을 가지고 있거나 라우터가 포워딩 해야 하는 패킷을 수신한 경우, 라우팅 테이블을 참조하여 최종 목적지로 가는 경로를 찾는다
  • 단점은 라우팅 테이블이 너무 커져서 라우팅 테이블 내에서 검색이 비효율적임->라우팅 테이블을 줄이는 다양한 방법 모색
  • 목적지 주소 기반 포워딩 기술
    • 다음-홉(next-hop)방법
      • 라우팅 테이블을 작게 만드는 기술 중의 하나
      • 전체 경로 정보 대신에 다음 홉 주소만 저장
    • 네트워크-지정(network-specific)방법
      • 라우팅 테이블을 작게, 검색 과정은 간단하게 만드는 방법 중 하나
      • 같은 네트워크에 연결된 모든 호스트 별 엔트리 대신에, 네트워크 주소당 하나의 엔트리 지정
    • 호스트-지정(host-specific)방법
      • 라우팅 테이블에 목적지 주소 저장
      • 네트워크-지정 방법의 반대로 효율성 고려 X
      • 관리자가 직접 네트워크를 제어하고자 할 때 효과적
      • 경로를 점검하거나 보안성을 제공하기 위한 경우에 사용
    • 디폴트(default)방법
      • N2에 연결된 호스트들에 패킷을 보내기 위해서는 라우터 R1이용
      • 나머지 호스트들에 대해서는, 인터넷상의 모든 네트워크를 나열하는 대신에, 네트워크 주소가 0.0.0.0인 디폴트 엔트리만 지정

클래스 기반 주소 지정에서 포워딩

  • 서브넷팅이 없는 경우의 포워딩
  • 서브넷팅이 있는 경우의 포워딩

서브넷팅이 없는 경우의 포워딩

  • 각 라우팅 테이블에는 다음과 같이 적어도 세 개의 열이 필요
    • 목적지 네트워크 주소는 목적지 호스트가 어디에 위치하고 있는지 알려준다
    • 다음 홉 주소는 간접 전달의 경우 패킷이 어느 라우터에 전달되어야 하는지 알려준다
    • 인터페이스 번호는 패킷이 나가는 출력 포트를 정의한다

서브넷팅이 있는 경우의 포워딩

  • 패킷의 목적지 주소를 추출
  • 목적지 주소가 테이블 내의 호스트 지정 주소와 같으면 테이블로쿠터 다음 홉과 인터페이스 번호를 추출
  • 목적지 주소와 마스크를 사용하여 서브넷 주소를 추출
  • 서브넷 주소를 사용하여 테이블을 탐색하여 다음 홉 주소와 인터페이스 번호를 찾는다. 부합되는 엔트리가 없으면 디폴트가 사용됨
  • 다음 홉 주소와 인터페이스 번호가 ARP에 전달됨

클래스 없는 주소 지정에서 포워딩

  • 클래스 없는 주소지정에서 전체 주소 공간은 한 개의 개체(클래스 X)이다
  • 포워딩은 각 블록 별로 한 줄의 정보를 필요로 한다는 것을 의미
  • 테이블은 네트워크 주소(블록의 첫번째 주소)에 기반하여 탐색되어야 한다
  • 테이블에 마스크(/n)를 포함하여야 한다
  • 테이블은 적어도 네개의 열이 필요

주소 집단화

  • 테이블 크기가 증가하고 탐색 시간 증가를 와화하기 위해

가장 긴 마스크 부합

  • 마스크 길이가 긴 것부터 부합 적용(1기관이 떨어져 있는 경우 나머지 3개의 주소 집단화 적용 가능)

계층적 라우팅

  • 라우팅 테이블의 크기가 커지는 문제를 해결하기 위해 도입
  • 인터넷을 백본, 지역, 로컬로 나누는 것처럼 계층구조 개념 도입

지리적 라우팅

  • 라우팅 테이블의 크기를 더욱 축소하기 위해 사용
  • 국가간 라우팅을 위한 라우팅 테이블에 한 개의 엔트리 사용

라우팅 테이블 탐색 알고리즘

  • 클래스가 없는 라우팅의 효율을 더욱 높이기 위하여 클래스가 있는 주소 지정에서 라우팅 테이블의 탐색 알고리즘이 변경되어야 한다
  • 이것은 라우팅 테이블을 갱신하는 알고리즘을 포함하고 있다

클래스 기반 주소지정에서 탐색

  • 클래스 기반 주소지정에서 라우팅 테이블은 리스트 구조
  • 탐색을 더욱 효율적으로 만들기 위하여 라우팅 테이블은 각 클래스 당 한개씩 전부 세 개의 테이블로 나눌 수 있다
  • 패킷이 도착하면 라우터는 디폴트 마스크를 적용, A, B, 또는 C 중 해당하는 버킷을 찾음
  • 다음 전체 테이블 대신 해당하는 버킷 내에서 탐색이 수행

클래스 없는 주소지정에서 탐색

  • 클래스 없는 주소지정에서는 목적지 주소 내에 네트워크 정보가 없다
  • 효율적이지 못하지만 가장 간단한 방법은 가장 긴 프리픽스 부합 방법
  • 라우팅 테이블은 각 프리픽스 별로 한 개씩 정의된 여러 개의 버킷으로 나뉠 수 있다. 라우터는 먼저 가장 긴 프리픽스를 시도
  • 만약 목적지 주소가 이 버킷 내에서 발견되면 탐색 종료. 만약 주소를 찾을 수 없으면 다음 프리픽스를 탐색. 이 과정 반복.
  • 해결책 : 탐색을 위한 자료구조 변경

레이블 기반 포워딩

  • 라우팅을 교환으로 대치하여 IP를 연결형 프로토콜처럼 동작하도록 하고자 하는 시도

MPLS(Multi-Protocol Label Switching)

  • 1980년대 교환 기술을 구현한 MPLS 라우터 개발
  • 라우터는 목적지 기반, 교환은 레이블 기반으로 패킷 포워딩
  • 이를 위해 새로운 헤더 추가

MPLS 헤더

  • 레이블 : 20비트, 라우팅 테이블 인덱스에 사용
  • Exp : 3비트, 실험 목적 예약
  • S : 1비트, 스택 내의 서브헤더 상황 정의(1:마지막)
  • TTL : 8비트 필드, IP데이터그램의 TTL과 유사

계층적 교환

  • MPLS내의 레이블 스택은 계층적 교환이 가능
  • 전통적인 계층적 라우팅과 유사
  • 패킷이 두 개의 레이블을 가진 경우
    • 상위 레이블은 조직 외부 교환기를 통하여 패킷 포워딩
    • 하위 레이블은 조직 내에서 패킷을 서브넷까지 전달 사용

라우터 구조

구성 요소

  • 입력 포트
    • 라우터에서 물리 및 데이터 링크 층의 기능을 수행
    • 시신된 신호로 비트들이 만들어지고 프레임이 패킷으로 역캡슐화
    • 오류 탐지 및 수정
    • 패킷을 저장할 수 있는 버퍼(큐)도 가짐
  • 출력 포트
    • 입력포트와 같은 기능을 수행, 수행 순서는 반대
    • 출력되는 패킷이 큐에 저장 -> 패킷이 프레임에 캡슐화 -> 프레임이 회선으로 보낼 신호로 변환
  • 라우팅 처리기
    • 네트워크 계층의 기능을 수행
    • 목적지 주소를 사용하여 다음 홉 주소를 찾고 동시에 패킷이 전송될 출력 포트 번호도 결정
  • 교환 조직
    • 라우터에서 가장 복잡한 기능 담당
    • 패킷을 입력 큐에서 출력 큐로 이동
    • 다양한 교환 조직 사용
      • 크로스바 교환기
        • 각 접점에서 마이크로 교환기 사용
        • N개 입력과 m개 출력을 격자 형태로 연결
      • 배년 교환기
        • 다단계 스위치, 단계의 수는 입력이n개인 경우 \(\log_2^n\)단계로 구성
        • 도착한 패킷을 목적지 포트에 따라 정렬
      • 배춰-배년 교환기
        • 배년 교환기의 문제점은 두 개의 패킷이 같은 출력 포트로 가지 않는 경우에도 이 두 패킷 사이에 내부 충돌이 발생할 수 있다
        • 도착한 패킷을 목적지 포트에 따라 정렬함으로써 이 문제를 해결