스위치는 2 계층 주소인 MAC 주소를 기반으로 동작한다.
네트워크 중간에서 패킷을 받아 필요한 곳에만 보내주는 네트워크 중재자 역할을 한다. 또한 아무 설정 없이 네트워크에 연결해도 MAC 주소를 기반으로 패킷을 전달하는 기본 동작을 수행할 수 있다.
기본 동작 외에도 한 대의 장비에서 논리적으로 네트워크를 분리할 수 있는 VLAN 기능과 네트워크 루프를 방지하는 스패닝 트리 프로토콜(STP)과 같은 기능을 기본적으로 가지고 있다.
<참고> 패킷? 프레임?
각 계층에서 헤더와 데이터를 합친 부분을 PDU(Protocol Data Unit)이라고 한다. 각 계층마다 PDU를 부르는 이름이 달라서
1 계층은 비트
2 계층은 프레임
3 계층은 패킷
4 계층은 세그먼트
라고 부르며 애플리케이션에 해당하는 3개 계층(애플리케이션, 프레젠테이션, 세션)은 데이터라고 부른다.
스위치 장비 동작
스위치가 없던 오래된 이더넷 네트워크에서는 패킷을 전송할 때 서로 경합해 그로 인한 네트워크 성능 저하가 컸다. 이런 경쟁을 없애고 패킷을 동시에 여러 장비가 서로 간섭없이 통신하도록 하는 것이 스위치이다. 이런 장점으로 인해 여러 단말이 한꺼번에 통신할 수 있고 기다리거나 충돌의 문제를 해결할 수 있다.
스위치의 핵심 역할은 누가 어느 위치에 파악하고 실제 통신이 시작되면 자신이 알고 있는 위치로 패킷을 정확히 전송하는 것이다. 그래서 MAC 주소와 포트 정보를 알고 있어야 하는데 이를 가지고 있는 것이 MAC 주소 테이블이다.
스위치는 전송하려는 패킷의 헤더 안에 있는 2계층 목적지 주소를 확인하고 MAC 주소 테이블에 해당 주소가 어느 포트에 있는지 확인해 해당 패킷을 그 포트로만 전송한다.
이러한 스위치의 동작은 다음 3가지로 정리할 수 있다.
- 플러딩(Flooding)
- 어드레스 러닝(Address Learning)
- 포워딩/필터링(Forwarding/Filtering)
플러딩(Flooding)
스위치는 부팅하면 네트워크 관련 정보가 아무것도 없다. 이때 스위치는 네트워크 통신을 중재하는 자신의 역할을 하지 못하고 허브처럼 동작한다. 즉 패킷이 들어온 포트를 제외하고 모든 포트로 패킷을 전달한다. 이 방식을 플러딩이라고 한다.
스위치는 패킷이 들어오면 도착지 MAC 주소를 확인하고 자신이 갖고 있는 MAC 주소 테이블에 해당 MAC 주소가 있는지 확인한다. 만약 없다면 모든 포트에 같은 내용의 패킷을 전송한다.
해당 동작을 할 수 있는 배경은 스위치가 LAN에서 동작하기 때문에 자신이 정보가 없더라도 어딘가에 장비가 존재한다고 가정하기 때문이다.
플러딩은 스위치의 정상적인 동작이지만 계속 반복된다면 스위치는 제 역할을 하지 못하게 된다. 그래서 패킷이 스위치에 들어오면 해당 패킷 정보의 MAC 주소를 보고 이를 학습해 MAC 주소 테이블을 만든 후 이를 통해 패킷을 전송한다.
<참고> 비정상적인 플러딩(Flooding)
스위치에게 엉뚱한 MAC 주소를 습득시키거나 스위치의 MAC 테이블을 꽉 차게 해 스위치의 플러딩 동작을 유도할 수 있다. 아무 이유 없이 스위치가 패킷을 플러딩 한다면 스위치가 정상적으로 동작하지 않거나 주변에서 공격이 수행되는 상황임을 알아야 한다.
이외에도 ARP 포이즈닝 기법을 이용해 모니터링해야 할 IP의 MAC 주소가 공격자 자신인 것 처럼 속여 원하는 통신을 받는 방법을 사용하기도 한다.
어드레스 러닝(Address Learning)
스위치가 패킷의 도착지 MAC 주소를 확인하여 원하는 포트로 포워딩하는 스위치의 동작을 정상적으로 수행하려면 MAC 주소 테이블을 만들고 유지해야 한다. MAC 주소 테이블은 어느 위치(포트)에 어떤 장비(MAC 주소)가 연결되었는지에 대한 정보가 저장되어 있는 임시 테이블이다. 이러한 테이블을 만드는 과정을 어드레스 러닝이라 부른다.
어드레스 러닝은 패킷의 출발지 MAC 주소 정보를 이용한다. 패킷이 특정 포트에 들어오면 스위치에는 해당 패킷의 출발지 MAC 주소와 포트 번호를 MAC 주소 테이블에 기록한다.
1번 포트에서 들어온 패킷의 출발지 MAC 주소가 1111라면 1번 포트에 1111 MAC 주소를 가진 장비가 연결되어 있다고 추론할 수 있어 이런 방식으로 주소 정보를 습득한다.
<참고> 사전 정의된 MAC 주소 테이블
스위치는 MAC 어드레스 러닝 작업으로 주변 장비의 MAC 주소를 학습하는 것 외에도 사전에 미리 정의된 MAC 주소 정보를 가지고 있다. 이 사전 정의된 주소는 패킷 처리가 아닌 스위치 간 통신을 위해 사용되는 주소이다.
이런 종류 주소도 MAC 주소 테이블에서 정보를 확인할 수 있는데 스위치가 자체 처리되는 주소는 특정 포트로 내보내는 것이 아니라 스위치에서 자체 처리하므로 인접 포트 정보가 없거나 CPU 혹은 관리 모듈을 지칭하는 용어로 표기된다.
포워딩/필터링(Forwarding/Filtering)
패킷이 스위치에 들어온 경우, 도착지 MAC 주소를 확인하고 자신이 가진 MAC 테이블과 비교해 맞는 정보 있으면 매치되는 해당 포트로 패킷을 포워딩한다. 이때 다른 포트로는 해당 패킷을 보내지 않으므로 이 동작을 필터링이라고 한다.
스위치에서는 포워딩, 필터링 작업이 여러 포트에서 동시에 수행될 수 있다. 이때 통신이 다른 포트에 영향을 미치지 않으므로 다른 포트에서 기존 통신 작업으로부터 독립적으로 동작할 수 있다.
스위치는 일반적인 유니캐스트에 대해서만 포워딩과 필터링 작업을 수행한다. BUM 트래픽이라고 부르는 브로드캐스트와 언노운 유니캐스트, 멀티캐스트는 조금 다르게 동작한다.
출발지 MAC 주소로 브로드캐스트나 멀티캐스트 모두 출발지가 사용되지 않으므로 이런 트래픽은 전달이나 필터링을 하지 않고 모두 플러딩 한다. 언노운 유니캐스트도 MAC 주소 테이블에 없는 주소이므로 브로드캐스트와 동일하게 플러딩 한다.
<참고> LAN에서의 ARP - 스위치 동작
TCP/IP 네트워크에서는 스위치가 유니캐스트를 플러딩 하는 경우는 거의 없다. 패킷을 만들기 전에 통신해야 하는 단말의 MAC 주소를 알아내기 위해 ARP 브로드캐스트가 먼저 수행되어야 하므로 유니캐스트보다 ARP 브로드 캐스트가 먼저 네트워크에 전달된다.
이 습득 과정을 통해 스위치는 이미 출발지와 목적지 MAC 주소를 습득할 수 있다.
ARP와 MAC 테이블은 일정 시간 동안 지워지지 않는데 이 시간을 에이징 타임이라고 한다. 일반적으로 MAC 테이블의 에이징 타임이 단말의 ARP 에이징 타임보다 길어 이더넷 네트워크를 플러딩 없이 효율적으로 운영할 수 있다.
'CS > 네트워크' 카테고리의 다른 글
STP(Spanning Tree Protocol) (0) | 2022.06.22 |
---|---|
VLAN(Virtual Local Area Network) (0) | 2022.06.21 |
서브넷과 게이트웨이 (0) | 2022.06.03 |
ARP(Address Resolution Protocol) (0) | 2022.06.03 |
TCP와 UDP (0) | 2022.06.03 |