ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Network] 라우터 내부에선 무슨 일이 일어날까?
    CS/Network 2021. 12. 12. 16:53

    Overview

    앞선 포스팅에서 말한 것과 같이 라우터는 두가지 기능을 한다. 하나는 routing algorithm을 수행하여 출발지에서 도착지까지 패킷의 route(전체 경로)를 결정하는 routing, 다른 하나는 라우터로 들어온 패킷을 적절한 아웃풋 링크로 보내는 forwarding이다.

    Decentralized switching: 라우터는 인풋 포트 메모리에 있는 데이터그램의 헤더 값을 확인하여 forwarding table을 사용해 아웃풋 포트를 찾는다.

    - destination-based forwarding:  도착지 IP 주소만을 확인해 forward함

    - generalized forwarding: 도착지 주소뿐만 아니라 다른 헤더 정보를 포함해 forward함

    Datagram forwarding table

    Prefix-based forwarding

    forwarding table에는 모든 IP 주소가 저장되는 것이 아니라 subnet의 prefix만 저장된다. 라우터는 인풋 포트로 들어온 데이터그램의 헤더에 있는 목적지 주소를 확인하여 forwarding table의 항목 중 prefix가 일치하는 항목을 찾아 해당 아웃풋 포트로 forward한다.

    Prefix matching

    어느 라우터의 forwarding table이 다음과 같이 정의되어 있다고 가정해보자.

    이때 만약 (11001000 00010111 00010110 10100001)를 목적지 주소로 한 데이터그램이 들어왔다면 어떤 아웃풋 링크로 내보내져야 할까? 정답은 0번 포트로 내보내져야 할 것이다.

    그렇다면 만약 (11001000 00010111 00011000 10101010)를 목적지 주소로 한 데이터그램이 들어왔다면 어떤 아웃풋 링크로 내보내져야 할까? 이 데이터그램의 prefix는 1번과 2번 포트의 prefix와 일치한다.

    Prefix가 하나의 항목이 아닌 여러 항목과 일치한다면 어떻게 해야할까

    이때는 prefix가 일치한 여러 항목 중 prefix가 가장 긴 항목을 선택해야 한다. 이를 Logest prefix matching이라고 부른다.

    위의 (11001000 00010111 00011000 10101010)를 목적지 주소로 한 데이터그램은 2번 포트가 아닌 1번 포트로 나가야하는 것이다 !!

    왜 logest prefix matching이 필요할까

    ISP-A가 200.23.16.0/20의 IP 주소 블록을 샀고 8개의 조직에 동일하게 주소를 할당했다고 가정해보자.

    각 조직은 총 512개의 IP 주소를 가지게 될 것이고, 다음과 같은 네트워크의 형태를 띌 것이다.

    이때 만약 ISP-A가 ISP-B를 사서 Organization 1을 ISP-B로 옮기게 된다면 다음과 같이 라우터의 forwarding table이 수정될 것이다.

    이때 만약 200.23.18.15를 목적지로 한 데이터그램이 라우터로 들어오게 되면 이는 200.23.16.0/20과 200.23.18.0/23 두 항목 모두 매칭되기 때문에 문제가 된다.

    👉 Longest prefix matching을 사용해 더 구체적인 prefix를 가지는 항목을 선택한다면 문제를 해결할 수 있다.

    댓글

Designed by Tistory.