안녕하세요 EnIaC 입니다.


우리가 흔히 네트워크를 논할때 '라우터' 라는것을 많이 언급하곤 하는데요, 오늘은 이 라우터에 대해 알아보는 시간을 갖도록 하겠습니다.


1. Router 란?


[그림 1. 라우터 실제 모습]


우선 라우터란? 네트워크의 중심지에 있으며 라우터는 다수의 네트워크를 서로 연결하는데 사용됩니다. 라우터는 LAN과 WAN 을 서로 연결시키는 역할을 하기도 합니다. 이말은 즉, 우리가 어떤 데이터를 하나 보내게 되면 라우터는 다른 네트워크를 거처 패킷(Packet)을 전송하는 핵심적인 역할을 합니다. 일종의 중간다리로 보셔도 될 것 같습니다.


[그림 1-1. Router 그림 표현 방법]


라우터는 그림으로 표현할때는 [그림 1-1] 처럼 표시합니다. 화살표 모양을 보면 알 수 있듯,데이터들의 중심지를 표현합니다. CCNA 를 공부하시면 좀더 지겹게(?) 볼 수 있는 그림입니다. 앞으로 많이 볼 그림이기도 하니까 친숙해지시는게 좋습니다.



[그림 1-2. Router Network Topology]


[그림 1-2] 는 실제 네트워크 구조 입니다. 라우터가 각 네트워크 마다 중간다리 역할을 하고 있음을 이해할 수 있습니다.


라우터의 또다른 목적은 바로 '최단경로' 찾기 입니다. 우리가 어떤 목표를 향해 걸어가는데 굳이 돌아서 갈 필요가 없지 않습니까? 마찬가지 입니다. 특정 목적지에 도달하기 위한 최단경로를 알려주어 패킷이 가장 짧은 시간 내에, 가장 짧은 거리로 데이터를 '온전하게' 전달해 주는것이 목적입니다. 근데 여기서 '온전하게' 라는 말이 나오는데 궁금하실겁니다. 데이터를 온전하게 전송한다는게 무슨 말일까요? 우리가 네트워크를 통해 데이터를 이동하는걸 보면 사실 데이터가 100% 안전하게 전송된다는 보장은 없습니다. 데이터를 전송하는 과정 중 어떤 한 라우터가 제대로 일을 처리하지 못한다던지 여러 경우를 따졌을때 데이터는 안전하다는 보장이 없습니다. 단, 어느정도 안정적이게 전송되어서 우리가 느끼기에는 문제가 없는 것 처럼 느낄때가 많습니다. 그렇기 때문에 라우터는 데이터를 안전하게 전송하면서 동시에 가장 빠르게 전송하는게 목적 입니다.



2. Router 의 구조


[그림 2. Router 구조]


실제 라우터 내부를 뜯어보면 저렇게 생겼습니다. 네트워크 장비라고 해서 일반 PC 와 크게 다를건 없다는게 눈에 보이실겁니다. 하나씩 정리 해보도록 하겠습니다.


1. CPU

: CPU 는 시스템(System reset, routing, NIC) 같은 운영체제 명령어를 실행하고 연산을 수행


2. RAM

: RAM 은 CPU 에 의해 처리되는데 필요한 명령어와 데이터를 저장한다. RAM 은 다음의 구성요소들을 저장하기 위해 사용된다. RAM 은 휘발성 메모리로써 전원이 차단되거나 재부팅을 하게되면 메모리에 적재된 데이터들은 모두 삭제되게 된다. 그래서 '휘발성' 이라고 하는 것이다. 이러한 이유 때문에 라우터는 ROM 이나 플래시, NVRAM 같은 영구적인 저장 장치를 갖고 있다.


- 운영체제 : 시스코 IOS (Internetwork Operating System)는 부팅되는 동안 RAM 에 복사하게 된다.

- 운영 설정 파일 : 라우터의 IOS 가 현재 사용 중인 설정 명령들을 저장하는 설정 파일이며 몇가지 사항을 제외하고 라우터에 설정된 모든 명령어들은 (Running-config 로 알려진 운영 설정 파일에 저장된다.

- IP 라우팅 테이블 : 이것은 직접 연결된 네트워크와 원격 네트워크들에 대한 정보를 저장하는 파일이다.

- ARP 캐시(Cache) : 일반적으로 Cache 라는 단어를 사용하면 대부분 '임시저장' 이라는 의미를 띕니다. 이 또한 마찬가지 입니다. 직접 연결된 네트워크와 원격 네트워크에 관한 정보를 저장하는 파일입니다.

- 패킷 버퍼링 (Packet Buffering) : 패킷들은 인터페이스 위에서 수신되거나 인터페이스를 떠나기 전에 버퍼에 일시적으로 저장되게 됩니다.


3. ROM

: ROM 은 영구적인 형태의 저장소 입니다. 통합 서킷의 내부에 있는 펌웨어라는 소프트웨어를 사용하며 Bootup Instruction 같은 펌웨어는 일반적으로 수정되거나 업그레이드 될 필요가 없습니다. 또한, ROM 은 라우터의 전원이 꺼지거나 재부팅 하더라도 그 내용이 지워지지 않습니다. 시스코 장비는 다음 사항들을 저장하기 위해 ROM 을 사용합니다.


- 부츠트랩(Bootstrap) 명령어들

- 기본적인 검진 소프트웨어

- 스케일-다운(Scaled-Down) 버전의 IOS


4. 플래시 메모리 (Flash Memory)

: 플래시 메모리는 전기적으로 지우거나 다시 프로그램 할 수 있는 비휘발성 컴퓨터 메모리 입니다. 대표적으로 USB 나 SSD 와 같은 저장 매체를 우리 주변에서 쉽게 사용하는 것을 알 수 있습니다. 플래시는 운영 시스템인 시스코 IOS 를 위한 영구적인 저장소로 사용되게 됩니다. 대부분 시스코 라우터 무델에서 IOS 는 플래시 메모리에 영구적으로 저장되며, 부팅 과정 동안 RAM 으로 복사되어 작업하게 됩니다. 플래시는 SIMM 이나 PC 카드(PCMCIA 카드)로 구성되는데, 이것은 플래시 메모리의 양을 늘리기 위해 업그레이드가 가능합니다.

플래시 메모리는 ROM 과 같이 라우터의 전원이 꺼지거나 재부팅 되더라도, SSD 나 USB 처럼 그 내용이 삭제되거나 변조되지 않습니다.


5. NVRAM

: NVRAM 은 비휘발성 Random-Access 메모리로써 전원이 꺼져도 그 속의 내용이 삭제되지 않습니다. 이러한 점은 정보를 유지하기 위해 지속적인 전원 공급을 필요로 하는 DRAM 같은 대부분의 일반적인 RAM 은 특징과 반대되는 것입니다. NVRAM 은 Starup Configuration 파일을 위한 영구적인 저장소로써, 시수코 IOS 소프트웨어에 의해 사용됩니다. 모든 설정의 변화는 RAM 에 있는 Running-config 파일에 저장되며, 일부 예외적인 것들은 IOS 에 의해 즉시 실행 되기도 합니다. 라우터가 재시작되거나 전원이 꺼졌을 경우 설정의 변화를 저장하려면 Running-config 파일이 NVRAM 에 반드시 저장 되어야 합니다.


6. IOS (Internetwork Operating System)

: 시스코 라우터에서 사용되는 운영 시스템 소프트웨어는 시스코 IOS 로 알려져 있습니다. 다른 컴퓨터의 운영 시스템과 마찬가지로 시스코 IOS 소프트웨어는 라우터의 하드웨어와 소프트웨어 리소스를 관리하는 역할을 합니다. 여기에는 메모리 할당, 프로세스 관리, 보안, 파일 시스템 관리 등이 포함되게 됩니다. 시스템 IOS 는 라우팅, 스위칭, 인터네트워킹, 그리고 통신 기능이 통합된 멀티테스킹 운영 시스템 입니다.


[그림 2-1. 라우터 전면부]


[그립 2-2. 라우터 후면부]




[그림 2-3. Cisco 7600 Router / Public Router]


[그림 2-3] 에서 좌측은 시스코(사)의 7600 라우터이며, 우측은 일반적인 라우터 입니다. 라우터는 그 역할에 따라 3가지로 나눌 수 있습니다.


■ Supervisor Engine

  • 라우터 시스템 전체를 제어/관리하는 두뇌에 해당하며, 이 모듈에 각종 프로토콜(OSPF, BGP, SNMP, Telnet 등등)이 올라가고, 관리자는 이 모듈에 접속하여 CLI를 통해 장비 전체를 관리할 수 있습니다. 
  • 보통 Processing power가 우수한 General CPU(인텔 CPU 같은)가 본 모듈에 탑재되고 그 위에 프로토콜들이 포함된 OS (IOS/JUNOS)가 올라갑니다.
  • Juniper 라우터의 경우 이 모듈을 Routing Engine이라 부릅니다.
■ Line Card
  • 패킷 수신, Table(FIB/ARP) Lookup, QoS 적용(QoS marking, PolicingQueueing), 출력 포트로 패킷 전달을 담당하고(이 모든 과정을 Wire-speed로 처리), 물리적 포트 타입(1GE, 10GE, SONET 등) 및 포트 개수에 따라 다양한 모델명의 Line Card가 존재합니다.
  • 이와 같이 Wire-speed로 패킷을 처리하기 위해 Cisco/Juniper의 경우 자체 제작한 ASIC/NP을 사용하고, 국내의 경우 기술력 부족으로 보통 상용 ASIC(예. Broadcom, Marvell 등)을 사용합니다.
  • Juniper Router의 경우 이 모듈을 PFE(Packet Forwarding Engine)라 부릅니다.

■ Switch Fabric Module

  • Line Card 간에 패킷을 전달하기 위한 가교 역할을 합니다. 예를 들어, 1번 Line Card로 수신된 패킷이 2번 Line Card를 통해 나가야 하는 경우  중간에 이 Switch Fabric Module을 통해 패킷이 전달 됩니다.
  • Juniper의 경우 이 모듈을 Switch Fabric이라 부릅니다.

 

우측 그림은 이번 연재에서 사용하게 될 일반적인 라우터 내부 구조입니다.

 

■ Control Module (Control Plane)

  • Cisco Supervisor Engine/Juniper Routing Engine에 해당하며 Control Plane이라고도 부릅니다.
  • 원래는 수많은 프로토콜과 테이블들이 존재하지만 여기서는 이번 연재를 통해 설명 드릴 부분만 그려 보았습니다. Control Module에 올라가는 프로토콜들을 자세히 보고 싶으시면 여기를 클릭하세요.
  • OSPF Process가 동작하고, OSPF 프로토콜을 통해 OSPF Neighbor(OSPF Router)로 부터 배운 라우팅 정보 중에 Shortest Path에 해당하는 라우팅 엔트리만 RIB(Routing Information Base)에 인스톨됩니다. (OSPF를 통한 라우팅 정보 배우기는 여기여기를 클릭)
  • 또한 Line Card의 포트 타입이 Ethernet이라는 가정하에(요즘 대부분 Ethernet이죠), ARP Table이 존재합니다. ARP Table에는 라우터와 바로 연결된 노드(서버, 라우터)의 "IP 주소에 대한 MAC 주소"가 저장됩니다. (Windows PC에 있는 ARP Table(arp -a로 확인)과 동일한 용도입니다.)

■ Line Card (Data Plane)

  • Data Plane이라고도 부르며,
  • 패킷을 처리하는 가장 핵심적인 부분인 Packet Processor(IBM NP, Broadcom, Marvell 칩이 여기에 해당)를 중심으로 
  • 수신 패킷을 아주 잠시 저장하는 Ingress Packet Buffer와
  • 출력 포트로 패킷을 전달하기 전에 대기하는 장소인 Egress Packet Buffer가 있습니다. Congestion 발생시(예. 1GE 포트로 1Gbps 이상의 패킷들이 나가려고 할 때) Scheduling Algorithm(예. SPQ, WFQ/DWRR)에 따라 우선 순위가 높은 패킷은 빨리 나갈 것이고 그렇지 않은 패킷은 이곳에서 대기하면서 그 순서를 기다리게 됩니다.
  • 그리고 수신 패킷을 어느 포트로 보낼 지 결정하기 위해 참조하는 FIB(Forwarding Information Base), 그리고 ARP Table이 존재합니다.
  • Packet Processor의 기능에 대해서 자세히 알고 싶으시면 여기를 클릭하세요.

■ Switch Module

  • Line Card 간에 패킷을 전달하기 위한 가교 역할을 합니다. 이번 주제가 Switching Fabric 기술이 아니므로 이 정도로...

 

Control Module(Control Plane)의 RIB/ARP Table과 Line Card(Data Plane)의 FIB/ARP Table

 

Control Module의 RIB와 Line Card의 FIB에 저장되는 라우팅 엔트리는 벤더 구현에 따라 약간의 차이가 있는 것으로 알고 있습니다. 여기서는 Cisco 기준으로 설명을 드리면,

  • OSPF LSDB에는 모든 라우팅 경로가 저장되며, (정확히는 OSPF Neighbor로 부터 받은 모든 LSA 정보를 저장)
  • RIB에는 각 목적지로 가기 위한 최단 경로(Shortest Path)에 해당하는 라우팅 엔트리만 인스톨됩니다.
  • 그리고 이 RIB에 있는 엔트리들이 각 Line Card의 FIB로 복사가 됩니다.
  • 즉, {Control Module의 RIB} = {Line Card #1의 FIB} = {Line Card #2의 FIB} =  {Line Card #3의 FIB} = ...
이에 반해 ARP Table은 조금 다릅니다.

각 Line Card에 있는 ARP Table에는 해당 Line Card가 배운 ARP 엔트리(IP & MAC)만 저장이 되고 이 ARP 정보를 다른 Line Card와 공유하지 않습니다 (Line Card #1에서 배운 ARP 엔트리는 다른 Line Card들에서 사용될 필요가 없으므로). 그리고 Control Module의 ARP Table에는 모든 Line Card의 ARP 엔트리 정보가 모두 다 들어 있습니다. ARP 엔트리를 배우는 과정은 다음 시간에 설명 드리겠습니다.

 

따라서 Cisco Router에서 show ip route나 show ip arp 명령으로 확인되는 정보는 바로 Control Module의 RIB와 ARP Table입니다.

 

Ingress, Egress란?

 

Ingress는 Incoming, Egress는 Outgoing의 의미를 가집니다. 

예를 들어 "1번 Line Card의 ge1/4 포트로 수신된 패킷이 2번 Line Card의 ge2/3 포트로 출력된다고 하면" 다음과 같이 부르게 됩니다.

  • 패킷이 수신된 ge1/4를 Ingress Port
  • 패킷이 수신된 Line Card #1을 Ingress Line Card
  • 패킷이 송신된 ge2/3을 Egress Port
  • 패킷이 송신된 Line Card #2를 Egress Line Card
즉, Router의 Line Card와 Port는 패킷의 흐름에 따라 Ingress가 될 수도 있고 Egress가 될 수도 있습니다.




다음 시간에는 라우터 실제 명령어에 대해 다뤄보도록 하겠습니다.


감사합니다.


WRITTEN BY
EnIaC
WhiteHackerGroup 『LockDown』 EnIaC 입니다.

,