4.1 네트워크 계층 개요 - 4.2.3 출력 포트 처리

SunYerim·2023년 9월 12일
1

네트워크

목록 보기
15/18

4. 네트워크 계층: 데이터 평면

앞 장에서는 트랜스포트 계층이 네트워크 계층 호스트들 간의 통신 서비스에 의존함으로써 다양한 형태의 프로세스 간 통신을 제공한다는 것을 배움. 트랜스포트 계층은 네트워크 계층이 실제로 어떻게 구현되었는지를 알지 못해도동작함.

네트워크 계층은 트랜스포트 계층이나 애플리케이션 계층과는 달리, 각 호스트와 네트워크의 라우터마다 네트워크 계층의 일부가 존재한다는 사실을 알게 될 것.

네트워크 계층은 서로 상호작용하는 데이터 평면과 제어 평면두 부분으로 나눌 수 있음.

라우터별 제어: 한 라우터의 입력 링크에 도착한 데이터그램이 다른 한 목적 라우터의 출력 링크에 어떻게 도착하는지를 결정함.

4.1 네트워크 계층 개요

H1과 H2의 경로상에 여러 라우터와 두 호스트 H1과 H2로 이루어진 간단한 네트워크를 보여줌.

H1이 H2에게 정보를 보낸다고 가정, 호스트와 중계 라우터에서 네트워크 계층의 역할을 생각

→ H1 네트워크 계층은 H1의 트랜스포트 계층으로부터 세그먼트를 얻어 각 세그먼트를 데이터 그램으로 캡슐화하고(네트워크 계층의 패킷), 인접한 라우터 R1에게 데이터그램을 보냄.

→ 수신 후 호스트 H2의 네트워크 계층은 트랜스포트 계층 세그먼트를 추출하여 H2의 트랜스포트 계층까지 전달함.

라우터의 데이터 평면 역할입력 링크에서 출력 링크로 데이터그램을 전달하는 것임.

네트워크 제어 평면의 근본적인 역할은 데이터그램이 출발지 호스트에서 목적지 호스트까지 잘 전달되게끔 로컬 포워딩, 라우터별 포워딩을 대응시키는 것임.

4.1.1 포워딩과 라우팅: 데이터 평면과 제어 평면

네트워크 계층의 근본적인 역할은 송신 호스트에서 수신 호스트로 패킷을 전달하는 것임.

  • 포워딩(전달) ( 실제 이동 )
    • 패킷이 라우터의 입력 링크에 도달했을 때 라우터는 그 패킷을 적절한 출력 링크로 이동시켜야 함.
    • 호스트 H1으로부터 패킷이 라우터 R1에 도착했을 대 라우터 R1은 H2로 가는 경로상에 있는 다음 라우터로 전달되어야 함.
    • 포워딩에서 예외적으로 한 기능은 데이터 평면에서 실행됨.
  • 라우팅 ( 갈 수 있는 경로를 전부 탐색하는 것 )
    • 송신자가 수신자에게 패킷을 전송할 때 네트워크 계층은 패킷 경로를 결정해야하는데, 이러한 경로를 계산하는 알고리즘을 라우팅 알고리즘이라고 함.
    • H1에서 H2까지 패킷 전송 라우팅은 네트워크 계층의 제어 평면에서 실행됨.

포워딩은 매우 짧은 시간 단위를 갖기에, 대표적으로 하드웨어에서 실행됨. 반면, 라우팅은 네트워크 전반에 걸쳐 출발지에서 목적지까지 데이터그램의 종단 간 경로를 결정하는 것. 라우팅은 더 긴 시간 단위를 갖기에 소프트웨어에서 보통 실행됨.

운전에 비유하면, 여행자가 부산에서 서울까지 여행한다고 하자. 여행 동안 운전자는 교차로를 지나게 되는데, 이때 포워딩은 한 교차를 지나는 과정이라고 볼 수 있음. 즉, 차가 하나의 도로에서 교차로로 들어서면 교차로를 떠나 어떤 도로로 들어설지를 결정함.

반면에, 라우팅은 부산에서 서울까지의 여행을 계획하는 과정이라고 볼 수 있음. 즉, 여행을 시작하기 전에 운전자는 지도를 보면서 일련의 교차로에 연결된 도로에서 이용 가능한 경로를 선택하는 것.

포워딩 테이블은 네트워크 라우터에서 필수 불가결한 요소임.

라우터는 도착하는 패킷 헤더의 필드값을 조사하여 패킷을 전달하고, 해당 값을 라우터의 포워딩 테이블의 내부 색인으로 사용함. 포워딩 테이블 엔트리에 저장되어 있는 헤더의 값은 해당 패킷이 전달되어야 할 라우터의 외부 링크 인터페이스를 나타냄.

네트워크 계층 프로토콜에 따라, 헤더의 값은 목적지 주소이거나 패킷이 속한 연결의 지시일 수 있음.

헤더값이 0110인 패킷이 라우터에 도착 → 라우터는 자신의 포워딩 테이블을 보고 해당 패킷에 대한 출력 링크 인터페이스를 결정 → 라우터는 내부적으로 해당 패킷을 인터페이스 2로 전달.

포워딩은 네트워크 계층 데이터 평면에 의해 실행되는 매우 중요한 기능.

제어 평면: 전통적인 접근 방법

라우팅(제어 평면에서)과 포워딩(데이터 평면에서) 사이의 중요한 상호작용을 보여줌.

위의 그림과 같이, 라우팅 알고리즘은 라우터의 포워딩 테이블의 내용을 결정함.

예를 들어 라우팅 알고리즘은 각각의 모든 라우터에서 실행되며, 라우터는 포워딩과 라우팅 기능을 모두 갖고 있어야함.

한 라우터의 라우팅 알고리즘 기능은 다른 라우터의 라우팅 알고리즘과 소통하며 포워딩 테이블의 값을 계산함. ⇒ 소통은 라우팅 프로토콜에 따라 라우팅 정보에 포함된 라우팅 메시지를 교환하며 이루어짐.

포워딩과 라우팅 기능의 뚜렷한 다른 목적은 네트워크의 가상적인 예를 이용하면 이해가 수월함.

가상의 네트워크는 라우터 내부에 존재하는 네트워크 운영자가 직접 설정을 한다고 가정함. 이 경우 라우팅 프로토콜이 필요하지 않음. 사람에 의한 구성은 라우팅 프로토콜에 의한 방법보다는 비교적 오류도 많고 네트워크 구성 면에서 변화에 늦게 대처할 것임.

제어 평면: SDN 접근 방법

위의 그림에서 보여주는 라우팅 기능 구현에 대한 접근 방법은 라우팅 공급업체에 의해 적어도 지금까지는 지속적으로 채택되어왔음.

물리적으로 분리된(라우터로부터) 원격 컨트롤러 컴퓨터와 각각의 라우터에 의해 사용될 포워딩 테이블을 분배하는 다른 접근법을 보여줌.

그림 4.2와 4.3의 데이터 평면 구성요소가 동일함. 하지만, 그림 4.3은 제어 평면 라우팅 기능이 물리적 라우터와는 다름. 원격 컨트롤러가 높은 신뢰성과 중복성을 갖춘 원격 데이터 센터에 설치될 수 있으며, ISP 혹은 다른 제 3자에 의해 관리될 수 있음.

라우터와 원격 컨트롤러는 포워딩 테이블과 그 밖의 라우팅 정보를 포함한 메시지를 교환함으로써 소통할 수 있음.

위의 그림에 보이는 제어 평면적 접근 방법은 SDN의 중심임. 네트워크가 ‘소프트웨어적으로 정의되었을 때’, 포워딩 테이블을 계산하는 컨트롤러는 라우터와 상호작용을 하며 소프트웨어에서 실행되기 때문임.

4.1.2 네트워크 서비스 모델

네트워크 계층에서 제공되는 서비스는 네트워크 계층이 제공하는 서비스 모델에 따라 결정됨. 네트워크 서비스 모델은 송수신 호스트 간 패킷 전송 특성을 정의함.

네트워크 계층에서 제공할 수 있는 서비스들

  • 보장된 전달: 패킷이 출발지 호스트에서부터 목적지 호스트까지 도착하는 것을 보장함.
  • 지연 제한 이내의 보장된 전달: 패킷의 전달을 보장할 뿐만 아니라 호스트간의 특정 지연 제한 안에 전달함.
  • 순서화 패킷 전달: 패킷이 목적지에 송신된 순서대로 도착하는 것을 보장함.
  • 최소 대역폭 보장: 이 네트워크 계층 서비스는 송신과 수신 호스트 사이에 특정한 비트율의 전송 링크를 에뮬레이트함. 송신 호스트가 비트들을 특정한 비트율 이하로 전송하는 한, 모든 패킷이 목적지 호스트까지 전달됨.
  • 보안 서비스: 네트워크 계층은 모든 데이터그램을 출발지 호스트에서는 암호화, 목적지 호스트에서는 해독을 할 수 있게 하여 트랜스포트 계층의 모든 세그먼트에 대해 기밀성을 유지해야 함.

인터넷 네트워크 계층은 최선형 서비스라고 알려진 서비스를 제공함.

패킷을 보내는 순서대로 수신됨을 보장할 수 없을 뿐만 아니라, 목적지까지의 전송 자체도 보장할 수 없음. 종단 시스템 간 지연 또한 보장되지 않으며, 보장된 최소 대역폭 또한 없음.

이렇게 보면 쓸모없는 것처럼 보일 것이지만, 여러 네트워크 구조는 최선현 서비스보다 좋은 서비스 모델을 정의하고 구현하였음!

  • ATM네트워크 구조
    • 순서화 패킷 전달 서비스, 지연 제한 이내의 보장된 전달, 최소 대역폭을 보장
  • Intserv 구조 ( 인터넷 구조의 서비스 모델 추가 제안)
    • 종단 간 지연을 보장하고 혼잡 방지 통신을 목표로 함.
  • DASH 프로토콜
    • 적절한 대역폭 공급 및 대역폭 적응형 애플리케이션 레벨의 프로토콜과 결합된 최선현 서비스 인터넷 모델은 넷플릭스와 VoIP 같은 스트리밍 비디오 서비스, 스카이프 및 페이스타임 같으 실시간 회의 애플리케이션을 포함한 놀라운 범위의 애플리케이션을 가능하게 할 만큼 좋다!

4.2 라우터 내부에는 무엇이 있을까?

포워딩과 라우팅의 중요한 차이점과 네트워크 계층의 서비스와 라우터의 입력 링크에서 적절한 출력 링크로 패킷을 실제로 전달하는 기능을 살펴본다.

  • 입력포트 → 소켓~ 포트와는 다름.
    • 입력 포트의 맨 왼쪽 박스와 출력 포트의 맨 오른쪽 박스는 라우터로 들어오는 입력 링크로, 물리 계층 기능을 수행함. (입력 링크를 통해)
    • 입력 포트는 들어오는 링크의 반대편에 있는 링크 계층과 상호 운용하기 위해 필요한 링크 계층 기능을 수행함.
      • 입력 및 출력 포트에서 미들박스로 표시됨.
    • 입력 포트에서 검색 기능을 수행함. → 가장 오른쪽 박스에서 발생함. (여기서 포워딩 테이블을 참조하여 도착된 패킷이 스위치 구조를 통해 라우터 출력 포트를 결정함.)
    • 제어 패킷은 입력 포트에서 라우팅 프로세서로 전달됨.
      • 포트라는 용어는 물리적인 입출력 라우터 인터페이스를 의미함.
  • 스위치 구조
    • 라우터의 입력 포트와 출력 포트를 연결함.
    • 스위치 구조는 라우터 내부에 포함되어 있음. (네트워크 라우터의 내부 네트워크)
  • 출력 포트
    • 스위치 구조에서 수신한 패킷을 저장하고 필요한 링크 계층 및 물리 계층 기능을 수행하여 출력 링크로 패킷을 전송함.
    • 링크가 양방향인 경우(양방향으로 트래픽을 전달), 출력 포트는 일반적으로 동일한 링크의 입력 포트와 한 쌍을 이룸.
  • 라우팅 프로세서
    • 제어 평면 기능을 수행함.
    • 기존의 라우터에서는 라우팅 프로토콜을 실행하고 라우팅 테이블과 연결된 링크 상태 정보를 유지 관리하며 라우터의 포워딩 테이블을 계산함.
    • SDN 라우터에서 라우팅 프로세서는 원격 컨트롤러와 통신하여 원격 컨트롤러에서 계산된 포워딩 테이블 엔트리를 수신하고 라우터의 입력 포트에 이러한 엔트리를 설치함. ⇒ 원격 컨트롤러에 포워딩 테이블이 있으니까.
    • 네트워크 관리 기능을 수행함.

라우터의 입력 포트, 출력 포트, 스위치 구조는 거의 항상 하드웨어로 구현됨.

데이터 평면이 나노초 단위로 작동하는 동안, 라우터의 제어 기능은 밀리초 또는 2초 단위로 작동함. 따라서 이러한 제어 평면기능은 일반적으로 소프트웨어로 구현되며 라우팅 프로세서에서 실행됨.

라우터 내부를 자세히 알아보기 전에, 패킷 전송을 자동차가 교차로에 들어가고 나가는 것으로 비유했던 것을 상기해보자. 교차로가 원형 교차로이고 자동차가 원형 교차로에 진입하려면, 절차가 필요한데 이 절차에 필요한 정보를 고려해보자.

  • 목적지 기반 포워딩
    • 자동차가 진입 장소에서 정차하고 최종 목적지(지역 원형 교차로가 아니라 여행의 최종 목적지)를 표시한다고 가정하자. 입구에 있는 승무원이 최종 목적지를 검색하고 최종 목적지로 연결되는 원형 교차로 출구를 결정한 후 운전자에게 어떤 원형 교차로 출구가 있는지 알려준다.
  • 일반화된 포워딩
    • 승무원은 목적지 외에도 많은 요인을 토대로 자동차의 출구를 결정할 수 있다. 예를 들어, 선택된 출구는 자동차의 원점에 따라 달라질 수 있다. 특정 주의 자동차는 하나의 출구를 사용하게 할 수 있지만 다른 주에서는 다른 출구를 사용하도록 지시할 수 있다. 자동차의 모델, 제조사, 연도에 따라 동일한 결정이 내려질 수 있다. 또는 주행하기에 안전하지 않은 차는 차단되거나 회전 교차로를 통과하지 못하게 될 수 있다. 일반화된 포워딩의 경우, 주어진 차량에 대해 임의의 많은 요인이 출구를 선택하는 데 관여할 수 있다.

자동차가 원형 교차로에 들어가면 미리 정해진 원형 교차로 출구에서 나가려는 다른 자동차와 마주칠 수 있음.

  • 진입로와 진입 장소: 입력 포트
  • 원형 교차로: 스위치 구조
  • 원형 교차로 출구 도로: 출력 포트

이 비유로 병목 현상이 발생할 수 있는 곳을 고려하는 것이 좋음.

라우터의 기능을 살펴볼 것인데, 구체성과 단순성을 위해 전송 결정은 패킷 헤더 필드의 일반화된 세트가 아니라 패킷의 목적지 주소에만 기반한다고 가정하자.

4.2.1 입력 포트 처리 및 목적지 기반 전송

위의 그림은 입력 처리를 더 자세하게 보여줌. 입력 포트의 라인 종단 기능과 링크 계층 처리는 라우터의 개별 입력 링크와 관련된 물리 계층 및 데이터 링크 계층을 구현함. 입력 포트에서 수행되는 검색은 라우터 동작의 핵심임.

라우터는 포워딩 테이블을 사용하여 도착 패킷이 스위치 구조를 통해 전달되는 출력 포트를 검색함. 포워딩 테이블은 라우팅 프로세서에서 계산되거나 갱신되거나 원격 SDN 컨트롤러에서 수신됨. 포워딩 테이블은 그림 4.4의 입력 라인 카드로 복사됨. 각 라인 카드에서 이와 같은 섀도 복사본을 사용하면 패킷 단위로 중앙 집중식 라우팅 프로세서를 호출하지 않게 되고, 병목 현상을 피할 수 있음.

입력 패킷을 스위칭할 출력 포트가 각 패킷의 목적지 주소를 기반으로 하는 ‘가장 간단한 경우’를 생각 → 32비트 IP주소의 경우, 포워딩 테이블을 억지로 구현한다면 모든 가능한 목적지 주소마다 하나의 엔트리가 필요할 것임. ⇒ 40억 개 이상의 가능한 주소가 있어야 하므로 불가능함.

해당 문제에 대한 해결법 → 예로서 라우터 0에서 3까지의 4개의 링크가 있으며 그 패킷을 아래와 같이 링크 인터페이스로 전달한다고 가정해보자.

라우터의 포워딩 테이블에 40억 개의 엔트리까지는 필요하지 않음. 이 경우에는 아래처럼 4개의 엔트리를 갖는 포워딩 테이블이면 됨.

이런 형식의 포워딩 테이블에서 라우터는 목적지 주소의 프리픽스를 테이블의 엔트리와 매치함. 매치되는 엔트리가 존재하면 라우터는 패킷을 그 매치에 연관된 링크로 보냄.

만약 엔트리와 매치되지 않을 경우, 라우터는 패킷을 고정 인터페이스 3으로 보냄.

목적지 주소가 1개 엔트리 이상에 매치될 수 있는 가능성이 있음을 알 수 있는데, 예를 들어 주소 11001000 0001011 00011000 10101010의 처음 24비트는 두 번째 엔트리에 매치되고, 주소의 처음 21비트는 테이블에 있는 세 번째 엔트리에 매치됨. 다수의 매치가 있을 때 라우터는 최장 프리픽스 매치 규칙을 사용함.

즉, 테이블에서 가장 긴 매치 엔트리를 찾고, 여기에 연관된 링크 인터페이스로 패킷을 보냄.

포워딩 테이블의 존재를 감안할 때 검색은 간단한데, 하드웨어 로직은 포워딩 테이블을 검색하여 가장 긴 프리픽스와 매치되는 것을 찾음. 기가바이트 전송률에서 검색은 나노초 단위로 수행되어야함.

따라서 하드웨어에서 검색해야 할 뿐만 아니라 대형 테이블을 통한 단순 선형 검색 이외의 기술이 필요함.

검색을 통해 패킷의 출력 포트가 결정되면 패킷을 스위치 구조로 보낼 수 있음. 일부 설계에서는 다른 입력 포트로부터 패킷이 현재 구조를 사용하고 있다면 패킷이 스위칭 구조에 들어가는 것을 일시적으로 차단할 수 있음. 차단된 패킷은 입력 포트에 대기한 다음 나중에 구조를 교체하도록 예약됨.

목적지 IP 주소를 찾은(매치)다음에 패킷을 스위치 구조로 지정된 출력 포트로 전송(액션)하는 것은 라우터뿐만 아니라 많은 네트워크 장치에서 수행되는 일반적인 매치 플러스 액션의 사례임을 확인.

4.2.2 스위칭

스위치 구조는 패킷이 입력 포트에서 출력 포트로 실제로 스위칭(포워딩)되는 구조를 통과하므로 라우터의 핵심임.

  • 메모리를 통한 교환
    • 가장 단순한 초기의 라우터는 CPU(라우팅 프로세서)를 직접 제어해서 입력 포트와 출력 포트 사이에서 패킷을 스위칭하는 전통적인 컴퓨터.
    • 전통적인 I/O 장치처럼 작동함.
    • 패킷이 도착하면 입력 포트는 라우팅 프로세서에게 인터럽트를 보내 패킷을 프로세서 메모리에 복사함.
    • 라우팅 프로세서는 헤더에서 목적지 주소를 추출하고 포워딩 테이블에서 적절한 출력 포트를 찾은 다음 패킷을 출력 포트의 버퍼에 복사함.
    • 목적지 포트가 다른 경우라도 공유 시스템 버스를 통해 한 번에 하나의 메모리 읽기/쓰기 작업을 수행할 수 있기 때문에 두 패킷을 동시에 전송할 수 없음.
    • 일부 최근 라우터는 메모리를 통해 스위칭함. 그러나 초기 라우터와의 주요 차이점은 목적지 주소를 검색하고 해당 메모리 위치에 패킷을 저장하는 것이 입력 라인 카드에서 처리함으로써 수행되는 것.
    • 메모리를 통해 스위칭하는 라우터는 공유 메모리 멀티프로세서와 매우 흡사함.
  • 버스를 통한 교환 (버스가 프로세스를 안 씀.)
    • 입력 포트는 라우팅 프로세서의 개입 없이 공유버스를 통해 직접 출력 포트로 패킷을 전송함.
    • 이는 일반적으로 미리 준비된 입력포트 스위치 내부 레이블(헤더)이 로컬 출력 포트를 나타내는 패킷에게 전송되거나 버스에 패킷을 전송하여 수행됨.
    • 모든 출력 포트에 패킷이 수신되지만 레이블과 매치되는 포트만 패킷을 유지함.
    • 레이블은 스위치 내에서 버스를 통과하기 위해서만 사용되므로 출력 포트에서 제거됨. 동시에 여러 패킷이 다른 입력 포트에 있는 라우터에 도착하면 한 번에 하나의 패킷만 버스를 통과할 수 있기 대문에 하나를 제외한 모든 패킷이 대기해야 함.
    • 모든 패킷이 하나의 버스를 건너가야 하므로, 라우터의 교환 속도는 버스 속도에 의해 제한됨.
  • 상호연결 네트워크를 통한 교환
    • 공유 버스의 대역폭 제한을 극복하는 한 가지 방법은 이전의 멀티프로세서 컴퓨터 구조에서 프로세서를 상호연결하는 데 사용된 것과 같은 좀 더 복잡한 상호연결 네트워크를 사용하는 것임.

4.2.3 출력 포트 처리

출력 포트의 메모리에 저장된 패킷을 가져와서 출력 링크를 통해 전송함.

profile
내 안에 있는 힘을 믿어라.

0개의 댓글