2018년 1월 23일 화요일

DHCP (Dynamic Host Configuration Protocol) 와 다시 짚고 넘어가는 이더넷(Ethernet) 그리고 스위치 (Swich), STP (Spanning Tree Protocol) 스패닝 트리




DHCP (Dynamic Host Configuration Protocol)

  • PC나 호스트가 지정된 IP address를 갖는 것이 아니라 PC가 부팅되면 DHCP 서버로부터 dymanic한 방식으로IP 주소를 하나씩 받아오는 방식이다. (동적 IP address 할당)
  • PC들은 부팅되면, TCP/IP 네트워크에 참여하기 위해서 자신이 사용해야할 IP 주소 정보(IP 주소, 서브넷 마스크, 기본 게이트웨이, DNS 서버)를 찾는다.
  • IP 주소 배정을 자동으로 하고 IP 주소 관리를 편하게 해준다.
  • DHCP는 임대(Lease) 서비스이기 때문에 사용 기간을 설정할 수도 있다.
  • DHCP 서버의 역할은 주로 전문 서버 장비들이 하지만 시스코의 경우 라우터도 이 기능을 지원한다.
  • UDP 포트 67, 68 사용 (67은 서버, 68은 클라이언트) 


* DHCP 동작
 
* 4단계 과정을 거쳐서 클라이언트에게 IP address를 할당한다.
 
1) DHCP Discover : 클라이언트 -> 서버에게 'Discover' 메세지 전송 (IP 임대 요청 시작)
출발지 포트 번호 : 68 목적지 포트 번호 : 67 출발지 IP 주소 : 0.0.0.0 목적지 IP 주소 : 255.255.255.255
 
- 'Discover' 메세지를 수신한 서버는 IP 주소 중복을 방지하기 위해서 ICMP Echo 전송 실시
 
 
2) DHCP Offer : 서버 -> 클라이언트에게 'Offer' 메세지 전송 (IP 임대 응답)
출발지 포트 번호 : 67 목적지 포트 번호 : 68 출발지 IP 주소 : DHCP 서버 목적지 IP 주소 : 255.255.255.255
 
3) DHCP Request : 클라이언트 -> 서버에게 'Request' 메세지 전송 (IP 임대 최종 요청)
출발지 포트 번호 : 68 목적지 포트 번호 : 67 출발지 IP 주소 : 0.0.0.0 목적지 IP 주소 : 255.255.255.255
 
4) DHCP Ack : 서버 -> 클라이언트에게 'Ack' 메세지 전송 (IP 임대)
출발지 포트 번호 : 67 목적지 포트 번호 : 68 출발지 IP 주소 : DHCP 서버1 목적지 IP 주소 : 255.255.255.255
 
 
 
DHCP 서버 설정
 
Router(config)#service dhcp
// DHCP 서버를 사용가능하게 하겠다는 선언
(디폴트이기 때문에 안해도 되지만 확실히 하기 위해서 설정)
 
Router(config)#ip dhcp pool cisco
// DHCP로 사용된 주소의 pool(영역) 지정

Router(dhcp-config)#network 192.168.0.0 255.255.255.0
// DHCP로 할당할 IP address 대역을 지정

Router(dhcp-config)#default-router 192.168.0.254
// 호스트가 내부에서 목적지를 찾이 못했을 때 갈 수 있는 라우터의 이더넷 인터페이스의 IP주소

Router(dhcp-config)#exit
 
Router(config)#ip dhcp excluded-address 192.168.0.254
// DHCP로 할당할 IP address 중 할당하지 말아야할 IP adress 지정
즉, DHCP pool에서 제외시켜줄 IP를 지정한다.
(지금은 192.168.0.254가 라우터의 이더넷 인터페이스 IP로 사용되기 때문에 호스트에 할당되면 안된다.)
 
 
그 외에도
Router(dhcp-config)#dns-server x.x.x.x
// DNS 서버를 지정한다. (x.x.x.x는 DNS서버의 IP주소)
 
Router(dhcp-config)#domain-name cisco.com
// domain-name을 설정 (cisco.com은 임의로 사용했음)
 
Router(dhcp-config)#lease infinite
// 배정시간(lease time) 지정, 즉 IP를 얼마동안 할당하겠다는 의미
(infinite는 무한정으로 할당하겠다는 의미다. infinite 대신 <0 - 365> 입력 가능 (단위는 Days))
 
- 'show ip dhcp binding'으로 할당 내역을 확인할 수 있다.
 
- 'show ip dhcp server statistics'으로 사용되는 메모리, DHCP Pool 숫자, 배정된 IP 숫자 등을 확인할 수 있다.
 
- 'clear ip dhcp binding ?'으로 client IP 할당을 제거할 수 있다.
 
 
*라우터에 주소 받을 경우
interface fa0/0 no shutdown ip address dhcp 
*일반적으로 게이트웨이가 되는 라우터의 인터페이스는 수동으로 IP를 설정한다.

============================================================
 

이더넷 (Ethernet)
 
-이더넷은 LAN 구간에서 사용되는 네트워킹의 방식 중 하나(즉 layer 2에서 사용되는 프로토콜), 다른 방식으로는 토큰링, FDDI, ATM 방식이 있다.
- LAN (layer 2)에서 사용되는 프로토콜. 1980년에 DEC, 인텔, 제록스가 공동으로 이더넷 1을 개발했고 이를 기반으로 1985년 IEEE에서 IEEE 802.3이라는 표준을 발표. 정확히 말하면 이더넷은 속도가 10Mbps만 지원되고, 프레임의 구조도 IEEE 802.3과 조금은 다르지만 대부분 두 개를 혼용해서 구분 없이 사용한다.

(네트워크 관련 표준을 만드는 단체가 여럿 있는데 그 중에서 LAN에 관련된 표준은 IEEE, WAN은 ITU-U, TCP/IP는 IETF에서 만든 것들이 많이 사용된다.)
































- 최초의 이더넷은 1970년 제록스에서 개발했고 초기에는 속도가 3Mbps에 불과. 1983년 10Mbps, 1995년에는 100Mbps, 1998년 1Gbps, 2002년 10Gbps 이더넷에 대한 IEEE 표준위원회 구성. 2010년에는 상용제품이 출시될 것으로 예상.
 
- 근래에는 전송거리가 100Km 이상인 제품들이 개발되어 LAN 뿐만 아니라 도시 내 통신에서도 이더넷이 많이 사용.
 
- 이더넷의 가장 큰 특징은 CSMA/CD 방식을 이용해서 통신을 한다는 것
 
- CSMA/CD는 half duplex로 동작하는 링크에서는 이더넷이 프레임을 전송하는 절차이다.
 
- 개발된 순서 :  MA -> CSMA -> CSMA/CD

 


























1) 프레임을 전송하기 전에 현재 전송되고 있는 프레임이 있는지 확인 -> 이 과정을 Carrier Sense(네트워크 신호가 있는지를 감지하는 것) 이라고 한다. * 반송파 감지
2) 전송할 프레임을 가진 모든 이더넷 장비는 언제라도 캐리어 Sensing을 한 다음 자신의 프레임을 전송할 수 있는데 이렇게 동시에 모든 장비가 데이터를 실어 보내는 것을 Multiple Access(다중 접근)라고 한다.
3) 이더넷은 복수개의 장비가 동시에 프레임을 전송할 수 있고, 이 경우 충돌이 일어날 수 있으므로 프레임 전송 후 에는 항상 충동 발생여부를 확인한다. 이것이 충돌감지 (Collision Detection)이라고 한다.충돌이 발생하면 랜덤한 시간동안 기다렸다가 다시 전송 (랜덤한 시간은 다시 충돌을 방지하기 위해서)
 
=> half-duplex 네트워크에서는 데이터 전송량이 많을 때 프레임 충돌이 많이 발생한다. 이더넷 장비들은 충돌
발생 시 최대 15회까지 재전송을 시도하고, 그래도 실패하면 해당 프레임의 전송을 포기한다.
 
=> 위에서 설명한 이더넷 동작방식을 줄여서 CSMA/CD라고 한다. 그리고 이렇게 충돌이 일어나는 영역을 콜리전 도메인이라고 한다.
* 허브와 브릿지의 차이는 콜리전 도메인의 유무?



* 이더넷 프레임의 구조
 
Preamble
Destination MAC
Source MAC
Type
DATA
FCS
8byte
6byte
6byte
2byte
46~1500byte
4byte
 
- Preamble : Frame의 시작을 나타내는 필드
 
10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101010 -> 준비
10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011 -> 시작

=> 앞의 7byte 부분은 수신측에게 이더넷 프레임이 전송된다는 것을 알리고 이제 곧 도착한 이더넷 프레임에서 0과 1을 제대로 구분할 수 있게 동기(Syncronization)신호를 제공하는 역할. 때문에 이더넷은 동기를 위한 별도의clock을 사용하지 않는다. =>
 
=> 마지막이 0이냐 1이냐 (마지막의 10101011을 나타내는 1byte 부분을 SOF(Start Of Frame)이라고도 한다.)
 
=> 이더넷 프레임의 크기를 나타낼 때 프리엠플과 SOF를 합친 8bit는 제외한다.
 
- Destination MAC : 수신지 MAC Address (목적지 이더넷 포트의 MAC 주소 표시
=> 목적지 MAC 주소는 유니캐스트, 브로드캐스트, 멀티캐스트 중 하나)
 
- Source MAC : 송신지 MAC Address (출발하는 이더넷 포트의 MAC 주소 표시 -> 항상 유니캐스트)
 
- Type : 상위계층 프로토콜(Network Layer: IPv4, IPv6, IPX, Appletalk) ,
데이터 필드의 길이나 MAC 클라이언트 프로토콜의 종류를 표시
(1500이하이면 데이터 필드의 길이 표시 1500이상이면 MAC 클라이언트 프로토콜의 종류, 즉 이더타입 표시)
 
- DATA : 상위계층에서 받은 캡슐화 된 데이터(Network PDU : Packet)
 
- FCS : 오류검출용 필드(CRC-32), FCS(Frame check sequence)로 전송되는 이더넷프레임의 목적지 MAC 주소부터 데이터 필드까지 에러발생 여부를 확인하기 위한 필드.
 
===========================================================

스위치 (Swich)
 
브리지와 스위치는 MAC 주소와 포트번호가 기록된 MAC 주소 테이블을 가지고 있어서 목적지 MAC 주소를 가진 장비가 연결된 포트로만 프레임을 전송한다.
=> MAC주소 테이블은 목적지 MAC 주소와 포트번호가 기록된 데이터베이스. 스위치는 MAC 주소 테이블을 참조하여 수신 프레임을 전송한다. (CAM(content addressable memory)테이블이라고도 한다.
 
허브는 한 포트에서 수신한 프레임을 모든 포트로 전송하여 다른 포트가 프레임을 전송할 때 충돌이 일어날 수 있다.
=> 그래서 허브는 동일한 collision domain안에 있다고 한다. 
스위치는 한 포트에서 전송되는 프레임이 MAC 주소 테이블에 있는 특정 포트로만 전송되기 때문에 다른 포트가 전송하는 프레임과는 충돌이 일어나지 않으며 이것을 일컬어 '스위치는 각각의 포트가 하나의 충돌 영역에 있다.'고 한다.
=> 1번 포트에 연결된 PC가 2번 포트에 연결된 PC와 데이터를 주고받는 동안에 3번 포트에 연결된 PC가 4번 포트에 연결된 PC와 서로 데이터를 주고받을 수 있다. (허브는 1,2번 사이에서 통신이 일어나면 나머지 모든 PC들은 기다려야 한다.)
-> 허브는 일차선 도로 (자동차가 하나밖에 지나갈 수 없다.)
-> 스위치는 다차선 도로 (포트가 10개면 10차선 도로)
 
스위치를 사용하면 프레임의 충돌이 감소하여 네트워크의 성능이 향상되고 보안성도 좋아진다. 요즘은 스위치가 발전하여 MAC 주소뿐 아니라 레이어 3,4,5,6,7 등 상위 계층의 정보도 함께 참조하여 스위칭을 결정하는 제품들이 많다. 이러한 스위치들과 구분하여 MAC 주소만 참조하여 스위칭 시키는 제품들을 L2 스위치라고 한다.
 => 보L2 스위치를 그냥 스위치라고 부르는 것이 대부분이다.
 
스위치는 프레임의 목적지 MAC 주소가 브로드캐스트일 때 수신한 프레임을 모든 포트로 전송하며 이것을 플러딩(flooding)이라고 한다. PC에서 사용되는 많은 통신용 프로토콜을 브로드캐스트 프레임을 사용하기 때문에 스위치에 접속된 장비가 많아질수록 브로드캐스트 트래픽도 증가하고 이로 인한 네트워크의 성능저하가 심각해진다.
=> 이를 해결하기 위해 VLAN 도입, 동일한 스위치라도 VLAN이 다르면 브로드캐스트 프레임이 차단되어 브로드캐스트 프레임의 플러딩으로 인한 성능저하와 보완성 문제를 해결.
 
* 스위치와 허브의 차이점 중 하나가 full wire => 100Mbps의 전송속도를 갖는 5포트 허브에 하나의 포트에만 pc가 연결돼 있어도 속도는 20Mbps (전체속도/포트 숫자)
하지만 스위치의 경우 포트에 하나의 포트에만 pc가 연결되면 전체속도를 몰아서 100Mbps를 준다. 5개가 다 연결될 경우는 똑같이 속도를 나눠서 20Mbps
=> full wire가 L1과 L2의 차이중 하나이다. 스위치는 허브와는 달리 MAC 주소를 보고 전송한다. 스위치는 허브와는 달리 포트별로 collision domain을 나눠준다.
 
 
- L2 스위치 : Mac 주소로 통신(2계층)
 
- L3 스위치 : 전통적인 라우터의 속도의 한계를 극복하고 VLAN간의 고속 라우팅을 위해 L3 스위치를 사용하는 경우가 많다. L3 스위치는 동일한 VLAN 포트간 에는 스위칭 기능을 제공하고 서로 다른 VLAN 포트 간에는 라우팅 기능을 제공한다. 전통적인 라우터와
비교하면 라우팅 속도가 훨씬 빠른 반면 장거리 통신망을 연결하는 포트가 없는 것이 많다.
 
즉, L2 S/W + 라우터(2,3계층), 요새는 주로 라우터보다 L3 스위치를 많이 쓴다.
단점은 퍼포먼스가 낮다. 백본으로 사용하기 힘들다.
=> 요새 라우터는 SOHO장비(저가) 혹은 백본용 라우터만 많이 사용된다. 중간층은 주로 L3 한대로 대체

* 모든 스위치 장비는 MAC 어드레스를 봐야한다. 스위치에는 CPU가 없고 ASIC(Application-Specific integrated circuit)칩 (주문생산형 칩->특정한 작업만 하는)이 있다.
기본적으로 스위치는 Layer 2, ASIC 칩은 맥주소를 보는 작업만 한다. 만일 ASIC 칩이 IP 프로토콜까지 본다면 L3 장비) 라우터는 CPU가 있다. (라우터는 L3 장비) 속도는 스위치가 빠르지만 꼭 속도가 빠르다고 좋은 아니다. (뭔가 허술할 수가 있다.)
 
* 라우터는 라우팅 테이블 (ip 주소)
* 스위치는 mac 테이블 (mac 주소)
 
- 라우터가 받는 데이터는 패킷, 패킷이 들어오면 목적지 아이피를 확인하고 자신이 가지고 있는 라우팅 테이블에 매치를 해본다.
매치가 안되면 드랍, 매치되면 경로를 따서 포워딩 -> 라우팅
 
- 스위치가 받는 데이터는 프레임, 프레임이 들어오면 Mac 주소를 확인하고 Mac테이블(CAM테이블이라고도 한다.)에 매치를 해본다.
매치가 되면 매치된 포트로 포워딩, 매치가 안되면 플러딩을 발생시킨다. 즉. 프레임이 들어온 포트를 제외하고 모든 장비에
무조건 뿌린다, 드랍이 없다.
 
* 스위치의 대표적 기능
  • 학습
  • 포워드
  • 필터링
스위치의 전송 방식에는 Store and Forward, Cut-through, Fragment-Free이 있다.
 
1) Store and Forward : Frame을 전부 받은 다음 처리를 시작하는 방식. source address, destination address, 에러발생 여부를 확인하고 처리한다. 에러가 발생하면 Frame을 버리고 재전송을 요구.(에러 복구 능력이 좋다.) 하지만 다른 방식에 비해 느리다는 단점이 있다.

2) Cut-through : 수신되는 Frame의 목적지 주소만 본 다음 바로 전송을 하는 방식. 처음 6 byte만 보고 전송하기 때문에 속도가 빠르지만 에러 복구 능력에는 약점을 가지고 있다. (거의 사용되지 않는다.)

3) Fragment-Free : 위의 두 가지 방식을 결합한 방식, 처음 64 byte를 보고 전송하는 방식이다. Store and Forward보다는 빠르고 Cut-through 보다는 에러 감지 능력이 좋다고 볼 수 있다. (주로 64byte 쯤에서 에러가 많이 발생한다.)
 
- Swich는 최대 300개 이상 Port를 하나에 Switch가 갖을 수 있다. (Bridge는 최대 16개)
 
============================================================
 
<Transparent bridging>
 
- 이더넷 스위치가 프레임을 수신하여 목적지로 전송하는 방식과 절차를 정의한다.
 
- 스위치지가 수신한 이더넷 프레임을 참조하여 MAC 주소 테이블을 생성 및 갱신하고 목적지로 전송할 때
사용하는 프로토콜을 트랜스 패런트브리징 이라고 한다.
 
- 트랜스패런트(투명한)라는 용어는 '사용자가 의식하지 못하게 자동으로 동작한다.'는 의미이다.
 
- RSTP와 더불어 IEEE 802.1Q를 구성하며, 이 두 가지가 레이어 2 스위칭의 핵심 구성요소이다.
 
* 트랜스 패런트 브리징 절차

1) 스위치가 인터페이스를 통해 이더넷 프레임을 수신
 
2) 이더넷 프레임의 Source MAC address를 읽는다. 이 주소가 스위치의 MAC address table에 없을 경우 수신 포트와 source MAC address를 MAC address table에 저장한다.
=> 이러한 과정을 learning 과정이라고 한다.

MAC address table에 해당 MAC 주소가 있으면 Aging time을 초기화 시킨다. 스위치가 MAC 주소를 MAC address table에 기록할 때 항상 타이머도 동시에 설정한다. 기본적으로 5분이 지나도록 해당 MAC 주소의 프레임이 전송되지 않는다면 해당 MAC 주소를 MAC address table에서 제거한다.
 
이렇게 타이머를 설정한 후 MAC address table에 저장된 MAC 주소를 가진 프레임을 수신할때마다 타이머를 초기화하고 정해진 시간 동안(기본 5분) 해당 프레임의 전송이 없으면 MAC address table에서 제거한다.
=> 이러한 과정을 aging이라고 한다.
3) 이더넷 프레임의 destination MAC address를 읽는다. 목적지 MAC address가 브로드캐스트 주소(FFFF.FFFF.FFFF)거 MAC address table에 없는 유니캐스트 또는 멀티캐스트 주소이면 그 프레임을 수신한 포트를 제외하고 동일한 VLAN에 속하는 모든 포트로 전송한다.
 => 이러한 과정을 flooding이라고 한다.
 
MAC 주소 테이블 상 목적지 MAC 주소와 연결되는 포트가 수신포트와 동일하면 해당 프레임을 차단한다.
(출발지와 목적지가 같은 포트에 있기 때문에 이 프레임을 다른 포트로 전송할 필요가 없다.)
=> 이러한 과정을 filtering이라고 한다.
 
목적지 주소가 MAC address table에 존재하고 목적지 MAC주소로 가는 포트가 프레임의 수신 포트와 동일하지 않은 유니캐스트 프레임을 수신하면 목적지 포트로 프레임을 전송한다.
=> 이러한 과정을 fowarding이라고 한다.
@ 이렇게 learning, aging, flooding, filtering, forwarding 과정이 모두 합쳐저 트랜스패런트 브리징 기능을 수행한다.
 
@ 라우팅 테이블은 우리가 만들었지만 MAC 테이블은 스위치가 자동으로 만든다. (자동학습)
 
============================================================
 
- PC나 라우터 등이 처음 특정 IP 주소를 가진 장비와 통신을 시작할 때 상대방의 MAC 주소를 알아내기 위하여 ARP 프레임을 보낸다.
상대방에게서 응답을 받으면 자신의 ARP 테이블에 기록한다. ('sh arp'명령어로 ARP 테이블 확인 가능)
 
- 시스코 라우터의 기본적인 ARP 타이머는 4시간 (즉, 상대방의 ARP 정보를 4시간 동안 유지한다.)
하지만 스위치의 MAC 주소 에이징 타이머는 기본적으로 5분
(5분 동안 해당 프레임을 수신 받지 못하면 테이블에서 삭제한다.) -> aging out
 
- 스위치 모델별로 저장할 수 있는 MAC 주소의 수량이 제한돼 있다. IEEE 802.1D에서 MAC 주소 테이블이 차면 가장 오랜 된 MAC 주소를
제거할 수 있다고 되어 있으나 실제 대부분의 스위치들은 MAC 주소 테이블이 차도 가장 오래된 MAC 주소를 제거하지 않고 새로 알게 된 MAC 주소들에 대해서는 마치 허브처럼 동작한다.
=> 즉, 해당 MAC 주소를 목적지로 하는 프레임을 모든 포트로 플러딩 시킨다. 이것은 보안에 심각한 영향을 준다.
(해킹 당할 수 있다.)
 
- 오래된 MAC 주소는 오래된 만큼 통신량이 많다는 의미 -> 이러한 MAC 주소를 제거하면 네트워크에 더 많은 부하가 걸릴 수 있기 때문에 삭제하지 않는다.
 
- 서버나 라우터 등 통신량이 많은 장비들은 일시적으로 다운되었다가 다시 살아났을 때에도 MAC 주소가 항상 MAC 주소 테이블에 존재할 필요하가 있다. (때문에 스태틱으로 MAC 주소를 지정한다.)
 
- 일반적으로 스위치의 MAC 주소 테이블이 차는 경우가 발생하면 네트워크 설계에 문제가 있다고 볼 수 있다.
이때는 라우터 혹은 L3 스위치를 이용하여 네트워크를 분리해줘야 한다.
 
============================================================
 
<Looping 현상>
- 스위치에서 플러딩이 발생했을 때 여러 대의 스위치가 플러딩을 계속 반복하는 상황
 
- looping은 프레임의 네트워크상에서 무한정으로 돌기 때문에 정상적인 네트워킹이 불가능하다.
이더넷 특성상 네트워크가 조용해야만 데이터를 전송할 수 있다.
(네트워크를 디자인할 때 가장 주의해야할 문제중 하나다.)

- ring 구조로 이중화를 구성할 경우 이러한 문제가 발생한다.
 
- ring 구조 이중화일 경우 브로드캐스트 프레임을 수신 받은 두 개의 스위치가 서로에게 브로드캐스트 프레임을 flooding한다.
후 다시 서로에게 다시 전송을 반복하는 looping 상태에 빠진다. 이렇게 루핑이 발생하면 다른 데이터를 전송할 수 없다. (CSMA/CD 특성상 한 세그먼트에서는 오직 하나만 통신이 가능하다.)
=> 이중화를 구성하기 않고 하나의 경로만 만들 경우 루핑을 막을 수 있다. 하지만 하나의 경로에 이상이 생길 경우 대체 경로가 없어 네트워킹이 정상적으로 이루어지지 않는다. 
@ 때문에 ring 구조 이중화일 경우 자동으로 루핑을 막아주는 Spanning Tree Algorithm을 사용한다.
 
===========================================================
 


STP (Spanning Tree Protocol)
 
- 이중화된 스위치에서 looping이 발생하는 것을 미리 막기 위해서 두 개 이상의 경로가 발생하면 하나를 제외하고 나머지 경로들을 자동으로 막아두었다가 통신을 하던 경로에 이상이 발생했을 경우 막아두었던 경로로 데이터를 전송하게 하는 알고리즘이다.
 
- STP에 의해 통신을 하던 원래의 링크에 문제가 생겼을 경우 대기하고 있던 다른 링크로 대체하기까지 약 1분 정도의 시간이 걸린다. (즉, 사용자들은 1분간 통신을 할 수 없다.)
 
-> 하지만 최근에는 여러 기술들로 이러한 약점들을 보완하고 있다.
 
1) ether 채널 : 여러개의 링크가 하나의 링크처럼 동작하게 하는 기술 (최대 8개 링크를 묶을 수 있다.)
평소에는 두배의 속도를 낼 수 있고 한 링크가 끊어져도 기다리는 시간 없이 링크가 유지된다.
 
2) uplink 패스트 : 링크의 복구 시간을 1분에서 약 2~3초 안에 가능하도록 만든 기술
 
3) RSTP, MSTP 등의 기술을 사용해도 컨버젼스 시간을 단축시킬 수 있다.
 
- STP는 대부분의 스위치에서 지원되는 프로토콜이다. STP는 IEEE에서 2004년에 개정한 802.1D-2004 표준에 의해서 RSTP(Rapid Spanning Tree)로 대체되었으나 아직도 현재 필드에서는 RSTP대신에 STP를 많이 사용한다.
 
- STP는 BPDU(Bridge protocol data unit)라는 프레임을 이용하여 루프가 없는 경로를 구성한다.
 
============================================================

BPDU (Bridge Protocol Data Unit)
 
- BPDU는 configuration(설정) BPDU와 TCN(Topology change notification) BPDU 두 종류가 있다.
 
1) configuration BPDU (35바이트)
 
  • 스위치는 cofiguaration BPDU를 이용하여 루트 스위치를 선출하고 스위치 포트의 역할을 지정
  • configuration BPDU는 항상 루트 스위치가 만들고 다른 스위치들은 이것을 다음에 있는 스위치로 중계한다.
  • 프로토콜 ID : 항상 0
-Version : BPDU의 버전 표시(STP ->0, RSTP -> 2, MSTP ->3)
-Type : BPDU의 버전 표시
-Flag : 토폴로지 변화 표시
-Root bridge ID : 루트 스위치의 ID
-Path cost(경로값) : 루트 스위치까지의 경로값
-Bridge ID : 루트 스위치로 가는 경로상의 직전 스위치의 스위치 ID
-Port ID : 포트 ID
-Message Age : 루트 스위치까지의 스위치의 숫자
-Max Age : BPDU 정보를 저장하는 시간
-Hello time : BPDU 전송 주기
-Forward delay : 청취상태와 학습상태에 머무르는 기간
 => 이러한 내용이 configuration BPDU에 들어있다.
 
2) TCN BPDU
  • TCN BPDU는 스위치가 연결된 링크에 변화가 생겼을때 이것을 루트 스위치에게 알리기 위해서 사용
  • TCN BPDU는 프로토콜 ID, Version, Type의 내용이 들어있다.
  • STP를 위해서 Bridge ID, Route bridge ID, Path Cost, Port ID를 알아야 한다.

1. 브리지 ID : 브리지나 스위치들이 통신할 때 서로를 확인하기 위해 하나씩 가지고 있는 번호
(bridge priority(2바이트) + MAC address(6바이트) => 브리지 ID)
 
디폴트로 bridge prioritysms 32768이다. (0~65535)
 
2.루트 브리지 ID : 루트 스위치의 브리지 ID이다.
 
3. Path cost : 다른 스위치와 연결된 링크가 얼마나 빠른 링크로 연결되어 있는지 알아내기 위한 값.

(경로값)(1000Mbps를 두 스위치 사이의 링크 bandwidth로 나눈 값 => ex) 링크 B/W가 10Mbps이 경우 1000/10 = 100)
path cost는 작을수록 더 좋은 값이다. (링크사이의 대역폭이 클수록 값이 작아지니까)
IEEE에서 미리 정한 값을 사용한다.

 10Mbps -> 100 
 100Mbps -> 19 
 1Gbps -> 4 
 10Gbps -> 2 

=> BPDU에서 사용하는 path cost는 해당 스위치에서 루트 스위치까지의 경로 값을 합한 것이다.
 
4. 포트 ID : BPDU를 전송하는 스위치의 포트 우선순위와 포트 번호로 구성된다. (기본값 128)
 























=> 'show spanning tree' 명령어로 각각의 정보를 확인할 수 있다.

 
============================================================
 


<STP의 동작 방식>
 
























1. 전체 스위치 중에 Root스위치를 하나 선출한다.
 
2. root 스위치가 아닌 다른 스위치들은 Root포트(RP) 를 하나씩 선택한다.
 
3. 한 스위치의 Segment(케이블)마다 designated(지정)포트를 하나씩 선택한다.
 
4. root포트와 designated 포트가 아닌 포트를 alternate 포트라고 한다.
alternate 포트는 항상 block(차단)상태이다.

=> 이렇게 동작을 하면 논리적으로 looping을 방지할 수 있다.
 
 
1) root 스위치 선출
 
=> Bridge ID가 가장 낮은 값을 가진 스위치가 root 스위치가 된다.
 
2) root 포트 선택
 
=> root 스위치를 선택한 다음 나머지 스위치에서 root 포트를 선택해야 한다.

*다음 사항을 비교한 다음 선출
  • root 스위치의 ID가 가장 낮은 BPDU를 수신한 포트
  • path cost가 가장 작은 포트
  • 인접 스위치의 브리지 ID가 가장 낮은 포트
  • 인접 스위치의 포트 ID가 가장 낮은 포트
  • 자신의 포트 ID가 가장 낮은 포트

 
3) Designated 포트 선택
 
=> 하나의 segment(케이블) 당 하나의 designated포트가 선택된다.
  •  root 스위치의 각 포트
  •  낮은 순위의 BPDU를 수신한 포트
  •  path cost가 낮은 스위치의 포트
  •  브리지 ID가 낮은 스위치의 포트
  •  포트 ID가 낮은 포트

* 위의 항목을 순서대로 비교해서 designated 포트를 선택한다.

============================================================

<STP 포트 상태 변화>
 
- STP는 포트 상태를 차단, 청취, 학습, 전송, 비활성 상태로 분류한다.
 
1) Blocking state
 
=> 데이터 프레임을 송수신하지 않는다. 하지만 상대측 포트에서 전송하는 BPDU는 수신한다.
네트워크에 변화가 발생해서 포트가 대체 포트로 변경되면 즉시 차단상태로 변경된다.
다음 상황에서 blocking 상태에서 listening 상태로 변경.
 
- 상대측 포트에게 max age 시간 동안 BPDU를 수신하지 못했을 경우
- 상대측 포트에게 max age 시간 동안 낮은 순위의 BPDU를 수신했을 경우
 
2) Lstening state
 
=> 해당 포트를 STP fowarding 상태로 변경시키기 위한 준비 단계
 
=> 해당 포트의 역할이 designated 포트이면 listening 상태부터 BPDU를 전송하기 시작.
=> blocking 상태에서 listening 상태로 변경되는 것외에도 포트가 활성화되고 역할이
root 포트 또는 designate 포트이면 listening 상태가 된다.
 
=> listening 상태에서 Forward delay 시간 동안 특별한 문제가 없으면 learning 상태로 변경된다.
 
3) Learning state 

=> 해당 포트를 STP forwarding 상태로 변경시키기 바로 전의 단계이다.
 
=> 프레임을 스위칭시키 위한 준비 작업을 한다. MAC address table을 채우고 Forward delay 시간 동안
특별한 문제가 없으면 forwading 상태로 변경한다.
 
4) Forwarding 상태
 
=> STP 포트 상태가 forwarding 상태로 변경되면 프레임을 송수신한다.
포트 선정 이후 대체포트 설정 이후 포워딩 상태로 변경된다.
 
5) Disabled 상태
 
=> 다운 상태에 있는 포트는 모두 STP disabled 상태라고 한다.
 
=> 양측 포트간 STP 설정이 잘못되거나 설정 사항을 위반한 경우에도 disabled 상태가 된다.
(disabled 상태에서는 이용자 트래픽과 BPDU 모두를 송수신하지 않는다.)
 
============================================================


<스위치 컨버젼스 절차>
 
- 스위치 전원을 키면 각종 H/W의 구성 및 동작을 확인하는 POST(Power on self test)과정을 거친다.
 
- 그런 다음 designated 포트나 root포트로 결정된 포트는 listening과 lerning상태를 거쳐 30초 후에 forwarding 상태로 변경
 
- 기본적으로 스위치 포트가 활성화되면 lerning 상태부터 시작하기 때문이다.
 
- 이 기간에도 상대측 포트가 더 좋은 조건을 가진 BPDU를 보내 포트의 역할이 대체포트로 변경되면 해당 포트는 즉시 차단상태가 된다.
 
 
- 대체 경로가 존재하는 스위치 네트워크에 장애 발생 시 대체 경로가 동작할 때까지 50초가 소요된다.
 
후 순의 BPDU를 수신하면서 기다리는 시간 20초, 대체포트를 루트 포트로 변경하고 listening, lerning 상태를 거쳐 forwarding 상태로 변경하기까지 30초가 걸린다.
 
=> 때문에 여러 가지 기술들을 사용해서 시간을 줄인다.
 Spaning Tree Port 상태 변화
 Blocking Port에서 Forwarding Port로의 변경 과정은 다음과 같다.

=> Blocking(20sec) => listening(15sec) => Learning(15sec) => Forwarding
 
============================================================
 
Port Fast

스위치는 기본적으로 모든 포트에서 STP가 동작하도록 설정되어있다.
STP는 스위치 간에 연결된 포트에서만 사용하면 되기 때문에 라우터, 서버, 시스템과 연결되는 STP동작이 필요 없다.

단, 스위치간 연결된 포트를 Port Fast 구성하면 Loop가 발생할 수도 있다.

ex)
#interface fa[ ]
#spanning-tree portfast

간단히 설정만 해주면 된다.

=============================================================

RSTP (Rapid STP)
 
- STP    = IEEE 802.1D
- RSTP  = IEEE 803.1W
 
* STP와 동작원리는 비슷하나 Listening, Learning 상태가 없어 좀 더 빠르다.
 
ex)
#spanning-tree mode rapid-pvst    // RSTP
#spanning-tree mode psvt           // STP

 

댓글 없음:

댓글 쓰기