블로그 이전했습니다. https://jeongzero.oopy.io/
라우터 내부에는 무엇이 있을까?
본문 바로가기
컴퓨터 관련 과목/Network

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

728x90



라우터 혹은 라우팅 기능을 갖는 공유기는 패킷의 위치를 추출하여, 그 위치에 대한 최적의 경로를 지정하며, 이 경로를 따라 데이터 패킷을 다음 장치로 전향시키는 장치이다. 이때 최적의 경로는 일반적으로는 가장 빠르게 통신이 가능한 경로이므로, 이것이 최단 거리 일수도 있지만, 돌아가는 경로라도 고속의 전송로를 통하여 전달이 되는 경로가 될 수 있다. 간단히 말해 서로 다른 네트워크 간에 중계 역할을 해준다.


-출처 : 위키백과-


라우터

(이렇게 포트가 있고 반대편에도 랜선을 꽂을 수 있는 포트가 있다)



위키백과에 나온 것처럼 라우터는 인터넷 상의 네트워크를 서로 연결해주는 하나의 매개체이다. 오늘 살펴볼 것은 이 라우터가 내부적으로 어떠한 구조로이루어져있으며 어떠한 기능을 하는지 자세히 살펴보겠다. 일반적인 라우터 구조는 크게 4가지의 요소로 구성되어 있다. 입력포트, 스위칭 구조, 출력포트,마지막으로 라우팅 프로세서이다.

라우터 구조


입력 포트 : 입력포트는 여러 기능을 수행한다. 위 그림을 보면 입력 포트의 맨 왼쪽 초록색 상자와 출력 포트의 맨 오른쪽 상자는 라우터로 들어오는 입력링크로 물리계층기능을 수행한다. 또한 입력 포트는 들어오는 링크의 반대편에 있는 링크 계층과 상호 운용하기 위해 필요한 링크 계층 기능을 수행한다. 이는 입력 포트와 출력포트에서 파란색 상자에 해당한다. 마지막으로 가장 중요한 빨간색 상자는 입력 포트에서 검색 기능을 수행한다. 

검색 기능이란 들어온 패킷을 포워딩 테이블을 참조하여 도착된 패킷이 스위칭 구조를 통해 라우터가 어떠한 출력 포트로 나가는지를 결정한다. 라우팅 프로토콜 정보를 전달하는 패킷은 입력 포트에서 라우팅 프로세스로 전달된다. 그리고 아래 오른쪽 그림처럼 초록 패킷은 출력버퍼가 비어서 지연없이 출력포트에서 나가는게 가능하지만 앞에 빨간 패킷때문에 나가지 못하고 기다려야 한다. 이를 HOL(head-of-the-line) 차단이라고 한다.


스위칭 구조


(#포워딩 테이블이란 예를 들어 "~~한 목적지주소를 가지고 있는 패킷은 00번 포트로 내보내라~" 라는 정보가 레코드 형식으로 저장되어 있는 테이블을 말한다.)



스위칭 구조 : 스위칭 구조는 라우터의 입력 포트와 출력 포트를 연결하며 이는 라우터 내부에 포함되어 있다. 입력포트에서 포워딩 테이블을 참조하여 출력 포트가 결정되면 스위칭 구조에서는 이를 실질적으로 입력-출력 포트를 연결해주는 물리적인 연결을 의미한다. 스위칭의 구조는 크게 3가지로 나뉜다. 첫째로 메모리로 구성되는 스위칭 구조가 있다. 이는 가장 단순하고 라우팅 프로세서를 직접 제어해서 입력포트와 출력 포트 사이에서 패킷을 스위칭하는전통적인 컴퓨터이다. 

스위칭 구조


두번째로 버스를 통한 교환이다. 여기서는 입력포트는 라우팅 프로세서의 개입 없이 공유 버스를 통한 직접 출력 포트로 패킷을 전송한다. 세번째로 크로스바 교환방식이다. 앞서 말한 메모리와 버스를 통한 교환에서는 하나의 패킷이 스위칭 구조에서 출력되기위해 진행중인 상태면 다른 패킷은기다려야 한다. 하지만 크로스바 교환방식에서는 여러개의 패킷이 동시에 출력포트로 전달 될 수 있다.



출력 포트: 출력 포트는 스위칭 구조에서 수신한 패킷을 저장하고 필요한 링크 계층 및 물리적 계층 기능을 수행하여 출력 링크로 패킷을 전송한다. 링크가양방향 전송인 경우, 출력 포트는 일반적으로 동일한 링크의 입력 포트와 한 쌍을 이룬다. 만약 출력포트로 들어오는 패킷의 속도가 출력포트에서 처리되어 밖으로 나가는 훨씬 빠르게 되면 출력 포트의 버퍼는 대기하는 패킷이 점차 많아질 것이고 결국 버퍼가 꽉차게 되어 큐잉지연이 발생한다. 여기서 패킷 손실이나 지연이 발생할 수 있다. 

출력 포트 구조



라우팅 프로세서 : 라우팅 프로세서는 control plane 영역 기능을 수행한다. 기존의 라우터에서는 라우팅 프로토콜을 실행하고 라우팅 테이블과 연결된 링크 상태 정보를 유지 관리하며 라우터의 포둬딩 테이블을 계산한다.


정리를 하자면 라우터로 패킷이 들어오면 우선 입력 포트로 들어오게 된다. 입력포트에서는 라우팅 프로세서에서 계산한 포워딩 테이블을 참조하여 해당 패킷가 어떠한 출력 포트로 나가는지 결정한다. 그다음 스위칭 구조를 통해 실질적인 출력포트로의 이동이 발생하고 최종적으로 출력포트에서 패킷이 빠져나가게 되는 것이다. 그렇다면 입력 패킷을 스위칭 할 출력 포트가 각 패킷의 목적지 기반의 전송인 경우를 생각해보자. ipv4인경우 32비트이므로 포워딩 테이블에 전부다 넣게 된다면 모든 가능한 목적지 주소마다 하나의 엔트리가 필요한 것이고 이는 40억 개 이상의 엔트리가 채워져야 한다는 뜻이다. 


이는  불가능하므로 이러한 문제를 해결하기 위해 목적지 주소를 범위로 나누고 00부터 00까지는 1번 포트  ~ 이런식으로 출력 포트를 결정 짓는다. 이런 형식의 포워딩 테이블에서 라우터는 패킷의 목적지 주소의 프리픽스를 테이블 엔트리와 대응시킨다. 예를 들어 들어온 패킷의 목적지 주소가 1101000000101110001011010100001 이라고 할때 포워딩 테이블의 프리픽스 대응에 가장 길게 일치하는 것을 찾아 해당 출력 포트로 내보낸다. 만약 포워딩 테이블과 일치하는게 없으면 최장 프리픽스 대응 규칙을 적용한다. 즉, 테이블에서 가장 긴 프리픽스 대응 엔트리를 찾고, 여기에 연관된 출력포트로 내보낸다.

728x90

'컴퓨터 관련 과목 > Network' 카테고리의 다른 글

IPv4 주소체계  (0) 2019.01.06
IPv4 데이터그램 단편화  (20) 2019.01.06
TCP 혼잡제어  (0) 2019.01.05
연결지향형 전송계층 프로토콜 : TCP  (0) 2019.01.05
비연결형 전송계층 프로토콜 : UDP  (0) 2019.01.05