스위치
2계층 주소인 MAC 주소를 기반으로 동작하며, 네트워크 중간에서 패킷을 받아 필요한 곳에만 보내주는 네트워크 중재자 역할을 한다.
- 네트워크 통신 중재.
- 패킷을 동시에 여러 장비가 서로 간섭 없이 통신하도록 도와주는 장비.
- 여러 단말이 한꺼번에 통신 가능해, 통신을 위해 기다리거나 충돌 때문에 대기하는 문제가 해결됨. → 네트워크 전체의 통신 효율성 향상.
게다가
- 한 대의 장비에서 논리적으로 네트워크를 분리하는 VLAN
- 네트워크 루프 방지 스패닝 트리 프로토콜 STP
💡 각 계층에서 헤더+데이터를 PDU 라고 부르며 계층마다 PDU를 부르는 이름이 다르다. 2계층의 PDU 명칭은 사실 프레임 이다. 하지만 데이터를 쪼개 전달하는 데이터 전체를 패킷이라 통칭하므로, 편의상 패킷으로 부른다.
동작
스위치의 핵심 역할은 누가 어느 위치에 있는지 파악하고 통신이 시작되면 자신이 알고있는 위치로 패킷을 정확히 전송하는 것이다.
- MAC 주소 + 단말 위치하는 인터페이스 정보를 매핑한 MAC 주소 테이블을 갖고 있어서 패킷 중계 가능!
- 패킷 헤더 안의 2계층 목적지 주소를 확인
- MAC 주소 테이블에서 해당 주소가 어떤 포트에 있는지 확인
- 해당 패킷을 그 포트로만 전송.
- 만약 테이블에 없는 도착지 주소를 가진 패킷이 오면?
- 전체 포트로 패킷 전송
플러딩
스위치를 부팅하면 네트워크 관련 정보가 아무 것도 없다. 그래서 허브처럼 모든 포트로 패킷을 전달한다.
패킷이 들어오면..
- 도착지 MAC 주소 확인.
- 자기가 갖고 있는 MAC 주소 테이블에서 해당 MAC 주소 있는지 확인.
- MAC 주소 테이블에 매칭되는 목적지 MAC 주소가 없으면?
- 모든 포트에 같은 내용의 패킷 전송.
→ 스위치는 LAN 에서 동작하므로 자신이 정보를 갖고 있지 않아도 어딘가에 장비가 있을 수도 있다고 가정하기 때문.
대신 이런 플러딩 동작을 많이 하면 스위치가 제 역할을 못하게 됨.. 그래서 패킷이 스위치에 들어오면 해당 패킷 정보의 MAC 주소를 보고 이를 학습해 MAC 주소 테이블을 만든 후 이를 통해 패킷을 전송함.
비정상적인 플러딩
- 사실 이더넷-TCP/IP 에서는 ARP 브로드캐스트를 미리 주고 받은 후 데이터가 전달.
- 실제 데이터를 보내고 받을 때는 스위치가 패킷을 플러딩 X
- 스위치를 사용하면 필요한 곳에만 패킷을 포워딩.
- 주변 통신을 악의적으로 가로채기 힘들어 허브에 비해 보안에 도움.
- 이런 스위치 기능을 무력화해 주변 통신을 모니터링하는 공격 기법이 있기도..
- 아무 이유 없이 스위치가 패킷을 플러딩하면 확인해봐야함!
- ARP 포이즈닝 기법을 이용해 모니터링 해야 할 IP의 MAC 주소가 공격자 자신인 것처럼 속여 원하는 패킷을 받는 방법을 사용하기도..
어드레스 러닝
MAC 주소 테이블을 만들고 유지하는 과정.
- 패킷이 특정 포트에 들어오면 해당 패킷의 출발지 MAC 주소 정보를 이용,
- 출발지 MAC 주소, 포트 번호를 MAC 주소 테이블에 기록한다.
- 브로드캐스트나 멀티캐스트에 대한 MAC 주소 학습 불가.
- 두 가지 모두 목적지 MAC 주소 필드에서만 사용.
- 어드레스 러닝은 출발지 MAC 주소를 이용
💡 사전의 미리 정의된 MAC 주소 정보를 가지고 있기도 한다. (주로 스위치 간 통신을 위해 사용하는 주소) 특정 포트에 내보내지 않고 스위치 자체에서 처리하므로 인접 포트 정보가 없거나, CPU 혹은 관리 모듈을 지칭하는 용어로 표기.
포워딩/필터링
*포워딩 → 도착지 MAC 주소 확인, 자신의 MAC 테이블과 맞으면 해당 포트로 포워딩 필터링 → 다른 포트로는 패킷 송신 X*
스위치는 포워딩과 필터링을 통해 목적지로만 패킷이 전달되도록 동작한다.
- 여러 포트에서 동시에 수행 가능.
- 통신이 다른 포트에 영향 X → 다른 포트에서 기존 통신 작업으로부터 독립적.
- 일반적인 유니캐스트에 대해서만 포워딩 필터링
- 브로드캐스트, 언노운 유니캐스트, 멀티캐스트는 출발지가 사용되지 않으므로 전부 플러딩.
LAN 에서의 ARP - 스위치 동작
- 이더넷 - TCP/IP 네트워크에서는 스위치가 유니캐스트를 플러딩 하는 경우는 거의 없음.
- 패킷을 만들기 전 소켓 통신에서 MAC 주소를 알아내기 위해 ARP 브로드캐스트를 먼저 수행.
- 유니캐스트보다 ARP 브로드캐스트가 먼저 네트워크에 전달.
- 일반적으로 MAC 테이블의 에이징 타임이 단말의 ARP 에이징 타임보다 길어, 이더넷 네트워크를 플러딩 없이 효율적으로 운영 가능.
- MAC 에이징타임 > ARP 에이징 타임
에이징 타임
ARP 와 MAC 테이블이 유지되는 시간.
VLAN
하나의 물리 스위치에서 여러 개의 네트워크를 나누어 사용할 수 있는 가상화 기술. LAN을 논리적으로 분할, 구성.
- 하나의 장비를 서로 다른 네트워크를 갖도록 논리적으로 분리한 것.
- 물리적 구성과 상관 없이 네트워크를 분리.
- 물리적으로 다른 층에 있는 단말이 하나의 VLAN을 사용해 동일한 네트워크로 묶기도 가능.
- VLAN 간의 통신은 서로 다른 네트워크 간의 통신이므로 3계층 장비가 필요하다..!
종류와 특징
- 포트기반 → 스위치를 논리적으로 분할해 사용할 목적
- MAC 주소 기반 → 스위치 연결되는 단말 MAC 주소를 기반으로 VLAN 할당.
- 사용자의 자리 이동이 많아지므로 단말기 MAC 주소에 고정
💡 보통 포트 기반 VLAN 으로 많이 사용하긴 하지만 최근에는 MAC 주소 기반 구성도 많이 사용한다. 일단 여기서는 포트 기반 VLAN 설명을 한다..!
(Trunk/Access) 동작 방식
VLAN 으로 분할된 스위치는 물리적으로 별도의 스위치로 취급한다.그래서 포트 기반 VLAN 에서는 각 VLAN 갯수만큼 포트를 연결해야 한다. VLAN 을 많이 사용하는 중/대형 네트워크에서는 많은 포트가 낭비되는데…
해결법
VLAN 태그 기능 , 하나의 포트에 여러 개의 VLAN 을 함께 전송할 수 있게 한다.
- 이 포트를 Trunk , Tagged 포트라고 한다.
- 일반적인 포트는 언태그포트 또는 액세스포트 라고 한다.
- 통신할 때 이더넷 프레임 중간에 VLAN ID 라는 필드를 끼워 넣어 이 정보를 이용한다.
- 태그 포트로 패킷을 보낼 때 VLAN ID 를 붙이고, 수신 측에서는 VLAN ID 를 제거하는 동시에 VLAN ID 의 VLAN 으로 패킷을 보낸다.
스위치가 아니라 서버 연결 포트도 태그 포트로 설정해야 한다?
- VM ware 같은 가상화 서버와 연결 될 때는 여러 VLAN 과 통신해야 할 수 있음.
- 이 경우에도 역시 태그 포트로 설정함.
STP
를 알려면 먼저 SPoF 에 대해 알아봐야 한다.
SPoF
단일 장애점, 하나의 시스템이나 구성 요소에서 고장이 발생했을 때 전체 시스템의 작동이 멈추는 요소.
- SPoF 를 피하기 위해 두 대 이상의 스위치로 디자인하면 패킷이 네트워크를 따라 계속 전송되므로 네트워크를 마비시킬 수 있다. → 네트워크 루프 발생.
- 두 장비간에만 왔다갔다 함..
루프
네트워크에 연결 된 모양이 고리처럼 되돌아오는 형태로 구성된 상황.
브로드캐스트 스톰
루프 구조에서 브로드캐스트를 발생시키면 발생하는 현상. 스위치가 패킷이 유입된 포트를 제외한 모든 포트로 플러딩하는데 같이 연결된 스위치끼리 반복해서 계속 서로에게 패킷을 플러딩한다.
- 2계층 헤더에는 3계층의 TTL 과 같은 라이프타임 매커니즘이 없어 루프가 발생하면 패킷이 죽지 않고 계속 살아남아 패킷 하나가 전체 네트워크 대역폭을 차지할 수 있다.
브로드캐스트 스톰이 발생하면..
- 네트워크에 접속된 단말 속도가 느려짐(많은 브로드캐스트를 처리해야해서 CPU 사용률 증가)
- 네트워크 접속 속도 느려짐(거의 통신 불가능)
- 네트워크에 설치된 스위치에 모든 LED 들이 동시에 빠른 속도로 깜빡임.
MAC 어드레스 플래핑
스위치 MAC 러닝 중복 문제, 루프 구조에서 유니캐스트가 일어나면 발생.
- 다른 스위치를 거쳤기 때문에 직접 전달되는 패킷과 스위치를 돌아 들어간 패킷 간의 포트가 다름.
- 동일한 MAC 주소가 여러 포트에서 학습되면 MAC 테이블이 반복 갱신되어 동작하지 않음.
- MAC 주소 정상 학습 불가.
루프가 발생할 경우
- 루프 구성 포트 중 하나의 포트만 사용하지 못하도록 셧다운 한다…지만
- 스위치를 두개 이상 디자인했는데 다시 수동으로 루프를 찾아 강제로 사용하지 못하게 하는 건 바람직하지 않음.
- 수동으로 다시 사용하게 하는 것도 바람직하지 않음.
- 그래서 스패닝 트리 프로토콜을 개발했다.
STP
스패닝 트리 프로토콜, 루프를 확인하고 적절히 포트를 사용하지 못하게 만들어 루프를 예방함.
STP 를 이용해 루프를 예방하려면?
- 전체 스위치가 어떻게 연결되는지 알아야 한다.
- 연결 상황을 파악하려면 스위치 간에 정보를 전달하는 방법이 필요하다.
- BPDU 프로토콜을 통해 스위치 간에 정보를 전달해 정보를 수집하고 네트워크 트리를 만들어 루프 구간을 확보한다.
BPDU
- 스위치가 갖고 있는 ID 같은 고유 값 보유
- 이런 정보들이 스위치 간에 교환되며 루프 파악 가능
스위치 포트 상태 및 변경 과정
STP 동작 중인 스위치에서는..
- 루프를 막기 위해 스위치 포트에 신규 스위치가 연결되면 바로 트래픽이 흐르지 않도록 차단.
- BPDU 를 기다려 학습, 해당 포트로 트래픽이 흘러도 되는지 확인.
- 루프 구조라면 그대로 차단, 아니라면 트래픽 흘림.
- 일반 단말기도 BPDU 를 기다리는 동일한 시간이 필요하다.
Blocking
- 패킷 데이터를 차단한 상태, 상대방이 보내는 BPDU 기다림
Listening
- 해당 포트가 전송 상태로 변경되는 것을 결정하고 준비
Learning
- 해당 포트를 포워딩하기로 결정하고 MAC 주소를 러닝
Forwarding
- 패킷 포워딩하는 단계, 정상적인 통신 가능.
💡 STP 가 활성화 되어있다면 스위치는 곧바로 포워딩 상태가 되지 않는다. BPDU 를 기다리는 시간이 필요하다. 이로 인해 다양한 장애가 발생하거나 스위치 이상으로 생각하는 경우가 많다.
STP 동작 방식
루프를 없애기 위해 나무가 뿌리 → 가지로 뻗어나가는 것처럼 토폴로지를 구성한다.
- 루트 스위치 → 네트워크상에서 뿌리가 되는 가장 높은 스위치를 선출하고 그 스위치를 통해 모든 BPDU 가 교환되도록 한다.
- 브릿지 ID 값이 더 적은 스위치를 루트 스위치로 선정하고 루트 스위치가 BPDU 를 다른 스위치로 보낸다.
- 루트 스위치 선정.
- BPDU 를 옆 스위치로 전달함.
- 루트가 아닌 스위치 중 하나의 루트 포트를 선정.
- 루트 포트 → 루트 스위치로 가는 경로가 가장 짧은 포트.
- 루트 브릿지에서 보낸 BPDU 를 받는 포트
- 하나의 세그먼트에 지정 포트를 선정.
- 스위치 ↔ 스위치 연결 포트는 하나의 지정 포트를 선정함.
- 이미 루트 포트로 선정되었으면, 반대쪽은 지정 포트가 되어 양쪽 모두 포워딩 상태.
- 아무도 루트 포트가 아니라면, 한 쪽은 지정 포트, 다른 한 쪽은 대체 포트가 되어 차단 상태가 된다.
- BPDU 가 전달되는 포트가 됨
💡 일반 PC 나 서버가 연결되는 서버라면 BPDU 가 들어오는 걸 기다리는 동안 네트워크 사용이 불가하니, 해당 포트를 포트 패스트 로 설정해 BPDU 대기 없이 곧바로 사용하게 할 수 있다. 단, 포트 패스트를 설정한 포트에 스위치가 접속되면 루프가 생길 수 있으니 해당 포트에 BPDU 가 들어오자마자 포트를 차단하는 BPDU 가드 기술이 함께 사용되어야 한다.
RSTP
향상된 스패닝 트리 프로토콜, 기존에는 정상적인 경로에 문제가 발생하면 백업 경로를 활성화하는 데에 30~50초가 걸려 백업 경로를 활성화하는 데 시간이 너무 오래 걸렸지만…
- 기본 동작 방식은 STP 와 같다.
- BPDU 메시지 형식이 다양해져 여러 가지 상태 메시지를 교환할 수 있다.
- 토폴로지 변경이 일어난 “스위치 자신” 이 모든 네트워크에 토폴로지 변경을 “직접 전파 가능”하다.
- 빠른 시간 내에 토폴로디 변경을 감지, 복구 가능.
- 2~3초 안에 장애 복구 가능 → 애플리케이션 세션 끊기지 않아 안정적인 네트워크 유지 가능.
MST
루프가 생기는 토폴로지에서 한 개의 포트와 회선만 활성화되므로 자원 효율적으로 사용 가능.
기존 스패닝 트리 프로토콜
- CST 라고 불렀음. → VLAN 갯수 상관 없이 스패닝 트리 한 개만 동작.
- 루프가 생기는 토폴로지에서 한 개의 포트와 회선만 활성화되므로 자원을 효율적으로 활용 가능.
- VLAN 마다 최적의 경로가 있을 수 있는데 포트 하나만 사용 → 멀리 돌아 통신하는 경우도..
그래서 PVST 개발!
- VLAN 마다 다른 스패닝 트리 프로세스 동작 → VLAN 마다 별도 경로 트리 만들기 가능.
- 하지만 VLAN 마다 별도의 스패닝 트리 동작 → 더 많은 부담..
MST 등장
여러 개의 VLAN 을 그룹으로 묶고 그 그룹마다 별도의 스패닝 트리 동작
- PVST 보다 훨씬 적은 스패닝 트리 프로토콜 프로세스가 돈다.
- PVST 의 장점인 로드 셰어링 기능도 사용 가능.
- 일반적으로 대체 경로의 수, 용도에 따라 MST 의 스패닝 트리 프로토콜 프로세스 개수 정리한다.
- 리전 하나가 스패닝 트리 하나.
💡 스위치는 2계층에서 동작하는 장비여서 MAC 주소만 이해할 수 있다. 그러나 일정 규모 이상의 네트워크에서 운영되는 스위치는 관리 목적으로 대부분 IP 주소가 할당된다.
'개발공부 개발새발 > Network' 카테고리의 다른 글
Network ) 로드밸런서 (0) | 2024.07.26 |
---|---|
Network ) 라우터 (0) | 2024.07.19 |
Network ) ARP, GARP , 게이트웨이.. (0) | 2024.05.30 |
Network ) TCP / UDP (0) | 2024.05.30 |
Network ) 통신 방식 , MAC 주소, IP 주소 (서브네팅) (0) | 2024.05.30 |