혼자하는 네트워크 공부 #4

배석주·2023년 1월 3일
0

네트워크

목록 보기
4/11
post-thumbnail

스위치: 2계층 장비

스위치는 네트워크 중간에서 패킷을 받아 필요한 곳에만 보내주는 네트워크 중재자 역할을 한다. 아무 설정 없이 네트워크에 연결해도 MAC 주소를 기반으로 패킷을 전달하는 기본 동작을 수행할 수 있다.
스위치는 패킷을 전달하는 기본 동작 외에도 한 대의 장비에서 논리적으로 네트워크를 분리하는 VLAN기능과 네트워크의 루프를 방지하는 스패닝 트리 프로토콜(STP)과 같은 기능을 가지고 있다.
<스위치는 2계층으로 통신>

스위치 장비 동작

스위치는 네트워크에서 통신을 중재하는 장비이다. 패킷을 동시에 여러 장비가 서로 간섭 없이 통신하도록 도와주는 장비이기 때문에 스위치를 사용하여 여러 대의 컴퓨터가 동시에 통신할 수 있게 되었다.
스위치의 핵심 역할은 누가 어느 위치에 있는지 파악하고 실제 통시닝 시작되면 자신이 알고 있는 위치로 패킷을 정확히 전송하는 것이다. 이런 동작은 스위치가 2계층 주소를 이해하고 단말의 주소인 MAC 주소와 단말이 위치하는 인터페이스 정보를 매핑한 MAC 주소 테이블을 갖고 있어 가능하다.
<MAC 주소 테이블>
스위치는 전송하려는 패킷의 헤더 안에 있는 2계층 목적지 주소를 확인하고 MAC 주소 테이블에서 해당 주소가 어느 포트에 있는지 확인해 해당 패킷을 그 포트로만 전송한다.
스위치의 동작 방식은 3가지로 정리할 수 있다.
  • 플러링(Flooding)
  • 어드레스 러닝(Address Learning)
  • 포위딩/필터링(Forwarding/Filtering)
  • 플러딩(Flooding)

    스위치를 부팅하면 네트워크 관련 정보가 아무 것도 없다. 이때 스위치는 네트워크 통신을 중재하는 자신의 역할을 하지 못하고 허브처럼 동작한다. 스위치가 허브와 같이 모든 포트로 패킷을 흘리는 동작 방식을 플러딩이라고 한다.
    MAC 주소 테이블에 아무 정보도 없는 경우, 패킷을 모든 포트로 보낸다.
    이런 프러딩 동작은 스위치의 정상적인 동작이지만 이런 동작이 많아지면 스위치가 제 역할을 못하게 된다.

    어드레스 러닝(Address Learning)

    스위치의 동작을 정상적으로 수행하려면 MAC 주소 테이블을 만들고 유지해야 한다. MAC 주소 테이블은 어느 위치(포트)에 어떤 장비(MAC 주소)가 연결되었는지에 대한 정보가 저장되어 있는 임시 테이블이다. 이러한 MAC 주소 테이블을 만들고 유지하는 과정을 어드레스 러닝이라고 한다.
    어드레스 러닝은 패킷의 출발지 MAC 주소 정보를 이용한다. 패킷이 특정 포트에 들어오면 스위치에는 해당 패킷의 출발지 MAC 주소와 포트 번호를 MAC 주소 테이블에 기록한다.
    어드레스 러닝은 출발지의 MAC 주소 정보를 사용하므로 브로드캐스트나 멀티캐스트에 대한 MAC 주소를 학습할 수 없다.

    포워딩/필터링(Forwarding/Filtering)

    스위치의 동작은 매우 간단하다. 패킷이 스위치에 들어오면 도착지 MAC 주소를 확인하고 자신이 가진 MAC 테이블과 비교해 맞는 정보가 있으면 매치되는 해당 포트로 패킷을 포워딩한다. 이때 다른 포트로는 해당 패킷을 보내지 않으므로 이 동작을 필터링이라고 한다.

    VLAN(Virtual Local Area Network)

    VLAN은 물리적 배치와 상관없이 LAN을 논리적으로 분할, 구성하는 기술이다. 과도한 브로드캐스트로 인한 단말들의 성능 저하, 보안 향상을 위한 차단 용도, 서비스 성격에 따른 정책 적용과 같은 이유로 네트워크가 분리되어야 한다.
    한 대의 스위치를 여러 개의 VLAN으로 분할할 수 있고, 별도의 스위치처럼 동작한다.
    VLAN을 나누면 하나의 장비를 서로 다른 네트워크를 갖도록 논리적으로 분할한 것이므로 유니캐스트뿐만 아니라 브로드캐스트로도 VLAN 간에 통신할 수 없다. VLAN 간의 통신이 필요하다면 3계층 장비가 필요하다.

    VLAN의 종류와 특징

    VLAN 할당 방식에는 포트 기반의 VLAN과 MAC 주소 기반의 VLAN이 있다.
    스위치를 논리적으로 분할해 사용하는 것이 목적인 VLAN을 포트 기반 VLAN이라고 부르며 우리가 일반적으로 언급하는 대부분의 VLAN은 포트 기반 VLAN이다.
    사용자들의 자리 이동이 많아지면서 MAC 기반 VLAN이 개발되었다. 스위치의 고정 포트에 VLAN을 할당하는 것이 아니라 스위치에 연결되는 단말의 MAC 주소를 기반으로 VLAN을 할당하는 기술이다. 단말이 연결되면 단말의 MAC 주소를 인식한 스위치가 해당 포트를 지정된 VLAN으로 변경한다.
    포트 기반 VLAN으로 설정된 스위치에서 VLAN 선정 기준은 스위치의 포트이다.
    * AA PC가 1번 포트에 연결하면 VLAN 10번에 속하고 4번 포트에 연결하면 VLAN 20에 속한다.
    MAC 기반 VLAN에서는 VLAN을 할당하는 기준이 PC의 MAC 주소이다.
    AA PC는 어떤 스위치의 어떤 포트에 접속하더라도 동일한 VLAN 10이 할당된다.
    <MAC 기반 VLAN을 사용>

    VLAN 모드(Trunk/Access) 동작 방식

    포트 기반 VLAN에서는 스위치의 각 포트에 각각 사용할 VLAN을 설정하는데 한 대의 스위치에 연결되더라도 서로 다른 VLAN이 설정된 포트 간에는 통신할 수 없다. VLAN이 다르면 별도의 분리된 스위치에 연결된 것과 같으므로 VLAN 간 통신이 불가능하다.
    한 대의 스위치에서도 서로 다른 VLAN 간에는 통신할 수 없다.
    여러 개의 VLAN이 존재하는 상황에서 스위치를 서로 연결해야 하는 경우에는 각 VLAN끼리 통신하려면 VLAN 개수만큼 포트를 연결해야 한다. VLAN으로 분할된 스위치는 물리적인 별도의 스위치처럼 취급된다.
    <태그 기능이 없는 VLAN 네트워크(Trunk)>
    위의 경우 스위치에 3개의 VLAN이 구성되어 있는 경우, 각 VLAN이 스위치 간에 통신하려면 3개의 포트가 필요하다. 더 많은 VLAN을 사용하는 네트워크는 많은 포트가 낭비된다.
    이 문제를 해결하기 위한 것이 VLAN 태그 기능이다. 태그 기능은 하나의 포트에 여러 개의 VLAN을 함께 전송할 수 있게 해준다. 이 포트를 태크(Tagged) 포트 또는 트렁크(Trunk) 포트라고 한다.
    태그 포트를 사용하면 VLAN마다 통신하기 위해 필요했던 여러 개의 포트를 하나로 묶어 사용할 수 있으므로 포트 낭비 없이 네트워크를 더 유연하게 디자인할 수 있다.
  • 언태크(Untagged) 포트 or 액세스(Access) 포트
    일반적인 포트로 하나의 VLAN에 속한 경우에만 사용된다.
  • 태그 포트 or 트렁크 포트
    여러 개의 VLAN, 즉 여러 네트워크를 하나의 물리적 포트로 전달하는 데 사용된다.
  • <다수의 VLAN을 하나의 포트에서 사용하기 위해 태크 모드를 사용>
    언태그 포트로 패킷이 들어올 경우, 같은 VLAN으로만 패킷을 전송한다. 태그 포트로 패킷이 들어올 경우, 태그를 벗겨내면서 태그된 VLAN 쪽으로 패킷을 전송한다.
    하나의 포트에 특정 VLAN이 지정된 언태그 포트의 데이터는 VLAN ID를 태킹(Tagging)할 수 있는 태그 포트를 이용하면 여러 VLAN을 구분해 데이터를 전달할 수 있다.
    * 스위치 하나가 아닌 서로 다른 스위치의 장비를 같은 VLAN으로 묶고싶을 때, VLAN 정보를 스위치간에 고유해야 한다. 이때 VLAN 정보를 공유하는 것이 Trunking이고 Tagging이란 과정을 통해 교환하는 규칙이 VTP(VLAN Trunking Protocol)이다.

    STP

    IT 환경에서는 SPoF(Single Point of Failure: 단일 장애점)로 인한 장애를 피하기 위해 다양한 노력을 한다. SPoF란 하나의 시스템이나 구성 요소에서 고장이 발생했을 때 전체 시스템의 작동이 멈추는 요소를 말한다.
    네트워크를 스위치 하나로 구성했을 때 그 스위치에 장애가 발생하면 전체 네트워크에 장애가 발생한다.
    이런 SPoF를 피하기 위해 스위치 두 대로 네트워크를 디자인하지만 두 대 이상의 스위치로 디자인하면 패킷이 네트워크를 따라 계속 전송되므로 네트워크를 마비시킬 수 있다. 이런 상황을 네트워크 루프(Loop)라고 한다.

    루프(Loop)

    루프는 말 그대로 네트워크에 연결된 모양이 고리처럼 되돌아오는 형태로 구성된 상황을 말한다. 루프 상황이 발생했을 때 네트워크가 마비되고 통신이 안 되는 상황이 발생한다. 대부분의 루프 문제는 브로드캐스트 스톰으로 인한 문제이다.
    a) 두 장비 간의 이중화 연결(이중화 프로토콜 미 사용)
    b) 장비 간의 연결이 고리 형태로 연결(단일 고리)
    c) 장비 간의 연결이 고리 형태로 연결(중복 고리)

    브로드캐스트 스톰

    루프 구조로 네트워크가 연결된 상태에서 단말에서 브로드캐스트를 발생시키면 스위치는 이 패킷을 패킷이 유입된 포트를 제외한 모든 포트로 플러딩한다. 플러딩된 패킷은 다른 스위치로도 보내지고 이 패킷을 받은 스위치는 패킷이 유입된 포트를 제외한 모든 포트로 다시 플러링한다. 루프 구조 상태에서는 이 패킷이 계속 돌아가는데 이를 브로드캐스트 스톰이라고 한다.
    브로드캐스트 스톰 상황이 발생하면 일어나는 현상
    1. 네트워크에 접속된 단말의 속도가 느려진다.(많은 브로드캐스트를 처리해야 하므로 CPU 사용률이 높아진다).
    2. 네트워크 접속 속도가 느려진다(거의 통신 불가능 수준이 된다).
    3. 네트워크에 설치된 스위치에 모든 LED들이 동시에 빠른 속도로 깜빡인다.

    스위치 MAC 러닝 중복 문제

    스위치는 출발지 MAC 주소를 학습하는데 직접 전달되는 패킷과 스위치를 돌아 들어간 패킷 간의 포트가 달라 MAC 주소를 정상적으로 학습할 수 없다.
    스위치 MAC 주소 테이블에서는 하나의 MAC 주소에 대해 하나의 포트만 학습할 수 있으므로 동일한 MAC 주소가 여러 포트에서 학습되면 MAC 테이블이 반복 갱신되어 정상적으로 동작하지 않는다. 이 현상을 MAC 어드레스 플래핑(MAC Address Flapping)이라고 부른다.
    Ex) AA에서 출발한 패킷이 스위치 C에서 A와 B 스위치에 전달하고 이 패킷을 받은 스위치 A는 이 패킷을 다시 포워딩해 스위치 B로 전달한다. 결과적으로 스위치 B는 동일한 출발지 AA를 가진 패킷이 스위치 C를 통해 Eth1로, 스위치 A를 통해 Eth2로 전달된다.
    스위치 B에서는 Eth1 포트와 Eth2포트에서 AA 주소를 반복적으로 습등해 MAC 어드레스 플래핑 현상이 발생한다.

    STP란

    스패닝 트리 프로토콜(Spanning Tree Protocol)은 루프를 확인하고 적절히 포트를 사용하지 못하게 만들어 루프를 예방하는 메커니즘이다.
    STP를 이용해 루프를 예방하려면 전체 스위치가 어떻게 연결되는지 알아야 한다. 전체적인 스위치 연결 상황을 파악하려면 스위치 간에 정보를 전달하는 방법이 필요하다. 스위치는 BPDU(Bridge Protocol Data Unit)라는 프로토콜을 통해 스위치 간에 정보를 전달하고 일허게 수집된 정보를 이용해 전체 네트워크 트리를 만들어 루프 구간을 확인한다.

    스위치 포트의 상태 및 변경 과정

    STP가 동작 중인 스위치에서는 루프를 막기 위해 스위치 포트에 신규 스위치가 연결되면 바로 트래픽이 흐르지 않도록 차단한다. 그리고 해당 포트로 트래픽이 흘러도 되는지 확인하기 위해 BPDU를 기다려 학습하고 구조를 파악한 후 트래픽을 흘리거나 루프 구조인 경우, 차단 상태를 유지한다. 차단 상태에서 트래픽이 흐를 때까지 스위치 포트의 상태는 다음 4가지로 구분할 수 있다.
  • Blocking
  • - 패킷 데이터를 차단한 상태로 상대방이 보는 BPDU를 기다린다.
    - 총 20초인 Max Age 기간 동안 상대방 스위치에서 BPDU를 받지 못했거나 후순위 BPDU를 받았을 때 포트는 리스닝 상태로 변경된다.
    - BPDU 기본 교환 주기는 2초이고 10번의 BPDU를 기다린다.
  • Listening
  • - 리스닝 상태는 해당 포트가 전송 상태로 변경되는 것을 결정하고 준비하는 단계이다. 이 상태 부터는 자신의 BPDU 정보를 상대방에게 전송하기 시작한다.
    - 총 15초 동안 대기한다.
  • Learning
  • - 러닝 상태는 이미 해당 포트를 포워딩하기로 결정하고 실제로 패킷 포워딩이 일어날 때 스위치가 곧바로 동작하도록 MAC 주소를 러닝하는 단계이다.
    - 총 15초 동안 대기한다.
  • Forwarding
  • - 패킷을 포워딩하는 단계이다. 정상적인 통신이 가능하다.
    특정 링크가 다운되어 블로킹 포트가 포워딩되기 위해 초기와 마찬가지로 20초 동안 Max Age를 거쳐 총 50초 후 포워딩 상태로 변경된다. 하지만 다운된 링크가 자신의 이터페이스인 경우, 토폴로지가 변했음을 직접 감지할 수 있어 Max Age를 거치지 않고 리스닝부터 STP 상태 변화가 즉시 이루어지므로 30초 만에 절체된다.

    STP 동작 방식

    STP는 루프를 예방하기 위해 담으과 같이 동작한다.
    1. 하나의 루트(Root) 스위치를 선정한다.
    A. 전체 네트워크에 하나의 루트 스위치를 선정한다.
    B. 자신을 전체 네트워크의 대표 스위치로 적은 BPDU를 옆 스위치로 전달한다.
    2. 루트가 아닌 스위치 중 하나의 루트 포트를 선정한다.
    A. 루트 브릿지로 가는 경로가 가장 짧은 포트를 루트 포트라고 한다.
    B. 루트 브릿지에서 보낸 BPDU를 받는 포트이다.
    3. 하나의 세그먼트에 하나의 지정(Designated) 포트를 선정한다.
    A. 스위치와 스위치가 연결되는 포트는 하나의 지정 포트(Designated Port)를 선정한다.
    B. 스위치 간의 연결에서 이미 루트 포트로 선정된 경우, 반대쪽이 지정 포트로 선정되어 양쪽 모두 포워딩 상태가 된다.
    C. 스위치 간의 연결에서 아무도 루트 포트가 아닐 경우, 한 쪽은 지정 포트로 선정되고 다른 한쪽은 대체 포트가 되어 차단 상태가 된다.
    D. BPDU가 전달되는 포트이다.
    출처
    IT 엔지니어를 위한 네트워크 입문을 정리한 포스팅입니다.

    0개의 댓글