[네트워크] 데이터 링크 계층(Data Link Layer) - L2 스위치와 내부 동작(feat. Spanning Tree Algorithm)

최지수·2022년 3월 12일
1

네트워크

목록 보기
4/7
post-thumbnail

L2 스위치


데이터 링크 계층에 속하는 장치에요. 집에서 일반적으로 사용하는 허브보다 성능이 좋아요. 스위치는 허브의 Half-duplex 방식을 Full-duplex 방식으로 개선한 장치에요. 또한 허브가 하나의 Collision Domain을 가졌다면, 스위치Port 별로 Collision Domain을 가져요. 어떤 의미인지 아래에서 설명드릴게요 ㅎㅎ.

동작 방식

1. Learning

출발지 주소가 MAC 주소 테이블에 없으면 해당 주소를 저장해요.

그림을 보시면 4개의 PC는 스위치에 각 포트에 연결되고 프레임들이 모두 스위치에 전달되요. 그리고 스위치는 해당 Port로 유입된 프레임을 보고 MAC 주소를 테이블에 저장해요.

2. Flooding

목적지 주소가 MAC 주소 테이블에 없으면 전체 Port로 Broadcasting 전달을 수행해요.

PC1은 목적지 aa:bb:cc:dd:ee:05 주소로 프레임을 전달하고 있어요. 스위치는 해당 주소가 MAC 테이블에 없으니까 전체 Port로 프레임을 전달해요.

3. Forwarding

목적지 주소가 MAC 주소 테이블에 있으면 해당 Port로 Unicasting 전달해요.

PC1은 목적지 aa:bb:cc:dd:ee:05 주소로 프레임을 전달하고 있어요. 이 때 스위치는 해당 주소가 MAC 테이블에 존재하는 것을 확인하고 프레임을 PC5로 전달해요.

4. Filtering

출발지와 목적지가 같은 네트워크 영역이면 다른 네트워크로 전달하지 않아요.

PC1은 목적지 aa:bb:cc:dd:ee:02 주소로 프레임을 전달하고 있어요. 이 때, 스위치는 해당 주소가 동일 네트워크 영역P0임을 확인하고, 다른 Port로 전달하지 않아요.

바로 여기서 Collision Domain 개념이 나오는 거에요. 스위치는 Port별로 영역Domain을 나눠서 다른 Port에 불필요한 송신과 수신을 막는 거에요.

5. Aging


MAC 주소 테이블의 각 주소는 일정 시간 이후에 삭제되요. 테이블 저장 공간을 효율적으로 사용하기 위해서죠.

또한 해당 포트에 연결된 PC가 다른 포트로 옮겨진 경우가 발생하면 이를 다시 업데이트를 해주기 위해 필요한 로직이에요.

Cisco 기준 기본 300초의 저장 기간을 가져요. 물론 프레임 송수신이 발생하면 300초를 다시 리카운트Recount해요.

정리

위 내용을 정리하면 아래와 같아요.

Looping

같은 네트워크 대역 대에서 스위치에 연결된 경로가 2개 이상인 경우에 발생해요.

PC가 브로드캐스팅 패킷을 스위치들에게 전달하고, 전달 받은 스위치들은 Flooding을 수행해요. 문제는, 스위치들끼리 Flooding된 프레임이 서로 계속 전달되다 보니 네트워크에 문제가 발생하는 거에요.

발생되는 과정을 풀어보자면,

  1. PC1Switch1에게 브로드캐스팅 전송해요
  2. Switch1은 모든 포트에 브로드캐스팅을 전송해요
  3. Switch 2, 3도 전달받은 브로드캐스팅 프레임을 모든 Port에 전송하게 되요
  4. 이러면 Switch1Switch 2, 3에게 전달받은 브로드캐스팅 메시지를 다시 모든 Port에 전송하면서 브로드캐스트 스톰Broadcast Storm이 발생하는 거에요.

원인을 꼽자면,

  1. 회선 및 스위치 이중화 또는 증축 등에 의해 발생해요
  2. 물리적인 Port 연결 실수 또는 잘못된 이중화 구성으로 L2에서 자주 발생하는 이슈에요

STP(Spanning Tree Protocol)

그래서, Looping을 자동으로 막아주기 위한 스패닝 트리 알고리즘Spanning Tree Algorithm이 있어요. 이를 사용하는 STP가 그 결과에요.

STP 기본 개념

이에 대해 알아가기 전에 앞서, STP는 2가지 개념이 존재해요.

  1. Bridge ID : 0~65535까지의 스위치 ID가 존재해요. 이를 통해 우선 순위를 설정하고 낮을 수록 우선순위가 높아요.
  2. Path Cost : 링크의 속도대역폭에요. 1000 per Link 단위로 계산되요. Path Cost가 낮을 수록 우선순위가 높아요.

1Gbps 속도가 나오면서 기존 계산법이 적합하지 않아 IEEE에서 각 대역폭 별 우선순위 수치를 정의했어요.

  • 10Mbps = 100
  • 100Mbps = 19
  • 1Gbps = 4

STP 요소

기본 개념을 알았으니 STP 요소에 대해서 알아봐요.

  1. Root Bridge : 네트워크 당 1개 선출
  2. Root Port : Root Bridge가 아닌 스위치들은 1개 포트를 선출
  3. Designated Port : 각 세그먼트별 1개 포트를 지정

STP를 사용하면서 스위치 간 서로 주고 받는 제어 프레임이 존재해요. 이를 BPDU, Brdiged Protocol Data Unit이라고 해요. BPDU에 대한 종류는 2가지가 있어요.

  1. Configuration BPDU : 구성 관련 정보
    • Root BID : Root Bridge로 선출될 스위치 정보
    • Path Cost : Root Bridge까지의 경로 비용
    • Bridge ID, Port ID : 나머지 스위치와 Port의 우선순위
  2. TCN(Topology Change Notification) BPDU : 네트워크 내 구성 변경 시 통보. 수치가 낮을 수록 높은 우선순위를 가져요.
    • 체크 순서 \to Root BID \to Root Bridge까지 Path Cost \to 연결된 스위치 내 BID \to Port ID

동작 방식

1. Root Bridge 선출

스위치는 고유의 BID를 가지게 되요(우선순위2-byte + MAC주소6-byte). 서로 BPDU를 교환하고, 가장 낮은 숫자가 Root Bridge가 되요. 물론 이는 명령어를 통해 임의로 배정이 가능해요.

그림을 위주로 설명 드리자면, 우선순위 룰에 따라 Switch1Root Bridge가 되요.

2. Root Port 선출


나머지 스위치들은 Root Bridge와 가장 빠르게 연결되는 Root Port를 선출해요. 그리고 Root Port는 가장 낮은 Root Path Cost 값을 가지게 되요.

이 값은 전에 말한 Path Cost값으로 저장되요. Switch2P1= 4 + 19, Switch3P0=19가 되는거죠.

3. Designated Port 선출


각 세그먼트 Root Bridge와 가장 빠르게 연결되는 Port를 Designated Port로 선출해요.

Siwtch1P0P1이 되고, 1Gbps 라인에서는 Switch3P1Designated Port로 선출되요.

STP 상태 변화

STP를 활용하는 스위치 Port는 5가지 상태로 표현되요.

Disabled

Port가 Shut-down인 상태로, 데이터 전송, MAC 학습 및 BPDU 송수신이 불가능한 상태에요.

Blocking

부팅하거나 Disabled 상태를 'Up'시켰을 때 첫번째로 거치는 단계에요. 이땐 BPDU만 송수신해요.

Listening

Blocking Port가 Root PortDesignated Port로 선정되는 단계에요. 이때도 BPDU만 송수신하고 약 15초정도 선정될 때까지 대기해요.

Learning

Listening 상태에서 특정 시간이 흐른 후 Learning 상태가 되요. 이때부터 MAC 학습을 시작해요. BPDU도 송수신하고요. 마찬가지로 15초 정도의 대기시간을 가져요.

Forwarding

Learning 상태에서 15초정도 흐른 후에 Forwarding 상태로 넘어가요. 이때부터 데이터 전송을 시작해요. BPDU만 송수신해요.

어휴, 내용 참 많네요 ㅎㅎ. 마무리하기 전에 STP를 개선한 방식까지만 정리할게요.

RSTP와 MST

RSTP(Rapid Spanning Tree Protocol)

STP를 적용하면 데이터를 전송할 수 있는 Forwarding 상태까지 약 30~50초정도 걸려요. 이 컨버전스 타임을 1~2초 내외로 압축시킨다고 해요.

큰 특징으로 STPListening, Learning 단계가 없어요.

MST(Mutiple Spanning Tree)

네트워크 그룹이 늘어나면 STPRSTPBPDU 프레임이 많아져 부하가 발생할 수 밖에 없어요.

이를 해결하기 위해 여러 STP 그룹들을 묶어서 인스턴스화한 방식이에요.

profile
#행복 #도전 #지속성

0개의 댓글