데이터 링크
계층에 속하는 장치에요. 집에서 일반적으로 사용하는 허브보다 성능이 좋아요. 스위치
는 허브의 Half-duplex
방식을 Full-duplex
방식으로 개선한 장치에요. 또한 허브가 하나의 Collision Domain
을 가졌다면, 스위치
는 Port 별로 Collision Domain
을 가져요. 어떤 의미인지 아래에서 설명드릴게요 ㅎㅎ.
출발지 주소가 MAC 주소 테이블에 없으면 해당 주소를 저장해요.
그림을 보시면 4개의 PC는 스위치에 각 포트에 연결되고 프레임들이 모두 스위치에 전달되요. 그리고 스위치는 해당 Port로 유입된 프레임을 보고 MAC 주소를 테이블에 저장해요.
목적지 주소가 MAC 주소 테이블에 없으면 전체 Port로 Broadcasting 전달을 수행해요.
PC1
은 목적지 aa:bb:cc:dd:ee:05
주소로 프레임을 전달하고 있어요. 스위치
는 해당 주소가 MAC 테이블에 없으니까 전체 Port로 프레임을 전달해요.
목적지 주소가 MAC 주소 테이블에 있으면 해당 Port로 Unicasting 전달해요.
PC1
은 목적지 aa:bb:cc:dd:ee:05
주소로 프레임을 전달하고 있어요. 이 때 스위치
는 해당 주소가 MAC 테이블에 존재하는 것을 확인하고 프레임을 PC5
로 전달해요.
출발지와 목적지가 같은 네트워크 영역이면 다른 네트워크로 전달하지 않아요.
PC1
은 목적지 aa:bb:cc:dd:ee:02
주소로 프레임을 전달하고 있어요. 이 때, 스위치
는 해당 주소가 동일 네트워크 영역P0
임을 확인하고, 다른 Port로 전달하지 않아요.
바로 여기서 Collision Domain
개념이 나오는 거에요. 스위치
는 Port별로 영역Domain
을 나눠서 다른 Port에 불필요한 송신과 수신을 막는 거에요.
MAC 주소 테이블의 각 주소는 일정 시간 이후에 삭제되요. 테이블 저장 공간을 효율적으로 사용하기 위해서죠.
또한 해당 포트에 연결된 PC가 다른 포트로 옮겨진 경우가 발생하면 이를 다시 업데이트를 해주기 위해 필요한 로직이에요.
Cisco
기준 기본 300초의 저장 기간을 가져요. 물론 프레임 송수신이 발생하면 300초를 다시 리카운트Recount
해요.
위 내용을 정리하면 아래와 같아요.
같은 네트워크 대역 대에서 스위치에 연결된 경로가 2개 이상인 경우에 발생해요.
PC가 브로드캐스팅 패킷을 스위치
들에게 전달하고, 전달 받은 스위치들은 Flooding
을 수행해요. 문제는, 스위치
들끼리 Flooding
된 프레임이 서로 계속 전달되다 보니 네트워크에 문제가 발생하는 거에요.
발생되는 과정을 풀어보자면,
PC1
은Switch1
에게 브로드캐스팅 전송해요Switch1
은 모든 포트에 브로드캐스팅을 전송해요Switch 2, 3
도 전달받은 브로드캐스팅 프레임을 모든 Port에 전송하게 되요- 이러면
Switch1
은Switch 2, 3
에게 전달받은 브로드캐스팅 메시지를 다시 모든 Port에 전송하면서 브로드캐스트 스톰Broadcast Storm
이 발생하는 거에요.
원인을 꼽자면,
- 회선 및 스위치 이중화 또는 증축 등에 의해 발생해요
- 물리적인 Port 연결 실수 또는 잘못된 이중화 구성으로
L2
에서 자주 발생하는 이슈에요
그래서, Looping
을 자동으로 막아주기 위한 스패닝 트리 알고리즘Spanning Tree Algorithm
이 있어요. 이를 사용하는 STP
가 그 결과에요.
이에 대해 알아가기 전에 앞서, STP
는 2가지 개념이 존재해요.
Bridge ID
: 0~65535까지의스위치
ID가 존재해요. 이를 통해 우선 순위를 설정하고 낮을 수록 우선순위가 높아요.Path Cost
: 링크의 속도대역폭
에요. 1000 per Link 단위로 계산되요.Path Cost
가 낮을 수록 우선순위가 높아요.1Gbps 속도가 나오면서 기존 계산법이 적합하지 않아
IEEE
에서 각 대역폭 별 우선순위 수치를 정의했어요.
- 10Mbps = 100
- 100Mbps = 19
- 1Gbps = 4
기본 개념을 알았으니 STP
요소에 대해서 알아봐요.
Root Bridge
: 네트워크 당 1개 선출Root Port
:Root Bridge
가 아닌 스위치들은 1개 포트를 선출Designated Port
: 각 세그먼트별 1개 포트를 지정
STP
를 사용하면서 스위치 간 서로 주고 받는 제어 프레임이 존재해요. 이를 BPDU, Brdiged Protocol Data Unit
이라고 해요. BPDU
에 대한 종류는 2가지가 있어요.
Configuration BPDU
: 구성 관련 정보
Root BID
:Root Bridge
로 선출될 스위치 정보Path Cost
:Root Bridge
까지의 경로 비용Bridge ID, Port ID
: 나머지스위치
와 Port의 우선순위TCN(Topology Change Notification) BPDU
: 네트워크 내 구성 변경 시 통보. 수치가 낮을 수록 높은 우선순위를 가져요.
- 체크 순서 Root BID
Root Bridge
까지Path Cost
연결된 스위치 내BID
Port ID
Root Bridge
선출각 스위치
는 고유의 BID
를 가지게 되요(우선순위2-byte
+ MAC주소6-byte
). 서로 BPDU
를 교환하고, 가장 낮은 숫자가 Root Bridge
가 되요. 물론 이는 명령어를 통해 임의로 배정이 가능해요.
그림을 위주로 설명 드리자면, 우선순위 룰에 따라 Switch1
이 Root Bridge
가 되요.
Root Port
선출
나머지 스위치
들은 Root Bridge
와 가장 빠르게 연결되는 Root Port
를 선출해요. 그리고 Root Port
는 가장 낮은 Root Path Cost
값을 가지게 되요.
이 값은 전에 말한 Path Cost
값으로 저장되요. Switch2
는 P1= 4 + 19
, Switch3
은 P0=19
가 되는거죠.
Designated Port
선출
각 세그먼트 Root Bridge
와 가장 빠르게 연결되는 Port를 Designated Port
로 선출해요.
Siwtch1
은 P0
과 P1
이 되고, 1Gbps 라인에서는 Switch3
의 P1
이 Designated Port
로 선출되요.
STP
를 활용하는 스위치
Port는 5가지 상태로 표현되요.
Port가 Shut-down인 상태로, 데이터 전송, MAC 학습 및 BPDU
송수신이 불가능한 상태에요.
부팅하거나 Disabled
상태를 'Up'시켰을 때 첫번째로 거치는 단계에요. 이땐 BPDU
만 송수신해요.
Blocking
Port가 Root Port
나 Designated Port
로 선정되는 단계에요. 이때도 BPDU
만 송수신하고 약 15초정도 선정될 때까지 대기해요.
Listening
상태에서 특정 시간이 흐른 후 Learning
상태가 되요. 이때부터 MAC 학습을 시작해요. BPDU
도 송수신하고요. 마찬가지로 15초 정도의 대기시간을 가져요.
Learning
상태에서 15초정도 흐른 후에 Forwarding
상태로 넘어가요. 이때부터 데이터 전송을 시작해요. BPDU
만 송수신해요.
어휴, 내용 참 많네요 ㅎㅎ. 마무리하기 전에 STP
를 개선한 방식까지만 정리할게요.
STP
를 적용하면 데이터를 전송할 수 있는 Forwarding
상태까지 약 30~50초정도 걸려요. 이 컨버전스 타임을 1~2초 내외로 압축시킨다고 해요.
큰 특징으로 STP
의 Listening
, Learning
단계가 없어요.
네트워크 그룹이 늘어나면 STP
와 RSTP
의 BPDU
프레임이 많아져 부하가 발생할 수 밖에 없어요.
이를 해결하기 위해 여러 STP
그룹들을 묶어서 인스턴스화한 방식이에요.