CS/네트워크

[네트워크] Network Layer - (1) 라우터 구조가 뭔데요

sunwoo0111 2025. 5. 22. 00:55

항공대학교 최차봉 교수님의 강의를 참고하여 작성하였습니다.

 

이제 VC는 충분히 알아보았다. 우리의 메인 타겟인 Datagram에 포커스를 맞추어 공부해보자.

 

이번 시간에는 

"라우터 구조만 살펴보자"

오키

 

<라우터>

라우터의 구조(도식화 버전임. 진짜 이렇게 생긴건 아닙니다)

라우터는 기능별로 총 2가지로 나눌 수 있다.

  1. routing processor(라우팅 해서 table을 생성하는 구간) - software
  2. high-seed witching fabric(만들어진 table이 저장되는 구간) - hardware

이렇게 두개로 나누어 진다.

Routing Processor는 소프트웨어로 테이블만 만들면 됨.

하지만 Switching Fabric은 엄청 빠르게 라우팅을 해줘야 하므로(스위칭) 하드웨어로 구성되어있다.

 

<1. Input Port>

라우터에 연결된 Input port

왼쪽 초록이 박스부터 Physical Layer -> Link Layer -> Network Layer 이다.

  1. line termination → physical layer, 비트 신호를 받는다 → 하드웨어적인 전기신호를 소프트웨어적 신호로 변환해 상위레이어로 올린다.
  2. link layer protocol → 소프트웨어로 프로토콜이 동작함. ( 이더넷 )
  3. 저 빨간색이 이번에 중심적으로 볼 Network Layer임.
    1. Match-plus-action → 도착한 packet의 어떤 layer의 header 값이든 bit를 match하고, action을 취한다.
    2. queue 존재.
    3. line speed → 하드웨어 쪽으로 찍 날라가는 속도
    4. 이는 중앙집중식이 아님. 각자 빠르게 달려야 하기 때문.

<2. Switching fabrics>

크게 세가지 타입을 생각해 볼 수 있다. Memory, Bus, Crossbar(Banyan network)

 

1. Memory

Switching fabrics - Memory

컴퓨터로 만든다 → memory ⇒ N개의 input에 대해서 line speed를 유지하려면 x N 을 해야함. 대기줄 1개 vs 대기줄 3개 ⇒ 3개인게 3배 빠르겠지 ⇒ But,, 요즘 잘 안쓰임. 너무 느림. 굉장히 고전적인 방법

 

2. Bus

Switching fabrics - Bus

컴퓨터의 버스? → 버스가 다니는 길을 생각하자.

버스에 데이터가 하나 지나가고있으면 다른 데이터는 못지나감.

bus의 장점 → 모든 경로가 연결되어있어서 어디든 갈 수 있음

bus의 단점 → bus contention → 누가 버스 쓸지 경쟁

 

3. Crossbar

Switching fabrics - Crossbar

버스가 얽히고 섥힌 형태라고 보면 된다.

인풋 n개, 아웃풋 m개

→ n x m 개의 크로스바가 있어야함.

But, 이 방식은 Bus의 확장판,, 결국 그만큼 돈이 많이 듦..

 

그래서 이걸 현실적으로 만든것이 Banyan network 이다.

8 x 8 이라면 원래 64개의 크로스바가 필요한데, 이게 12개로 줄어듬. 위에 그림처럼.

crossbar 쓰면 한번에 파바박 가는데, 이건 좀 느리긴 함 3번걸쳐야하니. 하지만 현실적으로 가격측면에서 이상적임.

 

 

<3. Output ports>

라우터에 연결된 Output ports

이번엔 나가는 쪽이다.

Input과 순서가 반대로 되어있다. 당연하지 뭐 (Network Layer → Link Layer → Physical Layer)

 

1. Datagram Buffer : 큐가 있어서 버퍼링이 이루어짐.

→ 최종 physical layer로 나가는 속도보다 switch fabric에서 Network layer로 오는 속도가 더 빠르다?

     buffering을 해야겠지?

2. Scheduling discipline(Priority scheduling) : 우선순위를 설정한다.

** 망 중립성..? **

 

여기서 Datagram이 유실될 수 있음. by Buffering ( buffer가 다 못담아서 )

Output Port 버퍼링 모습

버퍼링이 되었다? → 딜레이가 생김 → loss가 생길수도 있음. 위의 빨간색 박스가 S.F를 거쳐 Output port로 나왔을때 buffering 되는 모습을 확인할 수 있다.

 

 

그럼 그 버퍼 크기를 어떻게 설정해야할까? 공식이 존재한다!

버퍼 크기 공식

buffer의 크기는 RTT*C(capacity) 로 정함.

**RTT = Round Trip Time ⇒ 네트워크 통신에서 신호가 발신자에서 수신자로 이동하고 다시 돌아오는 데 걸리는 총 시간

만약 N개의 flow가 있다면 (RTT X C)/sqrt(N) 이 buffer의 크기.

 

그런데,,? 이러한 queuing이 Output port 에서만 벌어지는 것은 아니다.

Input Port 에서도 딜레이 발생

인풋 상황에서도 딜레이가 생길 수 있다. 똥차처럼 앞에 패킷이 안가면 그 뒤에껀 가지를 못한다...

이를 Head-Of-the-Line Blocking, 일명 HOL blocking 이라고 한다.

 

지금까지 라우터의 구조를 알아보았다.. 야홋

 

다음 글에는 Network Layer의 Fragmentation에 대해 적어보겠다

 

화이팅