스위치는 2개 이상의 IT 디바이스가 서로 통신하도록 허용하는 장비이다.
이더넷 프레임을 MAC 주소 기반으로 스위칭하고 포워딩한다.
1. 프레임 포워딩
2. MAC 주소 학습
3. 콜리전 도메인 분리
4. 플로우 컨트롤
5. VLAN
6. STP (Spanning Tree Protocol)
또한 내부에서 사용할 수 있는 기능은 5가지가 있다.
또한 라우터를 L3 스위치라고 말하기도 하는데, 단순하게 기기끼리 네트워크 연결이 이루어지게 하는 기기라면 스위치라고 할 수 있기 때문입니다.
디바이스 간에 통신하는 방식은 스위치 자체를 포함하여 연결된 모든 시스템이 표준 통신 프로토콜 세트를 따르도록 하는 것이다. 이러한 표준은 IEEE 및 IETF 등의 국제 표준 기구가 정의하고 관리한다.
통신은 패킷 단위로 이루어지고, 패킷은 헤더와 페이로드를 포함하고 있는데 헤더에는 해당 통신에 참여하는 디바이스의 출발지 및 목적지 주소와 같은 정보가 들어 있고, 페이로드에는 네트워크상의 디바이스가 실제로 교환하려는 데이터가 들어 있습니다. 네트워크상의 각 디바이스에는 패킷을 보낼 수 있는 주소가 한 개 이상 있습니다.
스위치는 패킷 헤더의 주소를 읽은 다음 이 패킷을 해당되는 목적지로 전달한다.
스위치는 네트워크상에서 사용자와 어플라이언스 및 장비를 연결하여 이들이 서로 통신하고 리소스를 공유할 수 있게 한다.
스위치의 중요한 역할은 "가상 네트워크"을 생성하는 것이다. 가상 네트워크는 네트워크 관리자가 제공하는 구성에 따라 네트워크 연결된 시스템을 여러 그룹으로 나누어 분리가 가능하다.
특정 시스템을 나머지 시스템으로부터 안전하게 분리하면서 다수의 시스템을 한 개의 물리적 네트워크에 연결할 수 있다.
가상 네트워크 유형에는 VPN(Virtual Private Network), 가상 LAN(VLAN) 등이 있다.
예를 들어 PC 1번에서 PC 2번으로 통신을 요청하는데, 그 중간에 있는 Switch의 MAC Table에 2번 PC의 MAC 주소가 저장되어 있지 않다면, 자신과 연결된 모든 포트에게 요청을 보냅니다.
이 기능을 flooding이라고 하고, 이것을 통해서 자신이 해당하는 MAC 주소라면 reply를 제공하고, 이를 통해 목적지 MAC주소를 알 수 있습니다.
가장 중요한 기능인 프레임 포워딩입니다.
스위치는 2개 이상의 기기가 연결되어 있고, 목적지의 주소를 알고 있다면 목적지까지 Frame을 이동하도록 만들 수 있습니다.
데이터를 보낼 때 출발 MAC주소, 도착 MAC주소를 명시해서 보낼 텐데, 만약 양끝점 주소가 MAC 주소 테이블에 존재한다면 해당 맥 주소가 아닌 주소들에게는 데이터를 보내지 않습니다.
맥 주소 테이블을 영원이 유지할 수는 없습니다.
따라서 맥 주소에 대한 유효시간을 놔둡니다.
해당 시간이 만료되면 맥 주소 테이블에서 삭제합니다.
VLAN이란 Virtual LAN으로서 물리적 배치와 상관없이 LAN을 논리적으로 분할, 구성하는 기술이다.
각 VLAN은 별도의 네트워크가 됨으로, VLAN간의 통신에는 3계층의 도움이 필요하다.
Trunking을 통해서 Tagged Port를 사용해 VLAN 사이에서 패킷을 주고 받을 수 있다.
이더넷 프레임에 VLAN ID 필드를 추가하여 태그 정보를 사용할 수 있다.
태그를 보낼 때는 VLAN ID를 붙이고, 수신측에서 VLAN ID를 제거하여 VLAN ID의 VLAN으로 패킷을 전송할 수 있다.
+)
VLAN을 사용하면 MAC 테이블에서도 VLAN 값이 함께 기록된다.
stp 프로토콜이란, Spanning Tree Protocol로서 Ethernet Frame이 장비들에서 빙빙 도는 Looping하는 현상을 방지하기 위한 프로토콜이다.
Frame Looping이 발생하면 다음과 같은 문제가 생길 수 있다.
1. BroadCasting Storm (브로드캐스팅 폭풍) 발생
특정 스위치에서 BroadCast Frame을 보낸 경우, 받은 스위치는 연겨로딘 모든 포트로 Flooding을 진행한다. 이 경우 STP가 작동하지 않는다면, 모든 스위치에서 브로드캐스팅을 각자 진행하게 됨으로 정상적인 작동이 되지 않거나 시스템이 다운될 수 있다.
2. MAC Address Table 불안정
Looping이 발생하면 동일한 MAC Address를 다른 인터페이스에서 받게 된다.
이 경우 MAC Address Table이 계속 변화하는 MAC Table Instability(불안정) 현상이 발생한다.
다음 예시를 들으면 쉽게 이해할 수 있다.
> 1. 장치 A가 포트 1에 연결되어 있고, 스위치는 장치 A의 MAC 주소가 포트 1로부터 왔다는 것을 MAC 주소 테이블에 기록한다.
> 2. 루핑이 발생한 경우, 장치 A로부터 온 패킷이 다른 경로를 통해 포트 2로도 들어올 수 있다.
> 3. 스위치는 이 패킷을 포트 2에서 수신하고, MAC 주소 테이블을 업데이트하여 장치 A의 MAC 주소가 포트 2로부터 왔다고 기록한다.
> 4. 이런 식으로 테이블은 빠르게 변동하게 되며, 이는 네트워크의 안정성을 저해한다.
STP는 다음과 같은 순서로 동작한다.
1. Root Bridge 선출
- 내부 네트워크의 모든 스위치 중 하나를 Root Bridge로 선출한다.
2. 경로 계산
- 각 스위치는 Root Bridge까지의 최적 경로를 계산한다.
3. Blocking
- 최적 경로가 아닌 다른 경로는 차단(Block)된 상태로 변경되고, 이로서 Looping이 발생하지 않는다.
Root Bridge를 선출하는 방법은 다음과 같다.
1. 초기 상태
1. 모든 스위치는 자신을 Root Bridge로 간주하고, 각 스위치는 자신의 Bridge ID (BID)를 사용하여 BPDU를 생성하고 전송한다. BID는 스위치의 Priority 값과 MAC 주소를 결합하여 생성됩니다.
2. BPDU의 비교
1. 스위치는 다른 스위치들로부터 수신한 BPDU들과 자신이 보낸 BPDU를 비교한다. BPDU의 비교는 우선순위(Priority) 값으로 시작하며, 동일한 경우에는 MAC 주소를 비교하여 더 낮은 값을 갖는 스위치의 BPDU를 선호하게 된다.
3. BPDU 전파
1. 스위치가 다른 스위치로부터 더 우선적인 BPDU를 수신하면, 해당 스위치는 자신이 Root Bridge가 아니라는 것을 인지하고, 수신한 "더 좋은" BPDU를 다른 포트를 통해 전파한다.
4. Root Bridge 선출
1. 위의 과정을 통해 네트워크 내의 모든 스위치들이 동일한 BPDU (즉, 가장 우선적인 BPDU)를 수신하게 되면, 해당 BPDU를 생성한 스위치가 Root Bridge로 선출된다. 이 스위치는 네트워크에서 가장 낮은 BID 값을 가지게 된다.
5. 정기적인 BPDU 전송
1. Root Bridge는 정기적으로 BPDU를 전송하여 자신이 Root Bridge임을 네트워크 내의 다른 스위치들에게 알리고, 이를 통해 네트워크 구성의 변화에 따라 Root Bridge의 선출이 다시 이루어질 수 있다.
최적 경로를 계산하는 방법은 다음과 같다.
1. 경로 비용의 설정
1. 각 포트는 특정 비용 값을 가지고, 비용은 전송 속도, 링크의 품질 등에 기반하여 정해진다. 일반적으로 빠른 링크는 낮은 비용을 가지며, 느린 링크는 높은 비용을 가진다.
2. BPDU의 수신과 업데이트
1. 스위치는 Root Bridge로부터 BPDU를 수신할 때마다 BPDU에 포함된 경로 비용을 업데이트한다. 스위치는 자신의 포트 비용을 BPDU의 경로 비용에 더하고, 이 업데이트된 비용 정보를 다시 BPDU에 포함시켜 다음 스위치로 전달한다.
3. 최적 경로의 선정
1. 스위치는 다양한 경로를 통해 여러 BPDU를 수신할 수 있다. 스위치는 수신된 BPDU들 중에서 가장 낮은 경로 비용을 가진 BPDU를 선택하고, 해당 BPDU를 통해 받은 정보를 기반으로 Root Bridge까지의 최적 경로를 선정한다.
4. 블로킹 상태의 설정
1. 스위치는 최적 경로를 제외한 다른 경로의 포트를 블로킹 상태로 설정한다. 이렇게 하면 해당 포트를 통한 데이터 전송이 차단되어 Looping을 방지하게 된다.
5. 정기적인 BPDU 전송과 경로 비용의 업데이트
1. 네트워크의 구성이나 링크의 상태가 변할 때마다 최적 경로도 변할 수 있다. 따라서 스위치는 정기적으로 BPDU를 전송하고 수신하여 경로 비용을 업데이트하고, 필요한 경우 최적 경로를 재선정한다.
이후 Broadcast Storm을 방지하기 위해서 Block State로 들어가게 되는데, 다음은 각 스위치의 State에 대해 설명한다.
1. Blocking State (블로킹 상태):
- BPDU(Bridge Protocol Data Units) 프레임은 수신 가능하지만, 일반 데이터 트래픽에 대해서는 차단한다.
- 네트워크에서 루핑을 방지하기 위해, 최적 경로가 아닌 다른 경로의 포트는 이 상태로 설정된다.
2. Listening State (리스닝 상태):
- BPDUs만 수신하고, 일반 데이터 프레임은 전송 및 수신하지 않는다.
- 네트워크의 변화를 모니터링하며, 최적 경로가 변경되었는지 확인한다.
3. Learning State (러닝 상태):
- 스위치는 이 상태에서 MAC Address Table을 학습한다.
- 일반 데이터 프레임은 여전히 차단되지만, 스위치는 연결된 장치들의 MAC 주소를 MAC 주소 테이블에 추가할 수 있다.
- 이 상태는 15초(전송 지연 타이머) 후에 Forwarding 상태로 전환됩니다.
4. Forwarding State (전송 상태):
- Data Frame을 정상적으로 송/수신 한다.
일단 계층별로 다른 데이터를 다룬 점에서는 당연하게 다르다.
둘 다 데이터를 특정한 목적지로 이동시킨다는 점에서는 동일하다.
하지만 목적지가 불분명한 경우(테이블에 없는 경우), 스위치는 브로드캐스트를 통해 주변 노드에게 퍼뜨리지만 라우터는 해당 값을 버린다.
스위치란 무엇인가 : https://www.cloudflare.com/ko-kr/learning/network-layer/what-is-a-network-switch/
STP란 : https://net-study.club/entry/%EC%8A%A4%ED%8C%A8%EB%8B%9D-%ED%8A%B8%EB%A6%AC-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9CSTP-Spanning-Tree-Protocol