320x100
320x100

스위치

: 패킷을 받아 필요한 곳에만 전달하기 위한 장비

: 아무런 설정 없이도 MAC주소를 기반으로 패킷 전달 수행

: VLAN과 STP, 보안 기능, 모니터링 기능 등 수행

 

- VLAN

: 한 대의 장비에서 논리적으로 네트워크를 분리할 수 있는 기능

 

- STP (Spanning Tree Protocol)

: 네트워크의 loop을 방지하기 위한 기능

 

 

 

 

PDU (Protocol Data Unit)

: 네트워크의 각 계층에서 헤더와 데이터를 합친 부분

: 물리 계층 = 비트

: 데이터링크 계층 = 프레임

: 네트워크 계층 = 패킷

: 전송 계층 = 세그먼트

: 세션 계층, 표현 계층, 응용 계층 = 데이터

 

※ 패킷

: 데이터의 전송을 위해 쪼개 놓은 것

 

 

 

스위치의 기능

: 이더넷 네트워크에서 패킷 전송 시 충돌하지 않도록 통신 제어

 > 한 단말이 회선을 점유하여 다른 단말이 대기하는 시간을 없엠

 > 여러 단말이 한꺼번에 통신 가능

: MAC 주소 테이블을 통해 일치하는 MAC주소를 가진 기기로 패킷을 전송

 

- MAC 주소 테이블

: MAC주소와 그에 대한 포트 정보가 저장된 테이블

: 스위치 내부에 저장되며 수시로 갱신

: 테이블에 없는 목적지 MAC 주소를 대상으로한 패킷이 들어올 경우 스위치는 전체 포트로 패킷을 전송

 > 플러딩

 > 어드레스 러닝

 > 포워딩 / 필터링

 

 

 

 

플러딩

: 허브와 같이 스위치가 모든 포트에 패킷을 전송하는 동작

: 스위치는 LAN에서 동작하기 때문에 테이블에 없는 MAC 주소를 플러딩 할 수 있음

 > 해당 MAC 주소를 MAC 주소 테이블에 저장

 

- 비정상적인 플러딩

: ARP 브로드캐스트를 미리 주고 받은 후 데이터를 전달하는 이더넷-TCP/IP 네트워크에서의

  통신의 경우, 스위치가 패킷을 플러딩 하지 않음

: 스위치에게 엉뚱한 MAC 주소를 습득시키거나 스위치의 MAC 주소 테이블을 꽉 차게하여,

  비정상적으로 플러딩을 유도

: ARP Poisoning

 > 패킷의 목적지 MAC 주소를 공격자 자신으로 속여 원하는 통신을 받는 공격 기법

 

 

 

 

어드레스 러닝

: 어떤 포트에 어떤 MAC주소를 가진 장비가 연결되어 있는지 MAC 주소 테이블을 만들고 유지하는 과정

: 패킷이 특정 포트에 들어오면 해당 패킷의 출발지 MAC 주소와 포트번호를 MAC 주소 테이블에 기록

: 출발지의 MAC 주소 정보를 이용해 기록하기 때문에 브로드캐스트나 멀티캐스트에 대한 MAC 주소를 학습할 수 없음

=> LAN 내에서 패킷이 전송될 때 출발지에 대한 정보를 기록

 

※ 사전 정의된 MAC 주소 테이블

: 어드레스 러닝을 통해 스위치 간 통신을 위한 MAC 주소 테이블을 저장

: 인접 포트 정보가 없거나 CPU 혹은 관리 모듈을 지칭하기 위한 용어

: show mac address-table 명령어를 통해 MAC 주소 테이블 확인 가능

 

 

 

 

포워딩 / 필터링

- 필터링

: 목적지 포트를 제외한 다른 포트로는 패킷을 보내지 않는 동작

 

- 포워딩

: 패킷의 도착지 MAC 주소를 확인하고 MAC 주소 테이블과 비교하여 매치되는 포트로 패킷을 전송하는 동작

 

- 포워딩 / 필터링

: 이더넷 TCP/IP 네트워크의 경우 패킷을 만들기전에 통신해야 하는 단말의 MAC 주소를 알아내기 위해

  ARP 브로드캐스트가 먼저 전달 됨

 > 이 과정에서 스위치는 출발지와 목적지의 MAC 주소를 습득하고 유니캐스트를 수행

: 유니캐스트 통신이 시작되면 만들어진 MAC 주소 테이블로 패킷을 포워딩 및 필터링 수행

 

- 에이징 타임

: MAC 테이블과 ARP MAC 테이블이 지워지지 않는 일정한 시간

: MAC 테이블의 에이징 타임이 ARP 에이징 타임보다 길어 플러딩 없이 효율적인 운영 가능

 

 

 

 

VLAN (Virtual Local Area Network)

: 하나의 물리적인 스위치에서 여러 개의 네트워크를 나누어 사용하는 기능

 > 물리적 배치와 상관없이 LAN을 논리적으로 분할 및 구성하는 기술

: VLAN 간의 통신의 경우 서로 다른 네트워크의 통신이기 때문에 네트워크 계층 장비가 필요함

: VLAN을 이용하면 물리적 구성과 상관없이 네트워크를 분리하고 

  다른 층에 있는 단말을 동일한 네트워크로 묶을 수 있음

 

- 기능

: 과도한 브로드캐스트로 인한 성능 저하 방지

: 보안 향상을 위한 차단

: 서비스 성격에 따른 정책 적용

 

- 포트 기반 VLAN

: 스위치를 논리적으로 분할해 사용하는 것이 목적인 VLAN

 > VLAN 개념의 도입 초반, 여러 허브를 묶고 스위치를 분할해 여러 네트워크에 사용하기 위한 목적이었음

: 일반적으로 언급하는 대부분의 VLAN

: 어떤 단말이 접속하든지 스위치의 특정 포트에 VLAN을 할당하면 할당된 VLAN에 속하게 됨

: 스위치의 포트를 기준으로 분할

 

- MAC 기반 VLAN (Dynamic VLAN)

: 스위치에 연결되는 단말의 MAC 주소를 기반으로 VLAN을 할당

: 단말이 연결되면 MAC 주소를 인식한 스위치가 해당 포트를 지정된 VLAN으로 변경

: 단말의 MAC 주소를 기준으로 분할

 

 

 

 

VLAN의 모드와 동작 방식 (Trunk / Access)

: 포트 기반 VLAN에서는 서로 다른 VLAN이 설정된 포트간에는 통신할 수 없음

 > 이 경우 ARP 요청을 할 때 네트워크 계층 장비가 필요

 > VLAN의 개 수 만큼 포트를 연결해야하는 점 존재

: 스위치 포트에 VLAN을 설정하여 네트워크를 분리하면 물리적으로 스위치를 분리 했을 때보다 효율적임

 

- VLAN 태그 (Trunk)

: 하나의 포트에 여러 개의 VLAN을 연결

 > 이러한 포트를 Tagged Port 혹은 Trunk Port라고 함

: 여러 개의 VLAN을 동시에 전송해야하는 태그 포트는 프레임 중간에 VLAN ID 필드를 끼워넣어 전송해야함

 > 패킷을 보낼 때 VLAN ID를 붙이고 수신측에서 이를 제거하면서 해당 VLAN으로 패킷 전송

 

- VLAN을 이용할 때의 스위치의 MAC 테이블

: 다른 VLAN 끼리 통신하지 못하도록 VLAN을 지정하는 필드가 추가됨

: 하나의 스위치에서 VLAN을 이용해 네트워크를 분리하면 VLAN 별로 MAC 주소 테이블이 존재하는 것처럼 동작

: Untagged Port / Access Port

 > 일반적인 포트를 지칭

 > 하나의 네트워크에 대해 전달할 때 사용

: 언태그 포트로 패킷이 들어올 경우 같은 VLAN으로 만 전송

: Tagged Port는 하나의 포트로 여러 네트워크에 전달할 때 사용

 > 태그 포트로 패킷이 들어올 경우 태그된 VLAN으로 패킷을 전송

 

 

※ VLAN 간 통신

: VLAN이 설정된 경우 별도의 네트워크로 분할 된 것이기 때문에

 스위치에 대한 유니캐스트, 멀티캐스트, 브로드캐스트가 불가하기 때문에 네트워크 계층의 장비가 필요

 

 

 

 

STP (Spaning Tree Protocol)

- SPoF (Single Point of Failure)

: 하나의 시스템이나 구성 요소에서 장애가 발생 했을 때 전체 시스템에 동작이 멈추는 요소

: 네트워크 구성시 하나의 스위치를 사용했을 때 발생

 

- Loop

: 시스템에 두 대 이상의 스위치를 구성했을 때 패킷이 네트워크 내에서 무한으로 전송되는 현상

: 이중화 프로토콜을 사용하지 않았거나, 장비 간의 연결이 고리 형태 일 경우 발생

 > 대부분 브로드캐스트 스톰으로 인해 발생

 

- 브로드캐스트 스톰

: 루프 구조의 네트워크에서 브로드캐스트를 발생 시켰을 때 패킷이 무한정 도는 것

: 네트워크 계층의 경우 헤더에 TTL이 있어 일정시간이 지난 후 패킷이 폐기 되는데,

  데이터링크 계층의 경우 TTL이 없기 때문에 네트워크가 마비됨

 

- MAC Address Flapping

: 스위치는 출발지 MAC 주소를 학습하는데, 직접 전달되는 패킷과 스위치를 거쳐 들어간 패킷 간의

  포트가 달라 정상적인 MAC 주소 학습이 불가

: MAC 주소 테이블에는 하나의 포트만 학습할 수 있기 때문에 여러 포트에서 학습될 경우 MAC 테이블이 

  반복 갱신되어 동작하지 않게 됨

 

 

 

 

 

STP (Spanning Tree Protocol)

: loop를 식별하고 포트를 사용하지 못하도록 만들어 예방하는 메커니즘

: 전체적인 스위치의 연결 상황을 파악하기 위해 BPDU라는 프로토콜을 통해

  스위치 간 정보를 전달하고 수집된 정보를 이용해 전체 네트워크 트리를 만들어 루프 구간을 확인

 

- BPDU (Bridge Protocol Data Unit)

: 스위치가 가지고 있는 ID와 고유 값을 정의하고 이를 스위치 끼리 공유 하여 루프를 파악

 

 

 

 

스위치 포트의 상태

: STP가 동작 중인 스위치에서는 스위치 포트에 신규 스위치가 연결될 경우 

  트래픽이 흐르지 않도록 차단 됨

: 이후 BPDU를 통해 네트워크 구조를 학습하고 트래픽이 흐르거나 루프 구조인 경우 차단 상태를 유지

: 차단 상태에서는 스위치 포트의 상태를 아래 4가지 상태로 구분 

 

- Blocking

: 패킷을 차단한 상태로, 상대방의 BPDU를 기다림

: Max age (20초) 동안 BPDU를 받지 못했거나 후순위인 BPDU를 받았을 때 Listening 상태로 변경

: BPDU의 기본 교환 주기는 2초이고 10번을 기다림

 

- Listening

: 해당 포트가 전송 상태로 변경 되는 것을 결정하고 준비하는 단계

: 자신의 BPDU를 상대방 포트에 전송

: 15초 동안 대기

 

- Learning

: 해당 포트를 포워딩 하기로 결정하고 실제로 패킷 포워딩이 일어날 때 

  스위치가 동작하도록 MAC 주소를 학습하는 단계

: 15초 동안 대기

 

- Forwarding

: 패킷을 포워딩 하는 단계

: 정상적인 통신 가능

 

- 결론

: 스위치에 새로운 장치를 붙일 때, 위 과정을 거치고 통신하기 까지 50초 정도가 소요 됨

: 특정 링크가 down 되었을 경우에도 마찬가지로 위 과정을 거침

: 그러나 down된 링크가 스위치의 인터페이스인 경우 토폴로지가 변했음을 

  직접 감지할 수 있어 상태변화가 즉시 일어나기 때문에 30초만에 과정을 거침

 

 

 

 

 

STP의 동작 방식

: STP는 loop을 없에기 위해 역트리구조 (뿌리에서 가지)로 토폴로지를 구

 

- 루트 스위치

: 네트워크 상에서 뿌리가 되는 가장 높은 스위치

: 이 스위치를 통해 모든 BPDU가 교환 됨

: 모든 스위치는 처음에 자신을 루트 스위치로 인식하여 동작

: BPDU를 통해 2초마다 자신이 루트 스위치임을 알리는데, 새로운 스위치가 들어오면 

  서로 교환된 BPDU의 Bridge ID를 비교

 > ID 값이 더 적은 스위치를 루트 스위치로 선정

 > 루트 스위치로 선정된 스위치가 다른 스위치로 BPDU를 전송

 

 

 

 

STP의 전체적인 흐름

1. 루트 스위치 선정

: 전체 네트워크에서 하나의 루트 스위치를 선정

: 루트 스위치는 자신을 루트 스위치로 정의한 BPDU를 옆 스위치로 전달

 

2. 루트가 아닌 스위치 중 하나의 루트 포트 선정

: 루트 브릿지로 가는 경로가 가장 짧은 포트

: 루트 브릿지에서 보낸 BPDU를 받는 포트

 

3. 하나의 세그먼트에 지정(Designated) 포트를 선정

: 스위치와 스위치가 연결되는 포트

: 스위치 간 연결에서 루트 포트로 선정된 경우 반대 쪽을 지정 포트로 선정 

: 스위치 간 연결에서 아무도 루트 포트가 아닌 경우 한 쪽은 지정 포트로,

  다른 한 쪽은 대체 포트로 되어 차단 상태로 전환

 

※ Port fast

: BPDU 대기, 습득 과정 없이 포워딩 상태로 사용할 수 있는 포트

: 네트워크 연결 시 까지 시간 지연이 발생하지 않기 위해 지정

: 해당 포트에 스위치가 접속되면 루프가 생길 수 있기 때문에 BPDU 가드를 도입해야함

 

 

 

 

 

향상된 STP (RSTP / MST)

: TCP 기반 통신의 경우 STP로 인한 포워딩 상태 변경 시간을 기다리지 못함

: 스위치에 여러 VLAN이 있을 경우 VLAN 별로 STP를 계싼하면서 부하 발생 

 

- CST (Common Spanning Tree)

: 일반적인 STP

: VLAN 개수와 상관없이 하나의 스패닝 트리로만 동작

: VLAN이 많더라도 스패닝 트리는 하나만 동작하면 되므로 스위치의 관리 부하가 적음

: Loop이 생기는 토폴로지에서 한개의 포트와 회선만 사용하므로 비효율 발생

: VLAN 마다 최적의 경로가 다르기 때문에 부적절

 

- PVST (Per Vlan Spanning Tree)

: VLAN 마다 다른 스패닝 트리를 정의하는 방법

: VLAN 마다 별도의 경로와 트리를 가짐

: 최적의 경로를 디자인하고 VLAN 마다 별도의 블록 포트를 지정하여 네트워크 로드 셰어링 가능

=> STP 자체가 스위치에 부담을 많이 주는데, 이를 더 악화

 

 

 

 

RSTP

: 대기, 습득 시간까지 2~3초

: 8개의 비트를 모두 활용해 다양한 정보를 주변 스위치와 교환

 > STP의 경우 3가지 정보 (TCN / TCA / BPDU)만 알 수 있음

: 토폴로지 변경이 일어난 스위치 자신이 직접 모든 네트워크에 토폴로지 변경을 전파

 > STP의 경우 말단 스위치에서 루트 브릿지까지 변경 보고를 보내고

    루트 브릿지가 연산을 완료한 뒤 말단 스위치까지 전송

 

- BPDU 플래그

0. Topology Change (TC)

1. proposal

2. Port

3. Port

 > 00 (Unknown)

 > 01 (대체포트 / Alternate Port)

 > 10 (루트포트 / Root Port)

 > 11 (지정포트 / Desigined Port)

4. learning

5. Forwarding

6. Agreement

7. Topology Change Ackowledgement (TCA)

 

 

 

 

MST (Multiple Spanning Tree)

: CST와 PVST의 단점을 보완하기 위해 개발된 스패닝 트리

: 여러 개의 VLAN을 그룹으로 묶고 그룹마다 별도의 스패닝 트리를 적용

: 로드 셰여링 뿐만 아니라 적은 스패닝 트리 사용으로 리소스 최적화 가능

: 스패닝 트리 프로세스 개수를 정의하고 여러 VLAN을 하나의 리전으로 통합

 > 하나의 리전이 하나의 스패닝 트리

 > 리전으로 묶으면 리전 개수 만큼의 스패닝 트리로 수많은 VLAN을 관리할 수 있음

 

 

 

 

 

스패닝 트리 프로토콜의 대안 

: 스패닝 트리 프로토콜의 경우 Loop 예방에 필수적이지만 스위치에 부담이 많음

: 포트의 차단 문제 및 포워딩이 지연되는 단점 존재

: PortFast / UplinkFast / BackboneFast와 같은 기능을 통해 단점을 상쇄할 수 있으나,

  서비스 장애 발생 가능성 존재

 

- Loop 예방을 위한 대체제 프로토콜

: SLPP (Simple Loop Prevention Protocol)

 

: Extream STP

: Loop Guard

 > STP와 다른 메커니즘으로 Loop을 확인

: BPDU Guard

 > BPDU가 인입될 경우 해당 포트를 차단

 

 

 

 

 

 

 

Reference

 

IT 엔지니어를 위한 네트워크 입문 | 고재성 - 교보문고

IT 엔지니어를 위한 네트워크 입문 | 클라우드/데브옵스 시대에 알아야 할 인프라 지식 서버실이 있고, 서버 관리자가 따로 있었던 시대를 지나 클라우드 서비스가 보편화되었다. 클라우드 서비

product.kyobobook.co.kr

 

 

300x250
728x90