스위치
: 패킷을 받아 필요한 곳에만 전달하기 위한 장비
: 아무런 설정 없이도 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
'Computer Science > Network' 카테고리의 다른 글
utf-8과 euc-kr의 차이 (0) | 2022.05.29 |
---|---|
네트워크 인프라 4. 네트워크 계층 장비 (0) | 2022.05.18 |
네트워크 인프라 2. 통신 (0) | 2022.05.11 |
네트워크 인프라 1. 네트워크 기초 (0) | 2022.05.10 |
HTTP Header의 구조와 캐시, 쿠키, 세션 (0) | 2022.05.05 |