라우터

2024. 9. 24. 17:21CS/컴퓨터네트워크

라우터(Router)

라우터는 네트워크 계층에서 중요한 역할을 하는 장비다.

라우터 구조

라우터의 구조는 입력 포트(Input port),출력 포트(Output port),스위칭 패브릭(Switching Fabric)로 이루어진다.

 

입력 포트(Input port)

 입력 포트는 입력 링크로서,물리 계층 기능을 수행한다.또한 들어오는 링크의 반대편에 있는 링크 계층과 상호 운용하기 위한 기능을 수행한다.

입력 포트의 기능

입력 포트는 포워딩 테이블(Fowarding Table)을 참조하여 패킷을 어떤 출력 포트로 보낼지 결정한다.이 과정에서 라우터가 사용하는 2가지 포워딩 기법이 있다.

 

1.목적지 기반 포워딩(Destination-based Forwarding)

 -패킷의 헤더에 포함된 목적지 IP주소를 확인하고,그 주소에 따라 따라 다음 홉으로 패킷을 전달하는 방식이다.라우터는 라우팅 테이블을 참조하여 패킷의 목적지 IP주소에 맞는 경로를 찾고,그 경로를 따라 패킷을 전달한다.라우팅 테이블에는 네트워크 주소와 해당 네트워크로가기 위한 다음 홉의 정보가 포함되어 있다.

목적지 기반 포워딩

2.최장 접두사 일치(Longest Prefix Matching)

-패킷의 목적지 IP주소와 라우터의 라우팅 테이블에 있는 여러 네트워크 주소 중에서 가장 길게 일치하는 접두사를 가진 경로를 선택하는 방식으로 라우터는 패킷의 목적지 주소와 라우팅 테이블에 있는 여러 네트워크 주소들을 비교하고 최대 길이의 접두사와 일치하는 항목을 찾아 해당 결로로 패킷을 전달한다.

최장 접두사 일치

 

이 두가지 포워딩 기법은 동시에 사용되여 패킷을 최종 목적지로 가장 효율적이고 정확하게 전달한다.

 

스위칭 패브릭(Switching Fabric)

 스위칭 패브릭은 입력 포트에서 출력 포트로 데이터를 전송하는 장치다.

스위칭 패브릭

스위칭 패브릭을 구현하는 방식은 크게 3가지로 나뉜다.

 

1.메모리 방식(Memory)

-라우터의 첫번째 세대에서 사용된 방식으로 메모리에 패킷정보를 저장하고 CPU에 의해 직접 제어됬다.하지만 역시 한계점이 명확했다.

우선 메모리를 사용하기에 CPU에 의한 쓰기,읽기 시간이 소요되서 속도가 떨어졌고 메모리 대역폭(Memory bandwidth)에 의해 속도도 제한됬다.또한 메모리를 설치해야하기에 비용적인 문제도 발생했다.

메모리 방식

 

2.버스 방식(Bus)

-메모리 방식 이후로 나온 방식으로서 패킷을 공유 버스(Shared bus)를 통해 전송하는 방식이다.이 방식 역시 한계점이 명확했는데 우선 속도가 버스 대역폭(Bus Bandwitdh)에 의해 제한됬다.그리고 버스 방식은 한 노드가 버스를 점유하면 그 버스는 사용할 수 없는 단점이 존재한다.

버스 방식

 

3.상호 연결 네트워크 방식(Interconnection network)

-공유 버스의 대역폭 제한을 극복하는 방법으로 이는 멀티프로세서 컴퓨터 구조에서 프로세스를 상호 연결하는데 사용된 방식과 비슷하다.

다중화 방식을 사용하여 패킷을 병렬적으로 전달한다.

상호 전달 네트워크 방식

 

Input port queuing

 인풋포트의 입력 속도가 스위칭 속도보다 빠르면 일어나는 일로 인풋포트의 버퍼에 패킷이 쌓여서 패킷로스가 발생한다.이를 Head-Of-the-Line(HOL) bloking이라한다.즉,라인의 앞쪽에서 다른 패킷이 막고있어 입력 큐에서 대기 중인 패킷은 사용할 출력 포트가 사용 중이지 않아도 기다려야 한다.하지만 input port queuing은 잘 일어나지는 않는다.

Input port queuing

Output port queuing

 보통의 네트워크 트래픽 문제가 발생하는 이유로 출력 포트에서 transmission 되는 속도보다 패킷이 더 빨리 출력포트에 도착하여 큐에 패킷이 쌓이는 경우로 만일 큐가 가득차기전에 패킷들을 drop-tail 정책으로 버려야한다.만일 저장공간이 꽉 찼는데도 들어오게 된다면 패킷은 burst하게 드랍된다.그 이유는 TCP가 패킷을 brust하게 보내기 때문이다.그리고 만일 output port queuing이 발생하게 되면 호스트는 Explicit Congestion Notification(ECN)비트를 통해 Congestion상황을 알려야 한다.이러지 않고 큐가 가득차 burst하게 패킷이 드랍되면 TCP의 윈도우 크기가 1로 줄어들기 때문에 고의적으로 패킷을 하나씩 드랍해서 윈도우사이즈를 반으로 줄인다.

Output port queuing

그렇다면 큐잉이 발생하는 이유에 대해 단순하게 생각해보면 버퍼의 용량이 문제라고 볼 수 있다.이를 해결하기 위해서는 적절한 용량을 확보해야하는데 이 적절한 용량은 평균 왕복 시간(RTT,Round-Trip-Time)링크 용량 C를 곱한게 Rough한 계산법이고 더 효율적인 계산식으로는 Flow수 N까지 고려한 다음의 식이 제안됬다.

More recent recommendation

버퍼 관리와 패킷 스케줄링(Buffer management,Packet scheduling)

버퍼관리와 패킷 스캐줄링

 

 버퍼 관리는 큐에 패킷이 다 쌓이기전에 어떻게 관리할지를 결정하는 것으로 크게 Drop,Marking으로 나뉜다.

Drop

 Tail drop이 대표적이지만 이는 패킷이 burst하게 드랍이 될 수 있기에 좋지않은 정책이다.이밖에도 우선순위에 따라서 패킷을 버리기도 한다.

 

Marking

 ECN,RED(Random Early Drop)으로 마킹을 통해 컨제스션 신호를 보내는 것으로 하나의 센더로 수신된 패킷을 전부 버리지 않기 위해 고안되었다.최근에는 버퍼사이즈가 일정수준으로 올라가면 패킷 드랍확률을 올리는 "CODEL"이 주목 받고 있다.

 

 버퍼의 용량많으로는 해결이 안되는문제가 발생한다.바로 우선순위가 높은 패킷(Real Time Service 등)들에 대해서는 어차피 큐가 쌓여있으면 기다려야하기에 제대로된 서비스가 되지 않는다.이는 운영체제의 CPU스케줄링과 비슷한 방식으로 해결하면된다.즉,적절한 스케줄링으로 패킷을 링크로 내보내는 것이다.

대표적인 스케줄링 정책으로는 FCFS(First Come,First Serve),Priority,Round Robin,Weighted fair queuing등이 존재한다.

 

FCFS

 가장 기본적인 스케줄링 정책으로 이는 실시간 서비스(RTS)에는 적합하지 않다.

FCFS

Priority

 우선순위를 기반으로하는 스케줄링 정책으로 RTS에는 적합할 수 있지만 우선순위가 낮은 패킷들은 기아(Starvation)현상이 발생된다.

Priority

Weighted Fair Queuing(WFQ)

 우선순위 스케줄링에 라운드 로빈 방식을 결합한 방식으로 현대 라우터에서 널리 사용되는 스케줄링 정책이다.라운드 로빈을 통해서 기아현상을 해결할 수 있다.이 정책은 최소한의 대역폭을 보장해준다.

WFQ

'CS > 컴퓨터네트워크' 카테고리의 다른 글

NAT & IPv6  (0) 2024.10.01
IP(IPv4),DHCP  (0) 2024.09.28
Network Layer  (0) 2024.09.21
3 & 4 Way Handshake  (0) 2024.09.20
TCP/IP  (0) 2024.09.10