본문 바로가기

Computer Science/네트워크

스위칭 2

스위치의 기능

802.1이라는 것은 기본적인 이더넷의 기본적인 기능입니다.

 

기본적으로 번호를 알아봅시다.

 

802.1q는 가상랜

802.1d는 스패닝 트리 프로토콜 입니다.

 

가상랜이란 무엇일까?

브로드케스트 도메인이 같으면 같은 랜입니다.

 

불필요한 패킷이 포트쪽으로 전달될 수 있습니다.

 

러닝이 안되서 그럴 수도 있습니다.

 

가상랜이 없다면 하나의 랜은 같은 브로드케스트 도메인입니다.

 

규모가 커지면 커질수록 브로드케스트 패킷을 보내면 브로드케스트 트레픽이 대역폭 양이 많게 됩니다.

 

와이어 샤크로 체크해보면 arp 패킷이 굉장히 많습니다.(=브로드케스트)

 

192.168.0.1의 MAC주소가 무야 하고 기술팀이 물어봅니다.

그러면 스위치가 모든 팀에게 보내봅니다.

그러면 내 머신인가? 하고 찾아봅니다.

 

가상랜에 대해서

불필요한 트래픽을 막아주는 것이 가상랜 입니다.

 

꼭 하나의 랜으로 구성해야 하는 단말들을 하나의 랜으로 묶는 것입니다.

 

사실 물리적으로 떨어져 있는데 가상으로 묶는 것입니다.

 

물리적으로 하나인 스위치를 여러 개의 가상스위치로 만들어 주는 것 입니다.

 

포트1~2: 가상랜 1

포트3~8: 가상랜 2

...

랜을 4개로 쪼갭니다.

 

앞서 보았던 브로드 캐스트와 달리

브로드캐스트 도메인이 하나의 가상랜으로만 보냅니다.

 

 

가상랜의 기능 

가상랜을 통해서 보안의 기능을 가질 수 있습니다.

 

트래픽이 오가면서 트래픽이 노출될 수 있습니다.

 

만약 vLAN이 없다면 = 스위치가 하나의 vlan이라면

 

특별한 조치가 없다면 묶여있는 장비들이 다 보일 수 있습니다.

intra에 묶여있는 장비들을 볼 수 있습니다.

 

 

학생 Pc들과 선생님pc들이 묶여있다면

전체 브로드케스팅을 한다면 볼 수 있습니다.

 

가상랜을 통해서 분리하자

포트1~8은 학생pc: 가상랜1

포트8~16은 선생님pc: 가상랜2

로 묶습니다.

 

2계층 스위칭으로 가상랜 둘 사이에 프레임의 전달을 막을 수 있습니다.

 

 

 

가상랜의 좋은점들

  • 도메인을 나눈다.
  • 보안적 접근 제어를 한다.
  • 브로드케스트를 나눠서 불필요한 트래픽의 전달을 막는다.
  • 보안적 기능을 통해서 접근제어를 하고 있다.

 

 

가상랜으로 비싼거를 낮출 수 있습니다.

 

떨어진 2개의 건물이 있습니다.

 

A,B,C네트워크로 나누고 싶습니다.

가상랜이 없다면

A네트워크의 스위치, B네트워크의 스위치, C네트워크의 스위치 3대가 있어야 합니다.

 

가상랜의 기능을 사용한다면

스위치를 A,B,C로 포트 쪼갭니다.

 

A,B,C의 각각의 랜을 스위치에 연결하는 것이 아니고 가상랜으로 구성해서

스위치 둘간에 가상랜을 연결합니다.

 

스위치1의 학생과 스위치2의 학생을 연결해야 L2 스위칭이 가능합니다.(트래픽이 갈 수 있습니다.)

 

만약 Vlan마다 물리적 포트를 모두 써버리면 남은 스위치 포트가 없을 것입니다.

공통으로 가상랜들을  할당할 수 있는 공통 포트를 설정합니다.

 

 

트렁크 포트

트렁크라는 것은 넓다는 것입니다.

 

각 lan에 트랙을 오고가게 만듭니다.

 

즉, 하나의 포트로 vlan정보를 오고 가게 할 수 있습니다.

 

어느 vlan에서 온건지 알려주는 것 = VLAN Tagging 입니다.

 

ex)

만약 VLAN2에 있는 학생pc로 부터 프레임이 스위치2에 도착했습니다.

근데 스위치1 으로 보내야 합니다.

그러면 트렁크 포트를 통해서 보내겠지요

 

그 때 Vlan2에서 왔다는 태그를 달아줘야 합니다.

그리고 스위치1에 보냅니다.

그러면 스위치1에서 "vlan2에서 왔내? vlan2에 해당되는 포트로 전달해야지" 합니다.

 

vlan으로 보낼 때는 스위치에서 태그를 땝니다.

 

태그를 다는법 2가지

802.1q에서 정한 방식 과 cisco에서 정한 방식

 

802.1q에서 정한 방식

헤더에 VLAN정보를 담습니다. 이게 테그입니다.

전달 받은 스위치는 태그를 보고 스위칭을 하겠지요.

 

cisco에서 정한 방식

이더넷 해더에 26byte짜리 ISL 헤더를 붙이고 

뒤에 또 프레임 체크섬을 또 붙힙니다.

구성에 따라 원래 껄로 체크섬할지 또 붙힌걸로 할지 결정합니다.

 

 

Vlan 사이에 통신은 어떻게 할까요?

layer2에서 전달을 안할 뿐이지 3계층에서는 서로 다른 ip가 있습니다.

그러면 라우터에서 전달 할 수 있습니다.

 

vlan을 1,2,3으로 나눴습니다.

 

vlan안에서 통신은 스위칭에서 스위칭이 됩니다.

 

ex)

192.168.1.0 -> 192.168.2.2 로 가고싶다고 합니다.

다른 네트워크이기 때문에 라우터로 보냅니다.

라우터도 다른 네트워크다가 연결되야 하기 때문에 3개의 인터페이스로 연결되어 있습니다.

 

라우터는 라우팅을 통해서 다시 스위치로 보냅니다.

 

 

그래서 이러한 기능을 함깨 묶은 것이 L3 스위치 입니다.

 

L3 스위칭

라우터의 기능도 가지고 있습니다.

 

그냥 라우터는 vlan을 설정할 수 없습니다.

L3스위치만 설정할 수 있습니다.

 

 

VTP(VLAN Trucking Protocol)프로토콜

트렁킹 - 여러 vlan의 트래픽을 한번에 실어나르는 포트

 

VTP = 트렁킹에 해당되는 설정을 자동으로 설정해주는 프토로콜

 

스위치들 간에 VLAN 정보를 서로 주고받아 스위치들이 가지고 있는 VLAN 정보 일치 시켜주는 프로토콜

한쪽에서 추가/삭제할 때 다른 쪽에서도 추가/ 삭제가 되는 것

 

한쪽에서 설정을 바꾼 다는게 

서버에서만 바꿔주면 다른 스위치와 트렁크 링크를 통해 vlan정보를 자동으로 업데이트 해줍니다.

 

Native VLAN을 지원합니다.

트렁크에는 어디에서 왔는지 태그를 다는게 기본입니다.

태그를 안단 프레임이 왔을 때 어느쪽에서 왓는지 지래 짐작하는 것

ex) 태그를 안단 프레임이 왔다 => 10번이라고 생각한다.

 

 

그림으로 봐봅시다

5개의 스위치가 있습니다.

하나에 vtp서버를 줍니다.

 

서버 스위치에서 vlan정보를 수정하면 나머지 스위치에 업데이트가 됩니다.

 

3가지 모드가 있습니다.

 

서버모드

  • vlan의 설정변경한 것입니다.
  • 같은 도메인 내 스위치들에게 해당 정보 전달
  • 모든 VLAN 정보를 NVRAM 에 저장(=리부트가 되더라도 재설정이 되도록 합니다.)

 

클라이언트 모드

  • VLAN 생성 삭제 이름 변경 불가능(서버에서 받은 것으로 설정합니다.)
  • VTP 서버에서 전달해 준 VLAN 정보를 타 스위치에 전달하고 자신도설정
  • VLAN 정보를 NVRAM 에 저장하지 않음(대표만 설정하면 따라 적으면 되니깐)

 

트랜스페어런트 모드

없는 스위치 취급, 독립 스위치 취급

  • 자신의 정보를 설정 가능
  • VTP 서버로부터 정보를 이용해 설정하거나 자신의 정보를 타 스위치에 전달하지 않음
  • 단 , VTP 서버로부터 정보를 타 스위치에 전달(온건 넘겨줍니다.)
  • 모든 VLAN 정보를 NVRAM 에 저장

 

vtp도 프로토콜 메세지가 있습니다.

Summary Advertisement

  • 5분마다 요약해서 전달합니다.
  • revision번호는 앞서 전달한 내용과 뒤에 전달한 내용과 구분하기 위한 것입니다.
  • VTP 서버가 자신에 연결된 스위치들에게 5분마다 VTP 도메인 구성에 대한 revision번호 전달 매번 revision번호를 1 증가해 전달하여 최신 정보인지 확인하도록 함
  • VLAN 구성에 변화가 생겼을 때에도 이 메시지를 통해 전달하지만 , 이 때는 5분 기다리지 않음

Subset Advertisement

  • VLAN 의 구성이 변경되었을 때나 VTP 클라이언트로부터 Advertisement Request 메시지를 받았을 때 전송


Advertisement Request

  • VTP 클라이언트가 VTP 서버에게 Subset Advertisement 요청하는 용도

 

VTP 동작 절차

A,B,C라는 3개의 스위치가 있습니다.

 

왼쪽 스위치는 모두 초기값입니다.

모두 도메인 이름은 Null입니다.

VTP 모드는 서버이고

config는 0번이고

vlan은 1번입니다.

 

서버 설정을 해봅시다.

스위치 a에다가 domain이름을 cisco라고 변경하고 vlan 1,2,3,4를 추가합니다.

 

그 전에도 서머리 정보가 5분에 한번씩 전달 됬을 것입니다.

변경이 되었을 때 5분같은거 상관없이 보냈을 것입ㄴ디ㅏ.

 

스위치b는 클라이언트 로 설정했고 

스위치c는 트랜스페이런트로 설정했습니다.

 

A에서 도메인 정보를 변경하고 1,2,3,4 vlan을 설정했습니다.

 

스위치 b는 맨 처음에 summary를 받는대 사실 도메인 이름, config revision만 있습니다.

이걸 받았으니 도메인 이름과 config revision만 바꿉니다.

원래 1이였는데 3이 들어왔으니 3으로 된것으로 바꿉니다.

 

Vlan이 2,3,4가 들어왔다는 것을 압니다.

 

스위치c는 서머리를 받아도 무시합니다.

 

모두 트렁크 포트를 통해 서버의 변경작업을 받습니다.

 

 

스위치 D가 클라이언트 모드로 들어왔습니다.

스위치B가 받은 summery 정보를 스위치D에 보내줘서 D도 도메인 정보를 추가하고 다른 vlan정보를 업데이트 합니다.

스위치B는 트랜스페이런츠 모드여서 A->D까지 한번에 보냅니다.

 

스위치 B 독립적인 스위치로 생각하면 되겠습니다.

 

802.1d STP(Spanning Tree Protocol)

STP - 물리적으로 사이클이 있는 연결에서 일부 링크를 block시켜서 트리를 만듭니다.

 

목적은 루프를 방지합니다.

 

루프가 나타나면 한쪽에서 브로트캐스트 보내고 또다른 것이 브로드캐스트 보내고 또다른 것이 브로드캐스트 보내고...

안에서 계속 전파가 됩니다.

 

끊어두엇던 - 논리적으로 빼놓는 것입니다. 물리적으로 빼놓는게 아닙니다!

빽업용으로 두는 것입니다.

 

STP 동작
1. 하나의 루트 브리지(스위치, 오래되서 브리지라고 부름) 선정
2. Non Root Bridge(나머지 스위치)당 하나의 루트 포트 선정 
3. 세그먼트(Link) 당 하나의 지정(Designated) 포트 선정

 

루트 포트 - 루트로 가는 가장 빠른 길(포트)

세그먼트 - 링크 당 지정 포트를 선정합니다.

 

루트 포트, 지정 포트에서 제외가 되면 undsignated 포트가 됩니다.

undesignated 포트는 blocking이 됩니다.

 

포트들의 선정 기준
1. 작은 Root BID(브릿지 ID)
2. 루트 브리지까지의 작은 Path Cost(루트까지 가는 가장 적은 cost)
3. 작은 송신 BID(Bridge ID)
4. 작은 Port ID

 

stp의 동작입니다.

각 스위치는 내용을 2초마다 각 포트에 전송합니다.

 

내용은 

  • 루트 BID
  • 자신에서 루트까지 가는 cost
  • 매세지를 보내고 있는 BID
  • 포트 ID

이런 내용을 가지고 선정기준에 맞춰서 루트 포트, 스위치 등을 뽑습니다.

 

cost는 정해졌습니다.

속도가 높으면 높을 수록 루트까지 가는 값이 작아집니다.

 

BID는 총 8byte입니다.

  • 브릿지의 우선순위 - 디폴트 값은 모두 1로 채운 것의 절반 값입니다.
    관리자가 BID를 조절해서 우선순위를 높일 수 있습니다.
  • MAC 주소

 

예시를 봐봅시다.

A,B,C스위치가 있습니다.

 

루프를 형성했습니다.

패킷이 뺑뺑이 돌 수 있습니다.

트리를 만들어야 루프 상황을 방지할 수 있습니다.

 

기본적으로 BID는 1로 채워져 있습니다.

MAC주소는 쉽게 하기 위해서 

A=1

B=2

C=3

이라고 합시다.

 

B와 C를 먼저 켰습니다.

그럼 2초마다 서로 BPDU를 보냅니다.

그리고 자신이 알고 있는 BID를 보내겠지요

 

B와 C가 서로 자신이 대장이라고 우깁니다.

 

루트는 BID가 작은값입니다.

BID가 낮은 스위치B가 루트가 됩니다.

 

스위치C는 스위치 B의 BID값이 더 작으니 스위치 B의 BID값으로 바꿉니다.

 

 

스위치 A가 켜졌습니다.

스위치 A가 BPDU를 보냅니다.

스위치 B,C도 서로 BPDU를 보내서 대장을 가립니다.

루트 BID가 더 작은 것이 되니 스위치 A를 대장으로 선정합니다.

 

루트 브릿지가 스위치 A가 됩니다.

그리고 나머지 스위치는 Non Root Bridge가 됩니다.

 

루트가 아닌 브릿지는 루트 포트를 선정합니다.

스위치 B,C는 코스크가 작은 포트를 루트포르로 설정을 해야합니다.

 

루트로 가는대 각각의 포트가 걸리는 비용을 채워서 보냅니다.

 

100Mbps라고 가정하면 19값이 듭니다.

즉, 스위치 에서 100Mbps로 가면 19의 값이 되는 것입니다.

 

스위치 B,C에서 E0포트는 19의 값이 듭니다.

스위치를 2번 거쳐서 가는 E1포트는 100Mbps를 2번 거처가니 38값이 듭니다.

 

그 중에 가장 작은 E0포트가 루트포트가 됩니다.

 

 

지정포트를 설정해 봅시다.

지정포트를 선정하기 위해서 각 링크(세그먼트)

세그먼트당 지정포트선정합니다.

  • 루트 BID
  • 자신에서 루트까지 가는 cost
  • 매세지를 보내고 있는 BID
  • 포트 ID

지정포트를 선정하는 기준은 앞에 순서대로 합니다.

 

스위치 A에 달려있는 E0는 루트 코스트0이되고

스위치 B에 달려있는 E0는 루트 코스트19가 됩니다.

 

스위치 A의 E0와 E1은 세그먼트 1, 2의 지정포트로 선정이 됩니다.

 

세그먼트 3이 중요한대요 

스위치 B,C의 루트 코스트가 같습니다.

다음 기준이 매세지를 보내고 있는 BID이니 

스위치 B가 더 작으니 스위치 B의 E1이 지정포트가 됩니다.

 

지정포트가 정해졌습니다.

스위치 A의 E0, E1은 지정포트

스위치 B의 E0는 루트포트, E1은 지정포트

스위치 C의 E0는 루트포트

 

스위치 C의 E1만 지정포트가 되지 않았습니다.

그러면 blocking상태가 됩니다.

 

blocking상태가 있다면

 

다른 포트들은 포워딩 됩니다.

그 세그먼트는 임시로 사용되지 않습니다.

 

이렇게 트리를 만듭니다.

 

두번 째 예시를 봐봅시다.

스위치 C의 BID를 100으로 바꿧습니다.

 

트리로 만들려면

1. 루프 브릿지 뽑기

2. 루트 포트 뽑기

3. 지정포트 뽑기

4. Non 포트 뽑기

 

1. 스위치 C의 BID가 100으로 시작해서 루트브릿지가 됩니다.

 

2.  A,B,D,E는 루트포트를 뽑습니다.

루트로 가는 가장 빠른 길을 포트로 뽑습니다.

 

3. 지정포트를 뽑습니다.

루프브릿지에 연결되있는 포트는 지정포트가 됩니다.

루트로가는 값이 0이기 때문입니다.

 

A와 D를 보면 BID가 A가 작기 때문에 A가 지정포트가 됩니다.

 

A와 B를 보면 BID가 A가 작기 때문에 A가 지정포트가 됩니다.

 

D와 E를 보면 BID가 D가 작기 때문에 D가 지정포트가 됩니다.

 

Non 포트는 blocking이 됩니다.

 

결과는 사각형 세그먼트를 사용하지 않습니다.

 

요약

  • 허브는 리피터처럼 단순하게 동작
  • 스위치는 조금 복잡하게 동작 : Learning, Forwarding, Flooding, Filtering
  • 스위치는 내부의 스위치 패브릭에서 포트 당 대역폭을 할당한다
  • 네트워크에서 L2/L3 스위치 그리고 이제는 L4/L7 스위치까지도 알아야 한다
  • 물리적인 스위치를 논리적으로 여러 대의 스위치로 구분하는 가상 랜 (VLAN)
  • 네트워크 뺑뺑이를 막아주는 스패닝 트리 프로토콜 (STP, SpanningTree Protocol)

 

728x90