[kocw 이미정]14. what’s inside a router, IP: Internet Protocol

이건회·2022년 2월 3일
0

네트워크

목록 보기
14/24

  • 라우터의 주가지 주요 기능은 라우팅과 포워딩이다. 라우팅은 라우팅 프로토콜을 따라 경로를 계산하는 데 필요한 정보를 서로 라우터들끼리 주고받게 된다. 그렇게 수집한 정보를 이용해 라우트를 계산하는 알고리즘을 실행하고 각 목적지의 경로를 지정한다.
  • 실제로 패킷이 들어오면 결정된 경로를 따라 패킷이 목적지를 향해 갈 수 있도록 패킷을 전달하는 것을 포워딩이라 한다.
  • 라우터는 라우팅 기능을 수행하기 위한 라우팅 프로토콜 메세지를 주고받는 management control plane(software)과, 사용자의 데이터를 주고받는 forwarding data plane(hardware)으로 구성된다.
  • 사용자 데이터는 빠른 속도로 전달되어야 하므로 이를 담당하는 data plane은 일반적으로 hardware로 구성되고, 라우팅 프로토콜 메세지를 주고받을 때는 소프트웨어에 의해 구현된다.
  • 컨트롤 플레인에서는 포워딩에 필요한 정보인 포워딩 테이블을 계산해서 이를 사용자 데이터가 유입되는 라우터의 인풋 포트로 푸시한다.
  • 컨트롤 플레인에서는 라우팅 프로토콜과 알고리즘을 실행하는 라우팅 프로세서가 있고, 데이터 플레인에는 인풋포트, 스위칭 패브릭, 아웃풋 포트 세 가지가 있다.
  • 인풋 포트에는 세 가지 파트가 있다. big leve reception을 하는 physical layer기능을 수행하는 line termination파트가 맨 앞에 오고, 이어 line termination에서 비트를 모아 프레임을 형성하면 link layer protocol 파트에서 프레임이 미디어를 통해 홉을 잘 건너왔는지 확인하는 일을 한다. 이후 프레임이 제대로 된 것이면 이를 목적지에 보내기 위해 다음 홉으로 내보내기 위해 가야할 아웃풋 포트를 찾는 작업을 하는데 이를 forwarding table lookup이라 한다.
  • 인풋포트에서의 모든 프로세스는 line speed, 즉 데이터가 미디어를 통해 유입되는 속도와 동일한 속도로 내보내는 것이 목표다.
  • 또한 인풋포트와 아웃풋이 스위칭되는 속도보다 데이터그램이 더 빠르게 도착하는 경우 큐잉이 발생할 수 있으므로 버퍼를 두게 된다.

  • switching fabric은 인풋과 아웃풋 포트를 연결하고 있는데, 만약 이 전달 속도가 라우터의 모든 인풋 포트의 전송 속도보다 느리다면 이 경우 라우터의 인풋 포트에서 큐가 만들어지고 큐잉 딜레이와 심한 경우 인풋 버퍼 오버플로우로 인한 손실도 발생한다.
  • 인풋 포트에는 헤드 오브 라인 블로킹(HOL)이 발생할 수 있는데 이는 위 그림처럼 큐의 맨 앞 데이터그램 때문에 뒤에 오는 목적지가 같은 데이터그램이 아웃풋으로 들어갈 수 없는 경우다. 왼쪽 그림 처럼 세번째 칸의 포록색 데이터그램은 막혀있는 output port의 목적지와 다름에도 앞에 있는 데이터그램이 나가지 못해 함께 기다려야 한다. 이를 HOL이라 한다.
  • 오른쪽 그림은 패킷의 한 단위시간이 지난 후 에야 아웃풋포트로 데이터그램이 전달될 수 있어, hol이 일어난다는 것이다.

  • switch fabric은 인풋 포트와 아웃풋 포트를 연결한다. 이것의 가장 중요한 특성은 얼마나 빠른 속도로 인풋 포트의 패킷을 아웃풋으로 전달하느냐다. 이상적으로 input 포트가 n개라면 n*line rate 정도의 속도면 딜레이가 없을 것이다. switching fabric의 종류는 메모리, 버스, 크로스바 세 가지가 있다.

  • 메모리는 일반적으로 first generation 라우터에서 사용된 switching fabric의 형태다. 스위칭이 cpu의 직접적인 제어 하에 이루어질 경우, 인풋 포트의 패킷은 메모리로 카피되는 구조다. 인풋 포트에서 메모리로, 메모리에서 아웃풋 포트로 시스템 버스를 두 번 타야지만 인풋 포트로부터 아웃풋 포트로 이동하게 된다. 따라서 메모리의 밴드위드에 의해 속도가 구성이 된다.

  • 공유되는 버스를 통해 데이터그램이 메모리에서 아웃풋 포트로 이동하므로 여러 개의 데이터그램이 버스를 공유하면서 속도가 제한되는 bus contention이 발생한다. 이 때 switching speed는 버스의 밴드위드에 의해 결정된다.

  • interconnection network를 사용하는 switching 네트워크의 예시다. 버스 밴드위드에 의해 스위칭 스피드가 제한되는 것을 극복하기 위한 것이다. 한 개의 공유 버스가 아니라는 것이 특징이다.

  • 아웃풋 포트는 네트워크에서 미디어로 데이터를 내보내는 역할이므로 인풋 포트와 반대로 네트워크 계층의 버퍼가 제일 먼저 오고, 링크 계층, 피지컬 계층을 담당하는 line termination 파트가 오게 된다.
  • 따라서 아웃풋 포트에서도 버퍼링이 필요한데, 트랜스미션 미디엄에 실을 수 있는 양보다 더 빠른 속도로 스위칭 패브릭을 통해 데이터가 들어오면 이용 가능한 상태 전까지 데이터를 저장하는 버퍼가 필요하다.
  • 또한 버퍼링 된 데이터그램 중 어떤 것을 먼저 뽑아낼지를 결정하는 스케줄링이 결정될 수 있다.

  • 아웃풋 포트에서도 버퍼가 있으므로 도착하는 시간이 뽑는 시간보다 빠르면 큐잉 딜레이가 발생한다.

  • 라우터의 버퍼 크기를 어떻게 결정해야 할까. 네트워크를 파이프로 추상화한다면 파이프에 유입되는 데이터 양이 버퍼 크기를 특정하는 데 중요하다. RTT의 크기, 밴드위드의 크기가 클 수혹 네트웤에 유입될 수 있는 데이터의 양이 매우 크다. 따라서 "통상적인"RTT에 link capacity인 C를 곱하여 버퍼 크기를 결정했는데

  • 최근에는 위와 같이 여기에 파이프를 지나가는 플로우의 크기(N)로 나눠주어 lick capacity를 부드럽게 만들어주는 것을 추천한다.

IP

  • ip프로토콜은 데이터 전송에 관련된 사항들을 정리한다. 반면 라우팅 프로토콜은 목적지 경로 계산에 사용되는 정보들을 주고받는 사항을 정의하며, 이에 의해 결정된 정보에 의해 데이터 포워딩을 할 포워딩 테이블이 결정된다. icmp 프로토콜은 데이터 교환이 아닌 에러 보고 등 컨트롤 메세지에 관한 시그널에 대한 사항을 정의한다.

  • 위는 ip의 데이터그램 포맷이다. 헤더에는 ip 프로토콜 버전, 가변적인 헤더의 길이, 데이터가 필요로 하는 서비스 타입이 들어간다. 또 time to live에 데이터그램이 거칠 수 있는 최대의 홉 양을 표시한다. 홉 하나를 거칠 때마다 라우터가 이 값을 하나씩 감소시킨다. upper layer에는 페이로드에 실은 세그먼트를 내려보낸 것이 tcp인지 udp인지를 표시한다. 그래야 어느 프로세스로 올려보낼지 알 수 있기 때문이다. 또 length 필드에 헤더포함 데이터그램 전체 길이를 표시한다. 두 번째 줄에 있는 세 개의 필드들은 fragmentation과 reassembly에 사용되는 필드다. options 필드는 가변 길이이며 데이터그램이 경유하는 각 라우터가 자신의 ip주소를 기록하여 루트를 확인할 수 있도록 한다.

  • 네트워크의 각 링크는 최대의 트랜스퍼 사이즈가 있다. 이는 링크 계층에서 생성하는 프레임의 가능한 최대 크기가 된다.
  • 그러나 데이터그램의 크기가 이 사이즈보다 커지면 라우터는 하나의 데이터그램을 여러개로 나누어 프레이밍을 하는데 이를 fragmentation이라 한다. 한 번 프레이밍된 데이터는 독립적인 취급을 받는다.
  • reassemble은 프레이밍된 데이터들이 목적지 호스트에 최종적으로 도착한 이후에 합쳐지는 것을 의미한다. 인터넷은 복잡한 작업은 다 엔드 시스템으로 보내버리기 때문에 그전에는 독립적으로 취급하여 단순히 끝으로 보내기만 하기 때문이다.
  • 오른쪽 사진이 그 예시이다. 하나의 데이터그램이 작은 3개로 프래그먼테이션 된다. 목적지 호스트에서 합쳐지게 된다.

  • 위 사진은 reassemble의 예시다. 4000짜리의 데이터를 내보내려는데 최대크기가 1500만 가능하면 fragment해서 내보낸다. length 필드를 명시하여 변경된 데이터의 길이를 표시해준다. 첫번째 두번쨰는 1480짜리 데이터에 헤더 크기 20을 더한 최대 크기인 1500 으로 만들었고, 세 번째는 길이가 1040이다. 총합하면 4040이 되는데 헤더를 하나만 가지던 데이터그램 하나가 세개로 나눠지면서 헤더가 두개 더 실린 것이다. 또 id에 같은 같을 명시해 같은 데이터그램 소속임을 식별하며, 마지막 프래그먼트를 제외하고는 모두 1로 세팅하여 내 뒤에 프래그먼트가 있음을 명시하고 값이 0일 경우 마지막임을 확인할 수 있다. 마지막 offset은 데이터의 크기를 바이트 크기인 8로 나눈 값이다.

  • ip address는 호스트와 라우터 인터페이스를 위한 32비트 짜리 식별자다. 인터페이스는 호스트/라우터와 피지컬 계층 사이의 커넥션이다. 라우터는 여러개의 인터페이스를 가지고, 호스트는 1~2개의 인터페이스만을 보통 가진다.

  • 위 사진은 앞 사진에 와이파이 액세스 포인트와 이더넷 스위치를 추가한 버전이다. 이 둘은 링크 계층까지만 탑재하므로 ip address를 할당받지 않는다.

  • 그러나 현재는 이더넷 스위치와 와이파이 없이 호스트 혹은 라우터와 인터페이스가 직접 연결됐다고 가정한다.

  • ip주소는 서브넷과 호스트로 나눠지는데, ip의 high order bit는 서브넷 파트를 식별하고 low order bit는 호스트 파트를 식별한다. 서브넷을 라우터의 개입 없이 통신할 수 있는 장치 인터페이스다. 장치의 ip주소의 서브넷 파트는 동일한 서브넷 파트를 가진다. 위 사진처럼 223.1.1~n으로 동일한 서브넷 파트로사용된다.

  • 어떤 ip가 동일한 서브넷인지 알 수 있을까. 호스트와 라우터를 기준으로 구분하여 위와 같이 고립된 서브넷들 각각이 다른 서브넷이 된다.

  • 위 그림에서 서브넷은 몇 개인가. 호스트와 라우터 기준으로 여섯 개로 고립되어 나눠지는 것을 알 수 있다. 따라서 서브넷은 여섯 개이다.

  • ip 주소체계인 cidr은 ip 주소의 서브넷 포션의 길이를 고정적으로 정하는 주소 클래스를 없애버리고 서브넷 포션의 길이를 서브넷에서 필요로 하는 ip주소에 맞춰 가변적으로 둘 수 있도록 한다.
profile
하마드

0개의 댓글