Data Center – Network : Switch

표준 문서에는 Bridge 라는 용어도 많이 쓰긴 한데, 최근 네트워크 장비를 부를 때는 스위치라는 용어를

자주 사용하니, 앞으로 스위치로 통일해서 부르겠습니다.

스위치 기본 구조


스위치는 패킷을 한 포트에서 받아서, 다른 포트로 전송해 주는 역할을 합니다.

받은 패킷을 원형 그대로 보내줄 수도 있고, 일부 수정을 해서 보내주기도 합니다.

패킷을 받으면, 다양한 동작이 일어나는데, 그중에서 가장 기본이 되는 것은 패킷의 소스에 해당 하는

MAC 주소를 저장하게 됩니다.

위 그림은 포트1번으로 들어온 패킷에서 소스가 A 인것이 들어 왔고, 자동으로 등록되었다는 의미 입니다.

이런 자료가 만들어 지면, 보통은 300초 동안 보관 하게 되어 있습니다. 이 또한 설정으로 변경될 수는 있습니다.

이런 MAC 주소를 보관 하는 테이블을 MAC 테이블, FDB 테이블 또는 L2 테이블이라고 부릅니다.

DB 와 같은 곳이라, 동적으로 자료를 넣는 것 이외에, 수동으로 생성할 수도 있습니다.

위 그림에서는 포트2에 B라는 MAC 주소를 수동 입력한 모습입니다.

이런 수동 입력 값에서는 보관 시간이란 개념은 보통 없고, 영구적 입니다.

저런 수동 값이 들어가면, 다른 포트로 부터 B라는 소스 MAC이 들어와도 , 동적으로 생성해 주지 않습니다.

특정 포트로만 수신되도록, 또는 특정 포트로만 B라는 MAC 주소가 목적지가 되도록 해주는 역할을 하게 됩니다.


패킷이 수신되면, MAC 주소가 동적으로 생성된다고 했는데, 사실 이것도 특정 포트 상태일 때 가능합니다.

보통 포트가 UP 이 되면, 그 상태에서 상대측 스위치 또는 단말과 제어용 패킷 들을 주고 받습니다.

이런 제어용 패킷을 송수신을 통해서, 해당 포트가 준비 상태가 되어 있을때, 비로서 MAC 주소 저장 기능이

동작하게 됩니다.

스위치를 공부하다 보면, Loop 가 만들어 내는 장애에 대해서 아마도 가장 먼저 공부하게 됩니다.

이 Loop를 차단해주는 유명한 프로토콜이 Spanning Tree 입니다. 이것도 포트 UP이 되면, BPDU라는 패킷들을

주고 받게 됩니다. 패킷을 주고 받는 것과 함께, 포트의 상태를 바꿔주게 되는데, 포트의 상태가 Learning, Forwarding이

되어야 비로서 MAC 주소가 저장 가능해집니다.

위와 같이 1개 스위치에 같은 VLAN 1 내에 4개 포트에 각 4개 장비가 연결되어 있다면, MAC 테이블은 위와

같은 모습으로 기록되어 있을 겁니다. 저렇게 MAC 테이블이 만들어 진 다음 부터는 목적지가 unicast인 패킷이라면,

목적지가 저장된 포트로만, 한 군데로 패킷이 전달됩니다.


루프 (Loop)


위와 같이 스위치 3대를 삼각형 형태로 연결했다고 가정합시다.

그리고, 스위치를 동시에 켭니다. MAC 테이블에는 아무것도 없겠지요.

기본적으로 스위치가 패킷을 수신하게 되면, 3가지 패킷 유형의 경우 같은 Broadcast Domain (VLAN) 에 있는

모든포트로 패킷을 보내게 됩니다.

Broadcast, Multicast, DLF (Unicast 이고, Destination Lookup Failure) 입니다.

이런 속성 때문에, 위와 같은 물리적인 연결이 되는 순간 부터, 무제한 패킷 복사가 발생합니다.

아마도, 저럴때 스위치 앞에 있으면, 미친듯이 LED가 깜빡이는 것을 볼 수 있습니다.


Spanning Tree 프로토콜

스위치의 기본 동작 때문에, Loop 형성 시 패킷 Storm이 발생되는데, 이것을 자동으로 막아내는

전통적인 프로토콜이 Spanning Tree 입니다.

IEEE802.1D, IEEE802.1w, IEEE802.1s 에 각각 기술되어 있습니다.

기본적인 용어들 부터 살펴 봅시다.

Spanning Tree Terminology

Spanning Tree에서는 2가지 제어용 패킷을 사용합니다.

  • BPDU : 보통 2초 마다 주기적으로 발송됩니다. Tree에 ROOT 역할을 하는 스위치로 부터 발송됩니다.
  • TCN : Topology가 바뀌었다고 ROOT 방향으로 알려주는 패킷입니다.

Spanning Tree 내에는 스위치를 나타내는 Bridge ID 와 포트를 나타내는 Port ID가 있습니다.

  • Bridge ID : 8byte로 구성되어 있고, 2byte의 priority와 장비 자체를 표현하는 6byte 공간이 있습니다.
  • Port ID : 총 2byte (16bit)로 구성되어 있는데, 4bit priority와 포트 번호를 표현하는 12bit 공간이 있습니다.

Spanning Tree 에서는 3가지 Timer 를 사용합니다.

  • Hello Timer : 보통 2초가 기본입니다. BPDU 발송 주기가 됩니다.
  • Forward Delay Timer : 보통 15초 입니다. 포트의 상태가 바뀌는 주기가 됩니다.
  • Max Age Timer : BPDU 가 유효하게 취급하는 시간 개념입니다. 보통 20초 입니다.


포트 상태와 역할 (State & Role)


포트에는 5가지 상태가 존재합니다.

  • Disabled : 포트 다운과 같은 개념입니다.
  • Blocking : 포트 업인데, 포트는 차단하고 있습니다. 그러나 BPDU 패킷은 통과 가능합니다.
  • Listening : Blocking과 사실상 같은 개념입니다. 그래서, IEEE 802.1w 같은 Rapid Spanning Tree에서는 없어진 상태입니다.
  • Learning : 일반 패킷을 받고, MAC 주소를 저장을 합니다만, 실제 스위칭은 되지 않습니다.
  • Forwarding : 일반 패킷을 받으면, 정상적인 스위칭 동작을 하는 상태 입니다.

포트에는 4가지 역할이 존재합니다.

  • Designated : 1개 포트가 바라 보는 영역을 Segment 라고 하는데, 거기에서 가장 높은 Priority를 가진 포트 입니다.
  • Root : 해당 Segment 에서 봤을 때, 높은 순위의 BPDU가 들어오고 있으며, 스위치 입장에서 가장 높은 Priority BPDU 수신 포트 입니다.
  • Alternative : 해당 Segment에서 봤을 때, 높은 순위 BPDU가 들어오고 있으나, 가장 높지는 않습니다.
  • Backup : 패킷을 받아 봤는데, 바로 자신이 보낸 BPDU 입니다. 포트 Priroty가 낮습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다