태그: LAN

라우터/스위치의 구조

인터넷이라는 거대한 통신망을 구성하고 있는 여러 프로토콜의 동작을 이해하려면 가장 먼저 실제로 데이터를 전송하는 장비들인 라우터와 스위치에 대한 이해가 필요하다.

이 글은 내가 네트워크 공부를 하면서 느꼈던 가장 큰 어려움인 ‘왜?’라는 질문에 대한 답이며, 그 때의 나와 같은 어려움을 겪고 있을 누군가를 위해 쓰여졌다.

라우터의 구성요소에 대해 체계적이고 자세한 정보를 올려주신 ‘넷매니아즈 (http://netmanias.com)’ 에 무한한 감사를 보낸다.


목차

  1. Introduction
  2. 라우터의 하드웨어 구성 요소
  3. 통신 시나리오

 

 

1. Introduction

우리는 네트워크로 전송된 패킷이 스위치와 라우터 사이를 계속 건너가면서 상대방 컴퓨터에 도달한다고 배웠다. 그리고 그 과정에서 ARP/MAC/IP 등등의 프로토콜을 통해 목적지를 식별할 수 있다고 배웠다.
그러나, 난 이것을 듣고 가장 먼저 의문이 들었다.

“클라이언트는 서버의 MAC을 어떻게 알 수 있을까?”, “IP 주소만으로 어떻게 목적지를 찾을 수 있을까?”

아직 캡술화(Encapsulation)와 라우팅 프로토콜에 대한 개념이 제대로 잡혀있지 않았기 때문에 생긴 의문이지만, 이것을 제대로 이해하는 것에는 상당한 시간과 노력이 필요했다.
그리고 실제로 이 기능을 구현한 장비의 작동 로직을 파악함으로써 완전한 이해에 도달할 수 있었다.

이 글은 아무것도 모르는 사람을 위해 작성된 것은 아니다. 이 글을 이해하려면 최소한 Lan Switching에 대한 지식은 갖추고 있어야 할 것이다.

그렇지만, 만약 당신이 지식은 갖고 있지만 스위칭과 라우팅의 명확한 개념을 잡지 못 하고 있다면, 이 글이 많은 도움이 될 것이라고 나는 확신한다.

 

2. 라우터의 하드웨어 구성 요소

Supervisor Engine
라우터의 핵심 기능을 가지고 있는 모듈로, Layer3 이상의 제어를 담당하며, Control Plane으로 불리기도 한다.
보통 범용 CPU 위에 여러 가지 기능을 수행하는 OS(IOS/JUNOS)가 올라가며, RIB/LSDB/ARP Table/MAC Table 등의 정보와, 라우팅, Management 등의 기능을 수행하는 프로세스들이 동작하는 모듈이다.

Line Card
패킷 송수신, QoS 등의 기능을 수행하는 모듈로, 실제 믈리 계층과의 연동을 맡는다. 이를 위해 FIB(Forwarding Information Base), MAC Table 등이 존재하며, 패킷을 실제로 처리하는 Packet Processor와 입/출력 패킷을 임시로 저장하는 Ingress Packet Buffer와 Egress Packet Buffer가 존재한다.
Data Plane으로 불리기도 한다.

Switch Fabric Module
Line Card간에 패킷을 전달하기 위한 가교 역할을 한다. Module 형태로 구현된 장비들의 경우, Line Card의 개수가 여러 개일 수 있는데, (Ex. Fa 0/1, Fa 1/1) 이들 사이의 데이터 전송에 이용된다.

3. 통신 시나리오

Host A가 Router B를 통해 Host C로 IP 패킷을 전송하는 사나리오를 이용해 라우터가 어떻게 동작하는지 알아보자.

Router_Structure

1. Host A가 Host C로 데이터를 보내려고 하지만 상대방의 MAC Address를 모르므로 먼저 ARP Request를 보낸다.

2-1. Router B의 Line Card #0에 Host A가 보낸 ARP Request가 도착한다.

2-2. Line Card #0의 Packet Processor는 ARP Request의 L2 헤더를 검사, 자신의 MAC Address Table에 Host A의 MAC이 존재하지 않는 것을 확인하고, Source MAC Learning Event를 발생시킨다. 이는 Control Plane으로 전달되어 CP의 MAC Address Table에 Host A의 MAC이 기록되고, Line Card #0의 MAC Address Table에도 같은 정보가 기록된다.

2-3. 해당 패킷이 ARP임을 Ether-Type Field(0x0806)을 통해 확인한 Packet Processor는 이 패킷을 Supervisor Engine으로 올려보낸다.

2-4. Line Card #0에서 보내온 ARP Request를 받은 Supervisor Engine은 자신의 ARP Entry를 확인한 뒤, ARP Table에 Host A의 MAC/IP Address와 인터페이스(Fa 0/1)를 기록한다.

2-5. 해당 요청이 ARP Request임을 확인한(ARP Operation Field) Supervisor Engine은 Line Card들에게 이 패킷이 들어온 인터페이스를 제외한 모든 인터페이스로 이 패킷을 Flooding 할 것을 지시한다.

2-6. Fa 0/0을 제외한 다른 모든 인터페이스로 ARP Request가 전송되고, Fa 1/0에 연결되어 있는 Host B가 이 패킷을 수신, ARP Reply를 내보낸다.

2-7. Line Card #1은 Host B의 ARP Reply를 수신, 자신의 MAC Address Table에 Host B의 MAC이 존재하지 않는 것을 확인하고 MAC Address Learning Event를 발생시킨다.

2-8. –MAC Learning, ARP 식별 설명 생략- Supervisor Engine은 자신의 FIB(Fowarding Information Base)를 참조, 이 Unicast 패킷이 Fa 0/0으로 전달되어야 함을 확인, Line Card #0에게 이 패킷을 Fa 0/0으로 내보낼 것을 지시한다.

2-9. Host A가 Host C의 ARP Reply를 수신, 자신의 ARP Table에 Host C의 MAC을 기록한다.

3. Host A와 C는 Ethernet Switching을 통해 통신한다.

CCNA Study – Lan Switching

 

이 글은 Switch에서 L2 Switching이 어떻게 처리되는지를 서술한다.

그리고 Cisco사의 장비를 예시로 설정법을 알아본다.

 

목차

 

 

1. Ethrnet의 역사

우리가 사용하는 Ethernet Frame은 대부분 1983년에 국제 표준이 된 Ethernet II (DIX 2.0)을 따른다. 802.3에서 802.3ab에 이르기까지, Ethernet Frame은 거의 변하지 않은 모습을 보인다. 그런데, DIX 2.0은 어떻게 만들어지게 된 것일까?

Ethernet은 1974년에 ALOHA 네트워크의 CSMA 아키텍쳐에 영감을 받은 Xerox사의 연구자들에 의해 개발되었다. 이들이 만들어낸 프로토콜은 ‘Xerox 시험 네트워크’를 거치면서 실증되었고, 그 이후 Intel과 DEC를 끌어들여 1980년, Data Link layer와 Physical Layer를 정의하고 48비트의 주소와 16비트의 Ether-type 필드를 골지로 한 DIX 1.0 프로토콜을 발표하였다. 그리고 1982년, 이들은 DIX 1.0의 개정판인 DIX 2.0을 발표, 이는 Ethernet II라는 이름으로 알려지게 되고, 이 프로토콜은 IEEE의 근거리 통신용 프로토콜 표준 작업인 802.3에 지대한 영향을 끼쳐, 거의 동일한 프로토콜이 1983년 IEEE 802.3으로 승인된다.

 

2. Ethernet Frame, L2 Switching

OSI 7 Layer중 두번째인 Data Link Layer에서 데이터가 어떻게 처리되는지를 알아보자.

Data Link Layer의 프로토콜 중 하나인 Ethernet에서 데이터의 단위는 Frame이다. 앞으로 Ethernet 데이터를 지칭할 때는 Frame이라고 하겠다.

 

Ethernet Frame의 구조는 다음과 같다.

  1. Preamble (7Byte)
  2. SOF or SFD (1Byte)
  3. Destination MAC Address (48bit)
  4. Source MAC Address (48bit)
  5. Ethernet Type (16bit)
  6. L3 Data
  7. Padding (Optional)
  8. CRC (32bit)
All Rights Reserved ktworld.co.kr
All Rights Reserved ktworld.co.kr

이러한 순서로 구성된 이더넷 프레임은 L3 Protocol Data를 안에 품고 있는 형태가 된다. 이를 캡슐화(Encapsulation)라고 하며, 계층 사이의 독립성을 보장하는 기능을 한다.

이 중 Preamble은 10101010(2)의 나열로 이루어진 신호로, 송/수신측의 비트 동기화에 이용된다. Preamble의 바로 뒤에 오는 10101011(2)이라는 신호를 SOF(Start of Frame)이라고 부르며, 이 뒤에 이더넷 프레임이 온다는 것을 알린다.

또한, Dst-MAC, Src-MAC 다음에 오는 Ethernet Type의 값이 0x600보다 작으면 IEEE 802.2 LLC의 확장인 SNAP PDU가 되고, 이 값이 0x600보다 크면 Ethernet II (DIX 2.0) Frame이 된다. Ethernet II의 Ethernet Type은 이 프레임이 어떠한 상위 계층 프로토콜을 포함하고 있는 것인지를 알려준다.

그 중 대표적인 프로토콜은 다음과 같다.

0x0800 IPv4

0x0806 ARP

0x8100 VLAN Tag

0x8864 PPPoE

여기서 0x8100(VLAN Tag)은 TPID(Tag Protocol Identifier)라고 불리며, 그 뒤에 VLAN(802.1Q)와 QoS(802.1p)정보를 담은 TCI(Tag Control Information)가 온다는 것을 알린다. 그리고 TCI (16bit)가 지난 뒤에 다시 Ethernet Type (16bit)이 나와 L3 프로토콜을 지정한다.

자세한 IEEE 802.1q Frame의 구조는 이 글의 범위를 벗어나므로 여기서는 다루지 않겠다. 앞으로 VLAN Tagging을 공부할 때 다시 확인할 수 있을 것이다.

마지막으로 Padding은 Destination MAC부터 CRC까지의 Ethernet Frame의 크기가 64Byte보다 작을 경우에 추가되는데, 이것은 802.3의 CSMA/CD 알고리즘에서 Collision Detect를 위한 slot time을 보장하기 위한 최소 길이가 64byte인 것에 기인한다. 단, 전송률이 더욱 올라간 Gigabit Ethernet (802.3ab)에서는 최대 케이블 길이를 줄이는 것 대신(10M 이하로 줄어든다!) 프레임의 최소 길이는 64Byte로 유지하되, 512Byte에 미달할 경우 CRC 정보 뒤에 임의의 Symbol을 채워주도록 하였고, 이를 Carrier Extension이라고 한다.

이더넷 프레임의 구조를 알았으니,  실제로 L2 장비에서 이더넷 프레임이 어떻게 처리되는지를 알아보자.

 

1. Host A가 Switch B의 Fa 0/1 인터페이스로 프레임을 보낸다. 이 때 Source MAC Address는 Host A 자신의 MAC을, Destination MAC Address는 Host B의 MAC을 사용한다.

2. Switch B의 Line Card의 Fa 0/1로 이더넷 프레임이 들어온다. Switch B는 자신의 ARP Table을 확인하고 만약 Table에 Source MAC이 존재하지 않으면 Source MAC Learning Event를 발생시켜 Control Module의 ARP Table에 Source MAC을 기록하고, 자신의 ARP Table에도 Source MAC을 기록한다. 이렇게 Dynamic으로 기록된 MAC은 기본값으로 300초간 저장된다.

3. Line Card의 Packet Processor는 이 Ethernet Frame을 열어보고 목적지가 자신의 MAC과 일치하는지 확인한다. 이 경우에는 아니므로 프레임은 Ethernet Switching 되어야 하고, Packet Processor는 Switching을 위해 자신의 ARP Table을 참조한다. 만약 ARP Table에 Dst-MAC이 있으면 라인 카드는 프레임을 그 인터페이스로 포워딩하고, Dst-MAC이 없다면 프레임을 자신의 모든 인터페이스로 플러딩한다. (설명의 편의를 위해 이 스위치의 라인 카드의 수는 하나로 가정한다)

4. Host B가 Host A가 보낸 이더넷 프레임을 수신한다.

3. Cisco Switch에서의 Ethernet 설정

여기서 나오는 명령어들은 Cisco사의 Catalyst 2950 스위치를 기준으로 한다.

interfaceinterface port (range) (port Number)

Global Configuration 모드에서 사용하며, 스위치의 인터페이스 설정 모드로 들어간다. range 명령이나 하이픈(-)을 사용하여 여러 인터페이스를 동시에 설정할 수 있다.

duplexduplex auto/full/half

Interface Configuration 모드의 하위 명령어로, 이 인터페이스 포트가 어떠한 Duplex 모드로 동작할 것인지를 결정한다. 기본값은 auto이며, Interface Config에서 full-duplex, half-duplex를 입력하는 것으로도 동작 모드를 변경할 수 있다.

bandwidthbandwidth number (1 – 10000000)

Interface Configuration 모드의 하위 명령어로, 이 인터페이스에 할당된 Bandwidth를 지정한다. 여기서 유의할 점은 bandwidth 명령어로 설정하는 대역폭은 실제 링크 속도와는 관계가 없다는 것이다. 이 설정값은 EIGRP, OSPF 라우팅 프로토콜이 해당 인터페이스의 Metric 값을 결정하는 것에 영향을 미친다.