스위치가 어떻게 동작하는지 알아보자
- MAC 주소 기반 패킷 전달
- 논리적 네트워크 분할: VLAN
- 네트워크 루프 방지: STP
패킷? PDU?
각 계층에서 헤더와 데이터를 합친 부분을 PDU라고 한다.
각 계층마다 PDU 명칭이 다르다.
1계층: 비트
2계층: 프레임
3계층: 패킷
4계층: 세그먼트
5~7계층: 데이터
4.1 스위치 장비 동작
스위치는 네트워크에서 통신을 중재하는 장비다.
스위치 없는 이더넷 네트워크에선 경합이 일어나 네트워크 성능 저하가 컸다.
스위치를 사용하면 여러 단말이 한꺼번에 통신할 수 있어 기다리거나 충돌 떄문에 대기하는 문제가 해결되고 네트워크 전체의 통신 혀율성이 향상된다.
스위치의 핵심 역할은 누가 어느 위치에 있는지 파악하고 실제 통신시에 글로 쏘는 것이다.
즉, 스위치가 2계층 주소인 MAC을 이해하고 주소/단말이 위치하는 인터페이스 정보를 매핑한 MAC 주소 테이블을 갖고 있어서 가능하다.
MAC주소 | 포트 |
---|---|
1111:2222:3333 | Eth 1 |
1112:2222:3333 | Eth 2 |
1113:2222:3333 | Eth 3 |
스위치는 전송하려는 패킷의 헤더 안의 2계층 목적지 주소를 확인하고, MAC주소 테이블에서 해당 주소가 어느 포트에 있는지 확인해 해당 패킷을 그 포트로만 전송한다.
스위치는 MAC주소와 포트가 매핑된 MAC주소 테이블이 필요하다.
만약 테이블에 없는 도착지 주소를 가진 패킷이 스위치로 들어오면 스위치는 전체 포트로 패킷을 전송한다.
패킷의 도착지가 테이블에 있으면 해당 주소가 매핑된 포트로만 패킷을 전송하고 다른 포트로는 전송하지 않는다.
즉 스위치는 3가지 동작을 한다.
- 플러딩(Flooding)
- 어드레스 러닝(Address Learning)
- 포워딩/필터링(Forwarding/Filtering)
4.1.1 플러딩
스위치는 부팅하면 아무 정보도 모른다, 이땐 네트워크 통신을 중재하지 못하고 허브처럼 동작한다. (모든 포트로 패킷 전달)
스위치가 허브와 같이 모든 포트로 패킷을 흘리는 동작 방식을 플러딩이라고 한다.
스위치는..
- 패킷이 들어오면 MAC주소를 확인한다.
- 해당 MAC주소가 없으면 모든 포트에 같은 내용의 패킷을 전송한다. (스위치는 LAN에서 동작하므로, 자신이 정보를 갖고 있지 않더라도 어딘가 장비가 있을 것이라 가정하고 이같은 작업을 수행한다)
- 이런 플러딩은 정상적인 동작이지만, 이런 동작이 많아지면 스위치 동작이 아니게 된다.
- 패킷이 스위치에 들어오면 해당 패킷 정보의 MAC 주소를 보고 이를 학습해 MAC 주소 테이블을 만든 후 이를 통해 패킷을 전송한다.
비정상적인 플러딩(Flooding)
스위치가 플러딩 한다는 것은 제 기능을 못한다는 뜻이다
이더넷 - TCP/IP 네트워크에서는 ARP 브로드캐스트를 미리 주고받은 후 데이터가 전달되므로 실제 데이터 보낼 때는 스위치가 패킷을 플러딩하지 않는다.
스위치를 사용하면 필요한 곳에만 패킷을 포워디하므로 주변 통신을 악의적으로 가로채기 힘들어 허브보다 보안에 도움된다.
이런 스위치 기능을 무력화해 주변 통신을 모니터링하는 공격 기법이 사용된다.
스위치에게 엉뚱한 MAC주소를 학습시키거나, 스위치의 MAC 테이블을 꽉 차게해 플러딩을 유도할 수 있다.
아무 이유없이 플러딩한다면(주변 통신을 모니터링 할 수 있다면) 스위치가 정상적으로 동작하지 않거나, 주변에서 공격이 수행되는 상황임을 알아야한다.
이외에도 ARP 포이즈닝 기법을 이용해 모니터링해야 할 IP의 MAC주소가 공격자 자신인 것 처럼 속여 원하는 통신을 받는 방법을 사용하기도 한다.
4.1.2 어드레스 러닝
MAC 주소 테이블은 어느 위치(포트)에 어느 장비(MAC주소)가 있는지에 대한 정보가 저장된 임시 테이블이다.
이를 만들고 유지하는 과정을 어드레스 러닝이라고 한다.
어드레스 러닝
- 패킷의 출발지 MAC 주소 정보를 이용한다.
- 패킷이 특정 포트에 들어올 시 스위치는 패킷의 출발지 MAC주소, 포트 번호를 MAC 주소 테이블에 기록
- 브로드캐스트, 멀티캐스트에 대한 MAC 주소를 학습 불가능 (둘 모두 목적지 MAC 주소 필드에서만 사용하기 때문)
사전 정의된 MAC 주소 테이블
MAC 어드레스 러닝 작업 말고도 사전에 정의된 MAC 주소 정보를 갖는다
패킷 처리하기 위한 주소가 아니라 대부분 스위치간 통신을 위해 사용되는 주소
이런 종류의 주소도 MAC 주소 테이블에서 정보를 확인 할 수 있는데 스위치에서 자체 처리되는 주소는 특정 포트로 내보내는 것이 아니라 스위치에서 자체 처리하므로 인접 포트 정보가 없거나 CPU 혹은 관리 모듈을 지칭하는 용어로 표기된다.
4.1.3 포워딩/필터링
스위치 동작은 단순하다. 도착지 MAC을 확인하고, MAC 주소 테이블을 확인하고, 매치되면 포워딩, 다른 포트로는 필터링한다. 스위치는 이런 포워딩/필터링을 통해 목적지로만 패킷이 전달되도록 동작한다. 스위치는 일반적인 유니캐스트에서만 포워딩/필터링을 수행한다. BUM 트래픽(Broadcast, Unknown Unicast, Multicast)는 동작이 좀 다르다. 어드레스 러닝에서 나왔듯이, 출발지 MAC주소로 브로드캐스트, 멀티캐스트 모두 출발지가 사용되지 않으므로, 이런 트래픽은 전달/필터링 하지 않고 모두 플러팅한다. (언노운 유니캐스트는 MAC주소 테이블에 없는 주소이므로 브로드캐스트같이 플러딩)
이더넷 - TCP/IP 네트워크에서 스위치가 유니캐스트를 플러딩하는 경우는 거의 없다.
패킷을 만들기 전 단말 MAC주소를 알기 위해 ARP 브로드캐스트가 먼저 수행되어야 하므로 유니캐스트보다 ARP 브로드캐스트가 먼저 네트워크에 전달된다.
이 ARP를 이용한 MAC 주소 습득 과정에서 이미 스위치는 출발지/목적지의 MAC 주소를 습득할 수 있고 실제 유니캐스트 통신이 시작되면 이미 만들어진 MAC 주소 테이블로 패킷을 포워딩/필터링한다. ARP, MAC 테이블은 일정 시간동안 지워지지 않는데 이를 에이징 타임(Aging Time)이라 한다. 일반적으로 MAC 테이블의 에이징 타임이 단말의 arp 에이징 타임보다 길어 이더넷 네트워크를 플러딩 없이 효율적으로 운영한다.
4.2 VLAN
가상화는 20년간 IT 트렌드에서 많은 비중을 차지하는 키워드다. 스위치는 오래전부터 VLAN이라는 가상화 기술을 사용했다. 하나의 물리 스위치에서 여러 개의 네트워크를 나누어 사용할 수 있는 VLAN에 어떤 종류가 있고, 특징이 무엇인지 알아본다.
4.2.1 VLAN이란?
VLAN을 물리적 배치와 상관없이 LAN을 논리적으로 분할, 구성하는 기술이다. 회사의 각 부서별로 네트워크를 나눈다고 생각해보자.
과도한 비로드캐스트로 단말들의 성능 저하, 보안, 서비스 성격에 따른 정책 적용 등과 같은 이유로 네트워크가 분리되어야 한다.
VLAN을 나누면, 하나의 장비를 서로 다른 네트워크를 갖도록 논리적으로 분할한 것이므로, 유니캐스트 뿐 아니라 브로드캐스트도 VLAN간에 통신할 수 없다. VLAN 간 통신이 필요하다면 (다른 네트워크 이므로) 3계층 장비가 필요하다.
VLAN을 사용하면 물리적 구성과 상관없이 네트워크를 분리할 수 있고, 물리적으로 다른 층에 있는 단말이 하나의 VLAN을 사용해 동일한 네트워크로 묶을 수 있다(!). 같은 층에서 부서별로 네트워크를 분리하거나 일반 PC, IP 전화기, 무선 단말과 같이 서비스나 단말에 성격에 따라 네트워크를 분리할 수 있고, 분리된 단말간에는 3계층 장비를 통해 통신하게 된다.
4.2.2 VLAN 종류와 특징
VLAN 할당 방식
VLAN 처음 도입시 스위치가 고가고, 여러 허브를 묶는 역할을 스위치가 담당했다. 스위치를 분할 해 여러 네트워크에 사용하는 것이 VLAN 기능을 적용하는 목적이(었)다.
- 포트 기반의 VLAN
스위치를 논리적으로 분할해 사용하는 것이 목적인 VLAN을 포트 기반 VLAN이라고 부르고, 대부분 포트 기반 VLAN이다. 어떤 단말이 접속하든지 스위치의 특정 포트에 VLAN을 할당하면 할당된 VLAN에 속하게 된다.
- MAC주소 기반 VLAN
사용자들이 자리 이동이 많아지며 MAC기반 VLAN이 나왔다. 스위치의 고정 포트에 VLAN이 아닌, 연결되는 단말의 MAC주소를 기억하여 VLAN을 할당한다. 단말에 따라 VLAN이 정보가 바뀔 수도 있어 다이나믹 VLAN이라고도 불린다.
데이터 센터에선 포트 기반 VLAN 구성이 일반적이다. 스마트 오피스 때문에 MAC기반 VLAN 구성이 많아지고 있다.
4.2.3 VLAN 모드(Trunk/Access) 동작 방식
포트 기반 VLAN에선, 서로 다른 VLAN 설정된 포트 간 통신이 불가능하다. (VLAN이 다르다 == 분리된 네트워크 혹은 스위치에 연결됐다)
브로드캐스트로 ARP 리퀘스를 보내려면 3계층 장비를 사용해야한다.
여러개의 VLAN이 존재하는 상황에서 스위치를 서로 연결 해야 하는 경우는, 각 VLAN끼리 통신하려면 VLAN 개수만큼 포트를 연결해야한다. VLAN으로 분할 된 스위치는 물리적인 별도 스위치처럼 취급된다.
그림과 같이 VLAN이 3개라면, 3개의 포트가 필요하다. VLAN별로 포트를 연결하면 장비 간의 연결만으로도 많은 포트가 낭비된다.
VLAN 태그 기능은 하나의 포트에 여러개 VLAN을 함께 전송할 수 있도록 한다. 이 포트를 태그 포트 또는 트렁크 포트라고 한다. 여러 개의 VLAN을 동시에 전송해야 하는 태그 포트는 통신할 때 이더넷 프레임 중간에 VLAN ID 필드를 끼워 넣어 이 정보를 이용한다. 태그 포트로 패킷을 보낼 때는 VLAN ID를 붙이고 수신 측에서는 VLAN ID를 제거하면서 VLAN ID의 VLAN으로 패킷을 보낸다.
스위치 간 VLAN 정보를 보낼 수 있는 포트의 일반적인 용어는 '태그포트'이다. 트렁크 포트는 시스코 명칭이고, 타 제조사에서는 트렁크 포트를 여러개의 포트를 묶어 사용하기 위한 링크 애그리게이션의 의미로 사용한다
태그 포트를 사용하면 VLAN마다 통신하기 위해 필요했던 여러 개의 포트를 하나로 묶어 사용할 수 있다. 태그 포트 기능이 생겨서 MAC 주소 테이블에도 MAC 테이블에 VLAN을 지정하는 필드가 추가된다. 하나의 스위치에 VLAN을 이용해 네트워크를 분리하면 VLANㄹ별로 MAC 주소 테이블이 존재하는 것처럼 동작한다.
일반적인 포트를 언태그 포트 또는 액세스 포트라하고, VLAN정보를 넘겨 여러 VLAN이 한꺼번에 통신하도록 해주는 포트를 태그 포트 또는 트렁크 포트라고 부른다. 태그 포트는 여러개의 VLAN 즉, 여러 네트워크를 하나의 물리적 포트로 전달하는데 사용된다. 그에 반해 언태그 포트는 하나의 VLAN에 속한 경우에만 사용된다. 그래서 일반적으로 태그 포트는 여러 네트워크가 동시에 설정된 스위치 간의 연결에서 사용되며, 하나의 네트워크에 속한 서버의 경우엔 언태그로 설정한다.
언태그로 패킷이 들어오면, 같은 VLAN으로만 패킷을 전송한다. (VLAN10 => VLAN10)
태그 포트로 패킷이 들어오면, 태그를 벗겨내면서 태그된 VLAN쪽으로 패킷을 전송한다. (VLAN? => VLAN10 broadcast)
아... 여기서 오래 이해했는데
태그포트랑 언태그 포트를 오해하기 쉽다.
왜냐하면 vlan-tagging이라는 juniper 社 표현 떄문에.. 다른거다..
여기서 태그 포트는 모든 VLAN에 접근할 수 있도록 하는 마스터 서버를 붙이고 (VLAN끼리 통신이 가능하므로)
언태그 포트는 하나의 VLAN ID를 받은 하나의 네트워크에 속한 서버다 (tagged가 아니다!!!)
스위치 간 연결이 아닌 서버와 연결된 포트도 VMWare의 ESXi와 같은 가상화 서버가 연결될 수 있다. 이땐 여러 VLAN과 통신해야 하는데, 서버와 연결된 스위치에 포트더라도 언태그 포트가 아닌 태그로 설정해야 한다. 물론 태그된 상태이므로 가상화 서버 쪽 인터페이스에도 태그된 상태로 설정해야 한다. 가상화 서버 내부 가상 스위치가 존재하므로 스위치 간 연결로 생각하자.
만약 가상 스위치에 연결된 포트가 언태그라면 어떻게 될까?
가상 서버#1이 VLAN ID 1이고 VLAN ID 1의 다른 서버와 통신한다고 하자.
언태그 포트는 같은 VLAN으로만 전송하기에, VLAN ID 1이 아니게 언태그 됐다면, 통신이 불가능할 것이다.
그러므로 태그 포트로 하여야 가상 스위치와 연결되어 모든 VLAN들과 통신될 것이다.
4.3 STP
SPoF (Single Point of Failure)를 피해야 한다. 하나 고장나면 다 고장나는 시스템은 싫다는 뜻이다.
그래서 네트워크를 이중화, 다중화 한다.
네트워크를 스위치 하나로 구성했을 때 그 스위치에 장애가 발생하면 전체 네트워크에 장애가 발생한다.
그럼 이중화해서 스위치를 두 대 두면 되지 않을 까? 그렇게 디자인하면 패킷이 네트워크를 따라 계속 전송되어 네트워크를 마비시킬 수 있다. 이런 상황을 네트워크 루프(Loop)라고 한다.
4.3.1 루프란?
루프란 말 그대로 네트워크에 연결된 모양이 고리처럼 되돌아 오는 형태로 구성된 상황이다. 루프가 발생하면 네트워크가 마비되고 통신이 안된다.
3가지 큰 이유가 있지만 대부분 브로드캐스트 스톰으로 인한 문제다.
4.3.1.1 브로드캐스트 스톰
루프 구조로 네트워크가 연결된 상태에서 단말에서 브로드캐스트를 발생시키면 스위치는 이 패킷을 패킷이 유입된 포트를 제외한 모든 포트로 플러딩한다. 이 패킷을 받은 다른 스위치는 또 패킷이 유입된 포트를 제외하고 모든 포트로 다시 플러딩한다. 루프 구조 상태에서는 이 패킷이 계속 돌아가는데 이를 브로드캐스트 스톰이라고 한다.
3계층 헤더에는 TTL(Time to Live)이라는 패킷 수명을 갖고 있지만 스위치가 확인하는 2계층 헤더에는 이런 3계층의 TTL과 같은 라이프타임 메커니즘이 없어 루프가 발생하면 패킷이 죽지 않고 계속 살아남아 패킷 하나가 전체 네트워크 대역폭을 차지할 수 있다. 이런 브로드캐스트 스톰은 네트워크의 전체 대역폭을 차지하고 네트워크에 연결된 모든 단말이 브로드캐스트를 처리하기위해 시스템 리소스를 사용하면서 스위치-네트워크에 연결된 단말 간 통신이 거의 불가능한 상태가 된다.
- 네트워크에 접속된 단말의 속도가 느려진다 (CPU 사용률)
- 네트워크 접속 속도가 느려진다(거의 통신 불가능)
- 네트워크에 설치된 모든 스위치에 모든 LED들이 동시에 빠른 속도로 깜빡인다.
케이블을 제거하기 전까지 네트워크가 마비된 것 같은 상태가 지속된다.
4.3.1.2 스위치 MAC 러닝 중복 문제
루프 구조 상태에서는 브로드캐스트뿐 아니라 유니캐스트도 문제를 일으킨다. 같은 패킷이 루프를 돌아 도착지 쪽에 중복 수신되는 혼란을 일으키기도 하지만 중간에 있는 스위치에서도 MAC 러닝 문제가 생긴다. 스위치는 출발지 MAC 주소를 학습하는데, 직접 전달되는 패킷과 스위치를 돌아 들어간 패킷 간의 포트가 달라 MAC 주소를 정상적으로 학습할 수 없다. 스위치 MAC 주소 테이블에서는 하나의 MAC 주소에 대해 하나의 포트만 학습할 수 있으므로 동일한 MAC 주소가 여러 포트에서 학습되면, MAC 테이블이 반복 갱신되어 정상적으로 동작하지 않는다. 이 현상을 MAC 어드레스 플레핑이라고 한다.
- AA에서 출발한 패킷이 스위치 C에서 A, B 스위치에 전달된다.
- A는 이 패킷을 포워딩해 스위치 B로 보낸다.
즉, 스위치 B는 eth1
, eth2
포트에서 AA주소를 반복적으로 습득해 MAC 어드래스 플래핑이 일어난다.
이런 현상이 발생하면 스위치에서 학습된 주소의 포트가 계속 변경되므로 스위치가 정상적으로 동작하지 못하고 패킷을 플러딩한다. 이런 현상을 예방하기 위해 스위치 설정에 따라 경고를 하거나, 학습하지 않도록 한다.
네트워크 루프가 발생할 경우를 막기위해, 미리 조치해야한다. 루프 구성 포트중 하나의 포트만 사용하지 못하게 셧다운해도 루프를 예방할 수 있다. 하지만 네트워크의 SPoF를 예방하기 위해 스위치를 2개 이상 디자인하고, 수동으로 루프를 찾아 강제로 사용하지 못하게 하는 방법은 이상하다. 사용자가 적극적으로 개입하는 것은 네트워크 장애에 적절히 대응할 수 없다. 이런 이유로 루프를 자동 감지해 포트를 차단, 장애 때문에 우회로가 없을 때 차단된 포트를 스위치 스스로 다시 풀어주는 스패닝 트리 프로토콜이 개발됐다.
4.3.2 STP란?
스패닝 트리 프로토콜
- 루프를 확인하고 적절히 포트를 사용하지 못하게 만들어 루프를 예방
- 뿌리부터 가지까지 루프가 생기지 않도록 유지하는 것이 목적
그럼 스위치는 어떻게 연결되는데?
스위치간 정보 전달 방법은 BPDU(Bridge Protocol Data Unit)을 이용
스위치 간 정보를 전달하고, 전체 네트워크 트리를 만들어 루프 구간을 확인
BPDU에는 스위치가 갖고 있는 ID와 같은 고유값이 들어가고 이런 정보들이 스위치간 서로 교환한다.
루프 지점을 확인하면 트래픽이 통과히지 못하도록 차단하여 루프를 예방한다.
4.3.2.1. 스위치 포트의 상태 및 변경 과정
스패닝 트리 프로토콜이 동작 중인 스위치에서는 루프를 막기 위해 스위치 포트에 신규 스위치가 연결되면 바로 트래픽이 흐르지 않도록 차단한다. 그리고 해당 포트로 트래픽이 흘러도 되는지 확인하기 위해 BPDU를 기다려 학습하고 구조를 파악한 후 트래픽을 흘리고, 루프 구조면 차단한다.
다음 스위치의 포트는 네가지 상태를 갖는다.
- Blocking
- 패킷 데이터를 차단하고, 상대방이 보내는 BPDU를 기다린다.
- 총 20초인 Max Age 기간 동안 상대방 스위치에서 BPDU를 받지 못했거나 후순위 BPDU를 받았을 때 리스닝 상태로 변경한다.
- BPDU 기본 교환 주기는 2초이고 10번의 BPDU를 기다린다.
- Listening
- 해당 포트가 전송 상태로 변경되는 것을 결정/준비하는 단계, 자신의 BPDU 정보를 상대방에게 전송한다.
- 총 15초 대기한다
- Learning
- 러닝 상태는 이미 해당 포트를 포워딩하기로 결정하고 실제로 패킷 포워딩이 일어날 때 스위치가 곧바로 동작하도록 MAC 주소를 러닝하는 단계다.
- 총 15초 대기한다.
- Forwarding
- 패킷을 포워딩한다. 정상 통신 가능
즉, 스위치에 신규 장비를 붙이면 통신하는데 약 50초(!) 가 소요된다. 스위치는 루프를 예방하기 위해 매우 방어적으로 동작한다.
새로 연결될 단말이 스위치일 수 있어 BPDU를 일정 시간 이상 기다려 스위치 여부를 파악한다. 이로 인해 스위치를 연결하는 경우 뿐만 아니라 일반 단말을 연결하더라도 동일한 시간이 필요하다.
이중화된 링크 절체(전환)도 STP의 동작 순서를 거친다. 특정 링크가 다운되어 블로킹 포트가 포워딩되기 위해 초기와 마찬가지로 20초 동안 Max Age를 거쳐 총 50초 후 포워딩 상태로 변경된다.하지만 다운된 링크가 자신의 인터페이스인 경우, 토폴로지가 변했음을 직접 감지할 수 있어 Max Age를 거치지 않고, 리스닝부터 STP 상태 변화가 즉시 이루어지므로 30초 만에 절체된다.
<그림>
STP가 활성화된 경우, 스위치 포트는 곧바로 포워딩 상태가 되지 않는다. 이로 인해 다양한 장애가 발생하거나 스위치 이상으로 생각되는 경우가 많다. 특히 OS가 DHCP 네트워크에 접속할 때, 부팅 단계에서 IP를 요청하지만, 스위치 포트가 포워딩 상태가 되지 않아 IP를 정상적으로 할당받지 못하는 경우가 많다.
4.3.2.2 STP 동작 방식
STP는 루프를 없애기 위해 뿌리->가지로 토폴로지를 구성한다.
네트워크상에서 뿌리가 되는 가장 높은 스위치(루트 스위치)를 선출하고 모든 BPDU가 그 스위치를 통해 교환되도록 한다.
모든 스위치는 자신을 루트 스위치로 인식해 동작한다. BDPU를 통해 2초마다 자신이 루트 스위치임을 광고하는데 새로운 스위치가 들어오면 서로 교환된 BPDU에 들어있는 브릿지 ID값을 비교한다. 브릿지 ID 값이 더 작은 스위치를 루트 스위치로 선정하고, 루트 스위치로 선정된 스위치가 BDPU를 다른 스위치 쪽으로 보낸다.
스패닝 트리 프로토콜은 다음과 같이 동작한다.
- 하나의 루트 스위치를 선정한다.
- 전체 네트워크에 하나의 루트 스위치를 선정한다
- 자신을 전체 네트워크의 대표 스위치로 적은 BPDU를 옆 스위치로 전달한다.
- 루트가 아닌 스위치 중 하나의 루트 포트를 선정한다.
- 루트 브릿지로 가는, 경로가 가장 짧은 포트를 루트 포트라고 한다.
- 루트 브릿지에서 보낸 BPDU를 받는 포트다.
- 하나의 세그먼트에 하나의 지정(Designated) 포트를 선정한다.
- 스위치와 스위치가 연결되는 포트는 하나의 지정 포트를 선정한다
- 스위치 간의 연결에서 이미 루트 포트로 선정된 경우, 반대쪽이 지정 포트로 선정되어 양쪽 모두 포워딩 상태가 된다.
- 스위치 간의 연결에서 아무도 루트 포트가 아닐 경우, 한쪽은 지정 포트로 선정되고 다른 한쪽은 대체 포트(Alternate, Non-Designated)가 되어 차단 상태가 된다.
- BPDU가 전달되는 포트이다.
스패닝 트리 포토콜 사용 시 대안 (Port Fast)
스위치에 새로운 케이블이 연결되면 BPDU가 들어오는지 모니터링 하며 스위치인지 먼저 확인한다. (바로 포워딩 X)
하지만 스위치가 아닌 PC, 서버라면 이런 메커니즘이 없거나, 더 빠른 시간 안에 포워딩 상태로 변해야 한다.
해당 포트를 포트 패스트로 설정하면, BPDU 대기, 습득 과정 없이 곧바로 포트 포워딩 상태로 포트를 사용할 수 있다.
포트 패스트를 설정한 포트에 스위치가 접속되면 루프가 생길 수 있으므로, 해당 포트에 BDPU가 들어오자 마자 포트를 차단하는 BPDU 가드 같은 기술이 함께 필요하다.
4.3.3 향상된 STP(RSTP, MST)
STP는 느리다. ( 네트워크에 모든 스위치까지 BPDU가 전달되는 시간을 고려) 그러다보니 30~50초 걸리는데, TCP 기반 APP이 30초를 기다리질 못한다. 또한 스위치에 VLAN이 여러개 있다면, 각 VLAN별로 스패닝 트리 프로토콜을 계산하면서 부하가 생긴다.
4.3.3.1 RSTP
STP는 이중화된 스위치 경로 중 정상적 경로에 문제가 발생할 경우 백업 경로를 활성화 하는데 30
50초가 걸린다. 이렇게 백업경로 활성화가 너무 오래 걸려 RSTP가 나왔다. RSTP는 2
3초로 절체시간이 짧아 일반적인 TCP 애플리케이션이 세션을 유자할수 있도록 한다. 기본적인 구성과 동작 방식은 STP와 같지만 일반 토폴로지 변경과 관련된 두 가지 메시지(TCN, TCA, BPDU)만 있지만 RSTP는 8개 비트를 ㅗ두 활용해 다양한 정보를 주위 스위치와 주고받을 수 있다.
기존 STP에서는 토폴로지가 변경되면 말단 스위치에서 루트 브릿지 브릿지가 그에 대한 연산을 다시 완료 하고 이후 변경된 토폴로지 정보를 말단 스위치 까지 보내는 과정을 거쳤다. 추가로 이런 정보가 네트워크에 있는 모든 스위치 까지 전파되는 예비 시간까지 고려해야 하므로 정보를 확정하는 데 오랜 시간이 걸렸다.
하지만 RSTP에서는 토폴로지 변경이 일어난 스위치 자신이 모든 네트워크에 변경을 직접 전파할 수 있다.
RSTP는 다양한 메시지, 대체포트 개념, 토폴로지 변경 전달 방식의 변화로 알반 STP보다 빠르게 토폴로지 변경을 감지, 복구할 수 있다. 실제로 RSTP는 불과 2~3초 안에 장애 복구가 가능 하므로, 장애가 발생해 경로가 절체 되더라도 애플리케이션 세션이 끊기지 않아 보다 안정적으로 네트워크를 운용하는데 도움이 된다.
4.3.3.2 MST
일반 스패닝 트리 프로토콜은 CST(Common Spanning Tree)라거 부른다. vlan 개수와 상관없이 스패닝 트리 한 개만 동작하게 된다. 이 경우 VLAN이 많더라도, 스패닝 트리는 한 개만 동작하면 되므로 스위치 관리 부하가 적다. 하지만 CST는 루프가 생기는 토폴로지에서 한 개의 포트와 회선만 활성화 되므로 자원을 효율적으로 사용하는게 불가능하다. 또한 VLAN 마다 최적경로가 다를 수도 있는데 포트 하나만 사용하다 보니 멀리 돌아 통신해야할 경우도 생긴다.
이를 해결하기 위해 PVST(Per Vlan Spanning Tree)가 나왔고, VLAN마다 다른 스패닝 트리 프로세스가 동작하므로 VLAN마다 별도의 경로와 트리를 만들 수 있게 됐다. 이렇게 해서 최적의 경로를 디자인 하고, VLAN마다 별도의 블록 포트를 지정해 네트워크 로드를 쉐어링 하도록 구성할 수 있게 됐다.
하지만 SPT 자체가 2초마다 교환하면서 스위치에 부담을 많이 주는 프로토콜이고, PVST는 모든 VLAN마다 별도의 스패닝 트리를 유지해야 하므로 더 많은 부담이 됐다. 그래서 CST, PVST의 단점을 보안하기 위해 MST가 등장했다.
MST는 단순하게 동작한다. 여러개의 VLAN을 그룹으로 묶고 그룹마다 별도의 스패닝 트리가 동작한다. 이 경우 PVST보다 훨씬 적은 수의 SPT 프로세스가 만들어 진다. 리전 하나가 스패닝 트리가 된다. 예를 들어 11~50번 VLAN과 101~150번 을 묶는다.
SPT의 대안
- SLPP
- Etream STP
- LOOP GUARD
- BPDU GUARD
스위치 구조와 스위치에 IP 주소가 할당된 이유
스위치는 스위치 관리용 컨트롤 플레인과 패킷을 포워딩 하는 데이터 플레인으로 크게 나뉜다. 앞에서 설명한 STP나 스위치 관리용 텔넷, STP, SSH, 웹과 같은 서비스는 컨트롤 플레인에서 수행된다. 스위치는 IP 주소를 알 필요 없지만 일정 이상 큰 네트워크 에서는 대부분 IP가 할당된다.
'IT > 네트워크' 카테고리의 다른 글
3. 네트워크 통신하기 (0) | 2023.08.02 |
---|---|
2. 네트워크 연결과 구성 요소 (1) | 2023.07.12 |
1. 네트워크 시작하기 (0) | 2023.07.06 |