안녕하세요
뚱보프로그래머 입니다.
트랜스패런트 브리징 입니다.
- 트랜스패런트 브리징
이더넷 스위치 관련 표준인 iEEE 802.1D 에는 트랜스패런트 브리징과 래피드 스패닝트리 프로토콜(RSTP, rapid spanning tree protocol)이 정의되어 있다. 트랜스패런트 브리징은 이더넷 스위치가 프레임을 수신하여 목적지로 전송하는 방식과 절차를 정의한다.
스위치가 수신한 이더넷 프레임을 참조하여 MAC 주소 테이블을 생성 및 갱신하고, 목적지로 전송할 떄 사용하는 프로토콜을 트랜스패런트 브리징(transparent bridging) 이라고 한다.
통신에서 '트랜스패런트(투명한)' 라는 용어가 자주 나오는데, 보통 '사용자가 의식하지 못하게 자동으로 동작한다' 는 의미로 사용된다. 트랜스패런트 브리징은 RSTP와 더블어 iEEE 802.1D를 구성하며, 이 두가지가 레이어 2 스위치의 핵심 구성요소이다.
스위치가 MAC 주소 테이블을 만들고, 이것을 참조하여 수신 프렘임을 목적지로 전송하는 트랜스패런트 브리징에 대해서 자세히 알아보자.
- 트랜스패런트 브리징 절차
스위치가 트랜스패런트 브리징을 수행하는 절차는 다음과 같다.
1) 스위치가 인터페이스를 통하여 이더넷 프레임을 수신한다.
2) 이더넷 프레임의 출발지 MAC 주소를 읽는다.
* MAC 주소 테이블에 해당 출발지 MAC 주소가 없으면 수신 포트번호와 출발지 MAC 주소를 기록한다. 이것을 학습(learning)과정이라고 한다.
* MAC 주소 테이블에 해당 주소가 있으면 에이징 타이머(aging timer)를 초기화시킨다. 스위치가 MAC 주소를 MAC 주소 테이블에 기록할 때 항상 타이머도 동시에 설정한다. 기본적으로 5분이 경과하믄 해당 MAC 주소를 테이블에서 제거한다.
이렇게 타이머를 설정하고, 동일 MAC 주소를 가진 프레임을 수신할 때마다 타이머를 초기화하고, 정해진 시간동안 해당 프레임의 활동이 없으면 MAC 주소 테이블에서 제거하는 과정을 (aging)이라고 한다.
3) 이더넷 프레임의 목적지 MAC 주소를 읽는다.
* 목적지 MAC 주소가 브로드캐스트 주소이거나, MAC 주소 테이블에 없는 유니캐스트(unknown unicast) 또는 멀티캐스트 주소이면 수신 포트를 제외하고 동일한 VLAN에 속하는 모든 포트로 다 전송한다. 이 과정을 플러딩(flooding)이라고 한다.
* MAC 주소 테이블상에 목적지 MAC 주소와 연결되는 포트가 수신 포트와 동일하면 해당 프레임을 차단한다. 이 과정을 필터링(filtering)이라고 한다.
다음 그림처럼 허브와 연결된 포트에서 P2가 P1에게 프렘임을 송신하는 경우를 생각해 보자. 프레임을 수신한 허브는 모든 포트로 플러딩시키므로 스위치에게도 전송된다. 스위치가 포트 F0/1을 통해서 수신하면 목적지인 P1의 MAC 주소도 동일한 포트 F0/1에 속해 있으므로 이 프레임을 다른포트로 전송할 필요가 없다. 따라서, 스위치는 이 프레임을 차단한다.
* 목적지 주소가 MAC 주소 테이블에 존재하고, 목적지 MAC 주소로 가는 포트가 프레임의 수신 포트와 동일하지 않은 유니캐스트 프레임을 수신하면 목적지 포트로 프레임을 전송한다. 이 과정을 포워딩(forwarding)이라고 한다. 이상에서 설명한 러닝, 에이징, 플러딩, 필터링및 포워딩 과정이 모두 합쳐져 트랜스패런트 브리징 기능을 수행행다.
- 단일 스위치에서의 트랜스패런트 브리징
다음 그림과 같은 네트워크에서 스위치가 트랜스패런트 브리징을 하는 과정을 살펴보자
1) 처음에는 스위치의 MAC 주소 테이블이 비어있따. 동적인 MAC 주소 테이블을 확인하려면 show mac address-table dynamic 명령어를 사용한다.
초기 MAC 주소 테이블은 비어있다.
실제로는 앞의 결과와 다르게 MAC 주소 테이블에 R1, R2, SW1의 MAC 주소가 보일 것이다. 그 이유는 R1, R2가 CDP 프레임을 1분마다 전송하고, SW1도 2초마다 BPDU 전송하기 때문이다. 비어있는 MAC 주소 테이블을 보려면 clear mac address-table dynamic 명령어를 사용하여 테이블을 비우고, 바로 show mac address-table dynamic 명령어로 확인하면 된다.
2) R1(MAC:0000.0000.0001)이 R2(MAC:0000.0000.0002)가 목적지인 프레임을 전송한다. 예를 들어, R1에서 R2의 IP 주소인 1.1.1.2로 핑을 하면 된다. R1은 자신의 ARP테이블에 IP 주소가 1.1.1.2인 장비의 MAC 주소가 없기 떄문에 이를 알아내기 위하여 목적지 IP 주소가 255.255.255.255로 설정된 브로드캐스트 패킷을 전송한다.
IP 주소가 브로드케스트이면 이를 실어나르는 이더넷 프레임의 목적지 MAC 주소도 브로드캐스트 주소인 FFFF,FFFF,FFFF로 설정된다.
인터페이스 F1/0/1을 통하여 이 프레임을 수신한 스위치는 출발지 MAC 주소를 확인한다. MAC 주소가 0000.0000.0001인 장비 (R1)가 인터페이스 F1/0/1을 통하여 연결될 수 있음을 알게 되고, 이것을 MAC 주소 테이블에 기록한다.
스위치 SW1은 R1의 MAC 주소를 학습했다. 이 단계에서 스위치 SW1의 MAC 주소 테이블이 다음처럼 생성된다.
그리고, 목적지 MAC 주소가 브로드캐스트이므로 수신한 프레임을 동일한 VLAN에 소속된 모든 인터페이스로 플러딩한다. 이 떄 프레임을 수신한 F1/0/1 포트로는 플러딩하지 않고 프레임을 차단 (filtering)한다.
3) 프레임을 수신한 R2가 응답한다. 인터페이스 F1/0/2를 통하여 R2의 응답 프레임을 수신한 스위치는 MAC 주소가 0000.0000.0002인 장비가 인터페이스 F1/0/2를 통하여 연결될 수 있음을 알게 된다. 즉, 스위치는 R2의 주소를 학습했다.
스위치의 MAC 주소 테이블에 다음처럼 이 정보가 추가 된다.
그리고, 프레임의 목적지 MAC 주소인 0000.0000.0001이 MAC 주소 테이블에 있기 때문에 이번에는 프레임을 플러딩하지 않고 인터페이스 F1/0/1로만 전송한다. 즉, 포워딩한다. 이후 R1과 R2간에 이루어지는 통신은 인터페이스 F1/0/1과 F1/0/2 간에서만 이루어진다. 프레임을 수신할 때마다 스위츠는 해당 프레임의 에이징 타이머를 초기화 시킨다.
- 다수의 스위치와 트랜스패런트 브리징
트랜스패런트 브리징은 스위치가 여러대 연결되어 있어도 동일하게 동작한다. 다음 그림에서 각 스위치의 MAC 주소 테이블이 만들어지는 과정을 살펴보자. 그림에서 R1이 R3에게 핑을 하는 과정을 예로 들어 트랜스패런트 브리징이 동작하는 것을 설명한다.
스위치에 접속된 장비들간의 통신이 없을 때에는 모든 스위치들의 MAC 주소 테이블이 비어있다. 앞서 설명한 것처럼 스위치, 라우터가 기본적으로 전송하는 CDP 등의 프레임 때문에 이들이 사용하는 MAC 주소가 MA 주소 테이블에 기록된다.
또, 라이터의 IOS 버전에 따라 다르겠으나, 본서에서 사용하는 라우터들은 약 10분마다 MOP console이라는 프로토콜이 브로드캐스트 패킷을 전송하여 각 스위치에 MAC 주소 테이블에 라우터들의 MAC 주소가 인스톨되있다. 그러나 ,설명의 편의를 위하여 이런 프레임들은 제외하기로 한다.
처음에는 모든 스위치들의 MAC 주소 테이블에 동적은 MAC 주소가 없다.
처음에는 모든 스위치들의 동적 MAC 주소 테이블이 비어 있다.
R1과 R3간의 프레임 송수신을 위하여 다음과 같이 R1에서 R3으로 핑을 한다.
R1은 목적지 IP주소인 1.1.1.3의 MAC 주소를 알아내기 위하여 ARP라는 프로톨콜이 브로드캐스트 프레임을 전송한다. ARP에 대해서는 다음 절에서 상세히 공부한다. SW1은 F1/0/1 포트를 통하여 R1이 보낸 프레임을 수신한다. SW1은 수신한 프레임의 MAC 주소를 읽고 이를 자신의 MAC 주소 테이블에 기록한다. 이 시점에서 스위치 SW1의 MAC 주소 테이블은 다음과 같다.
즉, MAC 주소가 0000.0000.0001인 R1은 F1/0/1 포트를 통해서 도달할 수 있다는 것이 기록된다. 브로드캐스트 프레임을 수신한 스취이 SW1은 F1/0/1 포트를 제외한 모든 포트로 이 프레임을 플러딩한다.
SW1이 플러딩한 브로드 캐스트 프레임을 수신한 스위치 SW2도 F0/14를 제외한 모든 포트로 이 프레임을 플러딩 한다. 이 시점에서 스위치 SW2의 MAC 주소 테이블은 다음과 같다.
즉, MAC 주소가 0000.0000.0001인 R1은 F0/14 포트를 통해서 도달할 수 있다는 것이 기록된다. SW2가 플러딩한 브로드캐스트 프레임을 F0/12 포트를 통하여 수신한 스위치 SW4도 F0/12 포트를 제외한 모든 포트로 이 프레임을 플러딩한다. 이 시점에서 스위치 SW4의 MAC 주소 테이블은 다음과 같다.
마찬가지로, SW4가 플러딩한 브로드캐스트 프레임을 F0/14 포트를 통하여 수신한 스위치 SW3도 F0/14 포트를 제외한 모든 포틀 ㅗ이 프레임을 플러딩한다. 이 시점에서 스위치 SW3의 MAC 주소 테이블은 다음과 같다.
이렇게하여 R1이 보낸 ARP 프레임이 R3에게 도달한다.
결과적으로 모든 스위치에 다음과 같은 MAC 주소 테이블이 만들어진다.
브로드캐스트 프레임을 수신한 R3은 자신의 MAC 주소를 찾은 ARP 프레임이라는 것을 알게된다. R3는 자신의 MAC 주소를 R1에게 알려준다. 이때 R3의 MAC 주소인 0000.0000.0003이 출발지 MAC 주소이고, R1의 MAC 주소인 0000.0000.0001이 목적지 MAC 주소로 설정된 프레임을 사용한다.
SW3은 F0/3 포트를 통하여 R3이 보낸 프레임을 수신한다. 수신한 프레임의 출발지 MAC 주소를 확인하여, MAC 주소 테이블에 기록한다.
이 시점에서 스위치 SW3의 MAC 주소 테이블은 다음과 같다.
다음에는 수신한 프레임의 목적지 MAC 주소가 R1의 MAC 주소인 0000.0000.0001인 것을 확인한다. 이 주소는 MAC 주소 테이블에 존재하므로, 해당 프레임을 F0/14포트로 전송한다.
SW3이 송신한 프레임을 SW4가 F0/14 포트를 통하여 수신한다. 수신한 프레임의 출발지 MAC 주소 0000.0000.0003을 확인하고, 새로운 것이므로 MAC 주소 테이블에 기록한다. 이 시점에 스위치 SW4의 MAC 주소 테이블은 다음과 같다.
다음에는 수신한 프렘의 목적지 MAC 주소가 0000.0000.0001인 것을 확인한다. 이 주소는 MAC 주소 테이블에 존재하므로, 해당 프레임을 F0/12포트로 전송한다.
SW4가 송신한 프레임을 SW2가 F0/12 포트를 통하여 수신한다. 수신한 프레임의 출발지 MAC 주소 0000.0000.0003을 확인하고, 새로운 것이므로 MAC 주소 테이블에 기록한다.
이 시점에 스위치 SW2의 MAC 주소 테이블은 다음과 같다.
다음에는 수신한 프레임의 목적지 MAC 주소가 0000.0000.0001인 것을 확인한다. 이 주소는 MAC 주소 테이블에 존재하므로, 해당 프레임을 F0/14 포트로 전송한다.
SW2가 송신한 프레임을 SW1이 F1/0/14 포트를 통하여 수신한다. 수신한 프레임의 출발지 MAC 주소 0000.0000.0003을 확인하고, 새로운 것이므로 MAC 주소 테이블에 기록한다. 이 시점의 스위치 SW1의 MAC 주소 테이블은 다음과 같다.
다음에는 수신한 프레임의 목적지 MAC 주소가 0000.0000.0001인 것을 확인한다. 이 주소는 MAC 주소 테이블에 존재하므로, 해당 프레임을 F1/0/1 포트로 전송한다.
결과적으로, 각 스위치에서 다음 그림과 같은 MAC 주소 테이블이 만들어진다.
IP 주소가 1.1.1.3인 R3의 MAC 주소를 알게된 R1은 이후 출발지 MAC 주소가 0000.0000.0001이고 목적지가 0000.0000.0003인 프레임을 만들어 R3에게 전송한다. 이를 수신한 스위치 SW1은 출발지 MAC 주소가 이미 자신의 MAC 주소 테이블에 있는 것을 확인하고 타이머를 초기화시킨다. 그리고 목적지 MAC 주소를 테이블에서 확인한 다음 프레임을 F1/0/14포트로 전송한다.
동일한 과정이 모든 스위치에서 반복되면 MAC 주소 테이블이 유지된다. 기본적으로 5분동안 특정 장비가 통신을 하지 않으면 타이머가 종료되고 해당 MAC 주소를 MAC 주소 테이블에서 제거한다.
- MAC 주소 테이블에 없는 유니캐스트 프레임
MAC 주소 테이블에 없는 유니캐스트 프레임(unknown unicast frame)이 왜 생길까?
그 이유는 스위치의 에이징 타이머와 PC나 라이터 등의 ARP 타이머 차이 때문이다. PC나 라우터 등이 처음 특정 IP 주소를 가진 장비와 통신을 시작할 때 상대방의 MAC 주소를 알아내기 위하여 ARP 프레임을 보낸다. 상태에게서 응답을 받으면 이를 자신의 ARP 테이블에 기록한다. 예를 들어, R1의 ARP 테이블은 다음과 같다.
시스코 라우터의 기본적인 ARP 타이머는 4시간이다. 즉, 상대방의 ARP 정보를 4시간 동안 유지한다. 그러나, 스위치의 MAC 주소 에이징 타이머는 기본적으로 5분이다. 예를 들어, SW1의 MAC 주소 테이블을 보면 R3의 MAC 주소가 없다 R3에서 프레임을 수신한지 5분이 지나서 스위치가 MAC 주소 테이블에서 R3의 MAC 주소를 삭제했다. 즉, 에이징 아웃(aging out) 되었다.
이때 R1에서 R3으로 핑을 하는 경우를 생각해 보자. R1의 자신의 ARP 테이블에 목적지 IP 주소 1.1.1.3에 대한 MAC 주소 정보 0000.0000.0003이 존재하므로 ARP를 하지 않는다. 즉, 목적지 MAC 주소가 0000.0000.0003인 프레임을 전송한다.
이를 수신한 SW1의 입장에서는 목적지 MAC 주소가 유니캐스트 주소이지만 자신의 MAC 주소 테이블에는 존재하지 않는다. 이와 같은 프레임이 SW1에게는 MAC 주소 테이블에 없는 유니캐스트 프레임이며, 트랜스패런트 브리징 규칙에 의하여 수신한 포트를 제외하고 동일한 VLAN에 소속된 모든 포트로 플러딩한다.
- 토폴로지 변화에 따른 MAC 주소 테이블의 변경
다음 그림과 같이 SW1과 SW2간의 링크가 다운되는 경우를 가정해 보자. 나중에 공부할 스패닝 트리 프로토콜에 의해서 30초후에 SW1의 F1/0/10 포트가 차단상태에서 전송상태로 바뀌어 프레임을 전송할 수 있게 된다.
그러나. 각 스위치의 MAC 주소 테이블이 따라서 변경되니 않으면 R1과 R3간의 통신이 두절된다. R3이 MAC 주소 테이블을 참조하여 R1으로 가는 프레임을 SW4로 전송하고, SW4는 이를 SW2로 전송한다면 SW2에서 프레임이 폐기된다. 결과적으로 SW3은 R1으로 가는 프레임을 R1으로 가는 프레임을 블랙홀로 전송하는 결과가 된다.
별도의 대책이 없으면 5분뒤에 각 스위치의 MAC 주소 테이블에서 R1, R3의 MAC 주소가 제거되고, 그 때 해당 MAC 주소를 플러딩하여 MAC 주소 테이블이 갱신될 것이다 .이는 토폴로지 변화시 최대 5분간 통신이 되지 않음을 의미한다.
이와 같은 결과를 방지하기 위하여 네트워크가 변경되는 경우 즉, 토폴로지가 변경될때 각 스위치들은 다음과 같이 동작한다.
1) 토폴로지 변화를 감지한 스위치는 이를 루트(root) 스위치에게 알린다. 스패닝 트리 프로토콜에서 중심이 되는 스위치를 루트 스위치라고 한다.
2) 루트 스위치는 토폴로지가 변화되었다는 것을 TCN(topology change notification) BPDU라는 프레임을 이용하여 각 스위치에게 알린다.
3) TCN BPDU를 수신한 각 스위치들은 기본적으로 MAC 주소 테이블의 에이징 타이머를 5분에서 15초로 단축시킨다. 결과적으로 토폴로지 변화에 영향을 받는 MAC 주소들이 빨리 MAC 주소 테이블에서 제거된다.
앞의 그림에서 SW3, SW4가 여기에 해당한다. 즉, SW3, SW4의 MAC 주소 테이블에서 R1의 MAC 주소인 0000.0000.0001이 15초 후 제거된다. 이때 사용되는 15초를 전송지연 타이머(forward delay timer)라도 한다. 또, 다운된 링크에 직접 접속되어 있는 스위치들은 15초를 기다리지 않고 즉시 영향을 받는 MAC 주소를 MAC 주소 테이블에서 제거한다. 그림에서 SW1, SW2가 여기에 해당한다.
이후 SW3이 목적지 MAC 주소가 0000.0000.0001인 프레임을 수신하면 MAC 주소 테이블에 없는 유니캐스트 프레임이므로 플러딩하고 MAC 주소 테이블이 갱신된다.
결과적으로 토폴로지 변화에 따라 MAC 주소 테이블의 변경도 빨라져서 통신 두절 시간을 최소화시킨다.
- 정적은 MAC 주소 테이블 설정
MAC 주소 테이블에는 트랜스패런트 브리징에 의한 동적인 MAC 주소뿐만 아니라 네트워크 관리자가 직접 MAC 주소와 목적지 포트를 설정할 수도 있다, 또, 기본적으로 5분인 에이징 타임을 조정할 수도 있다.
스위치 모델별로 저장할 수 있는 MAC 주소의 수량이 제한되어 있다. 현재 MAC 주소 테이블에 저장되어 있는 MAC 주소의 수량 및 추가로 저장할 수 있는 수량을 확인하려면 show mac address-table count 명령어를 사용한다.
IEEE 802.1D에서는 MAC 주소 테이블이 차면 가장 오래된 MAC 주소를 제거할 수 있다고 되어 있으나, 실제 대부분의 스위치들은 MAC 주소 테이블이 차도 가장 오래된 MAC 주소를 제거하지 않는다. 대신 새로 알게된 MAc 주소에 대해서 스위치가 마치 허브(hub)처럼 동작한다.
즉, 해당 MAC 주소를 목적지로 하는 프레임을 포트로 플러딩시킨다. 이것을 보안에 심각한 영향을 미칠 수 있으며, 실제 이런 특징을 이용한 해킹방법이 존재하다.
그럼 왜 MAC 주소 테이블이 찼을 때 오래된 MAC 주소르 제거하지 않을까? 그것은 오래된 MAC 주소는 그 만큼 통신량이 많다는 의미이고 이런 MAC 주소를 제거한다면 네트워크에 더 많은 부하가 걸릴 수 있기 때문이다.
서버나 라우터 등 통신량이 많은 장비들은 일시적으로 다운되었다가 다시 살아났을 때에도 MAC 주소가 항상 MAC 주소 테이블에 존재할 필요가 있다. 이런 용도로 사용하는 것이 정적인 MAC 주소 지정이다.(일반적으로 스위치의 MAC 주소 테이블이 차는 경우가 발생한다면 네트워크 설계에 문제가 있다고 볼 수 있다. 이 때에는 라우터나 L3 스위치를 이용하여 네트워크를 분리해주어야 한다.)
MAC 주소 테이블에 특정 MAC 주소를 정적으로 설정하여 항상 존재하게 하려면 mac address-table static 명령어를 사용한다. 예를 들어, SW1의 F1/0/2 포트에 0000.0000.0002 MAC 주소를 가진 장비가 접속되어 있을 때 다음과 같이 설정하면 된다.
이 설정의 의미지 MAC 주소 0000.0000.0002인 장비와 통신하려면 스위치 SW1의 VLAN 1에 소속된 F1/0/2 포트로 프레임을 보내라는 것이다. 정적인 MAC 주소 설정을 확인하면 show mac address-table static 명령어를 사용한다.
- MAC 주소 에이징 타임 설정
동적인 MAC 주소들은 기본적으로 300초 (5분) 동안 프레임을 하나라도 전송하지 않으면 MAC 주소 테이블에서 제거된다. 현재 설정된 MAC 주소의 에이징 타이머(aging timer)를 확인하려면 다음과 같이 show mac address-table aging-time 명령어를 사용한다.
동적인 MAC 주소의 에이징 타이머를 조정하려면 mac address-table aging-time 명령어를 사용한다.
1. 타이머 값을 0으로 설정하면 시간이 지나도 동적인 MAC 주소가 MAC 주소 테이블에서 제거되지 않는다. 10-1000000 초 사이의 값을 부여할 수 있다.
2. VLAN을 지정하면 해당 VLAN에 속한 MAC 주소에 대해서만 변경된 에이정 타이머가 적용된다. 지정하지 않으면 모든 동적인 MAC 주소에 대해서 적용된다.
'IT > 네트워크관리사2급' 카테고리의 다른 글
스위치 동작 (0) | 2018.01.13 |
---|---|
MAC 주소 테이블 (0) | 2018.01.12 |
MAC 주소와 IP 주소의 관계 (0) | 2018.01.11 |
트랜스패런트 브리징 (0) | 2018.01.11 |
취득사진 (0) | 2018.01.11 |