네트워크(2) - 계층별 장비

yong·2025년 6월 6일

SW 모빌리티 스쿨

목록 보기
5/11

2계층 장비 - Switch

2계층 주소인 MAC Address를 기반으로 동작하는 장비로, 네트워크 중간에서 프레임을 받아 필요한 곳에만 보내주는 네트워크의 중재자 역할을 수행한다.

  • 스위치는 아무 설정 없이 네트워크에 연결해도 MAC 주소를 기반으로 프레임을 전달하는 기본 동작을 수행한다.

    🤔 Packet과 Frame
    각 계층에서 헤더와 데이터를 합친 부분을 PDU(Protocol Data Unit)이라고 하는데 각 계층에서 PDU를 부르는 이름이 다르다. 1계층 PDU는 Bits, 2계층 PDU는 Frame, 3계층 PDU는 Packet, 4계층 PDU는 Segment라고 하고 상위 3계층은 Data라고 한다.
    (4→3, 3→2, 2→1 계층으로 갈때는 헤더가 붙지만 상위 계층에는 헤더가 붙는게 아니라 각 애플리케이션에 맞게 데이터를 변환한다.)

  • 스위치는 한 대의 장비에서 네트워크를 분리할 수 있는 VLAN 기능과 네트워크의 루프를 방지하는 스패닝 트리 프로토콜(STP) 기능을 제공하며 그외에도 보안 기능과 모니터링 기능도 제공한다.

  • 스위치가 없는 이더넷 네트워크(LAN)는 데이터를 전송할 때 서로 경합하게 되므로 네트워크 성능 저하가 크다. 이런 경쟁을 없애고 프레임을 동시에 여러 장비가 간섭없이 통신하도록 도와주는 장비가 스위치이다.

  • 핵심 역할은 누가 어느 위치에 있는지 파악하고 실제 통신이 시작되면 자신이 알고 있는 위치로 데이터를 전송하는 것으로 2계층 주소를 이해하고 단말의 주소인 MAC 주소와 단말이 위치하는 인터페이스 정보를 매핑한 MAC 주소 테이블을 가지고 수행한다.

MAC 주소 테이블을 유지하기 위한 단계
1. Flooding : 데이터가 들어온 포트를 제외한 모든 포트에게 데이터를 전송하는 동작 방식

비정상적인 플러딩
스위치는 한 번 학습을 하게되면 Flooding을 수행하지 않기 때문에 항상 플러딩을 하는 허브보다 보안에 도움이 된다. 하지만 스위치의 기능을 무력화시켜서 엉뚱한 MAC 주소를 학습시키거나 MAC 테이블을 가득 차게 해서 스위치의 플러딩을 유도하는 경우가 있다. 이는 스위치가 정상적으로 동작하지 않거나 주변에서 공격이 수행되는 상황이다.
ex) ARP Poisoning : 모니터링 해야 할 IP의 MAC이 공격자 자신인 것처럼 하는 공격

  1. Address Learning : 데이터를 전송한 장비의 MAC Address와 인터페이스를 학습해서 MAC 주소 테이블에 기록

  2. Forwarding/Filtering : 학습한 데이터가 있는 경우 그 MAC Address에게 데이터를 전송할 때는 학습된 포트로만 데이터를 전송

VLAN

하나의 물리 스위치에서 여러 개의 네트워크를 나누어 사용할 수 있는 기술로 다음과 같은 목적을 가진다.

  • 성능 저하 방지
  • 보안 향상
  • 서비스 성격에 따른 정책 적용

VLAN vs VPN

  • 스위치에서는 VLAN으로 네트워크를 분리
  • 물리적인 회선에서는 VPN으로 네트워크를 분리

VLAN을 나누면 하나의 장비를 서로 다른 네트워크를 갖도록 논리적으로 분할한 것이므로 유니캐스트 뿐 아니라 브로드캐스트도 VLAN간에 통신할 수 없다.

종류와 특징

  • 포트 기반 VLAN : 스위치의 특정 포트에 VLAN을 할당하면 이 포트에 연결되는 장비는 무조건 설정된 VLAN에 할당되는 방식
  • MAC 기반 VLAN : 스위치에 연결되는 단말의 MAC 주소를 기반으로 VLAN을 할당

데이터센터나 캠퍼스 등에서는 포트기반 VLAN을 많이 사용했는데 사용자의 이동성을 요구하는 스마트 오피스 같은 경우에는 MAC 기반 VLAN을 사용한다.

동작 방식
여러 개의 VLAN이 설정된 경우 VLAN끼리 통신을 하려면 3계층 장비가 필요한데 여러 개의 VLAN으로 구성된 Switch끼리 연결할 때는 VLAN의 개수만큼 포트를 연결해야 한다. 한정된 포트를 효율적으로 사용하기 위해 Trunk Port(Tagged Port)를 통해 하나의 포트를 가지고 여러 개의 VLAN 통신이 가능하도록 할 수 있다.

STP(Spanning Tree Protocol)

🚨 단일 장애점(SPoF : Single Point of Failure)

하나의 시스템이나 구성요소에서 고장이 발생했을 때 전체 시스템이 멈추는 구성요소
네트워크에서도 이 문제를 해결하기 위해서 이중화나 다중화된 네트워크를 디자인하고 구성한다.

  • SPoF를 대비하여 같은 종류의 클라우드(Private면 Private, Public이면 Public)에 애플리케이션을 올려두고 장애가 발생했을 때 다른 클라우드의 회선을 사용하면 멀티 클라우드, Private Cloud에 있는 애플리케이션을 Public Cloud에도 올려두고 장애가 발생했을 때 Public Cloud로 옮겨가는 건 하이브리드 클라우드

  • 보안이 중요한 애플리케이션(ex 서버 애플리케이션)은 프라이빗 클라우드에 두고, 그렇지 않은 것들은 퍼블릭 클라우드에 두기도 한다.

🚨 SPoF를 막기 위해 네트워크를 이중화하거나 다중화하면 네트워크 Loop가 발생할 수 있다.

Loop

네트워크 연결이 고리처럼 되돌아오는 형태로 구성된 상황

  • 브로드캐스트 스톰

    1. 루프 구조로 연결된 네트워크에서 브로드캐스트를 발생시킨다
    2. 스위치는 패킷이 유입된 포트를 제외한 모든 포트에 전송한다. (플러딩)
    3. 플러딩 된 패킷은 다른 스위치로 전송되고 이 패킷을 받은 스위치는 다시 유입된 포트를 제외한 모든 포트에 패킷을 전송하면서 루프가 만들어진다.

    3계층에서는 TTL(Time to Live)이라는 패킷 수명을 가지고 있지만 2계층에는 TTL 같은 메커니즘이 없기 때문에 스위치 내에서 패킷이 계속 돌아다녀도 죽지 않는다. 2계층에서는 이런 문제로 인해 스위치와 네트워크에 연결된 단말 간 통신이 거의 불가능해질 수 있다.

  • 스위치 MAC 러닝 중복
    유니캐스트에서 발생하는 문제로, 스위치는 출발지 MAC 주소를 학습하는데 직접 전달되는 패킷과 스위치를 돌아 들어간 패킷 간의 포트가 달라서 MAC 주소를 정상적으로 학습할 수 없는 상황

✨ STP를 통해 Loop가 생기는 것을 예방하고 통신이 원활하게 이루어지도록 하는 것!

STP는 루프를 확인하고 적절히 포트를 사용하지 못하게 만들어서 루프를 예방하는 매커니즘으로 다음과 같이 동작한다.

  • 스위치는 BPDU(Bridge Protocol Data Unit)라는 프로토콜을 이용해서 스위치 간에 정보를 전달하고 이렇게 수집된 정보를 바탕으로 전체 네트워크 트리를 만들고 루프 구간을 확인한다.
  • 스위치가 추가되면 루프를 막기 위해서 일단 스위치 포트에 트래픽이 흐르지 못하도록 한 뒤 BPDU를 기다려서 루프 발생 여부를 학습하고 구조를 파악한 후 이상이 없으면 다시 트래픽을 흐르게 하고 루프 구조인 경우 차단 상태를 유지한다.
    (스위치를 추가하면 보통 50초 정도가 소요됨)

3계층 장비 - Router

Router는 3계층에서 동작하는 장비로, 경로를 지정해주는 역할을 수행하는데 라우터에 들어오는 패킷의 목적지 IP주소를 확인하고 자신이 가진 경로(Route) 정보를 이용하여 패킷을 최적의 경로로 포워딩 한다.

  • 스위치는 2계층 장비이지만 라우터처럼 동작하는 L3 스위치도 있다.
  • 예전에는 라우터의 기능은 소프트웨어로 구현하고 스위치는 하드웨어 형태로 구현했는데 최근에는 전부 하드웨어로 구현해서 라우터와 L3 스위치를 구분하기 어렵다.

동작 방식과 역할

1. 경로 지정

경로 정보를 모아서 라우팅 테이블을 만들고 패킷이 라우터로 들어오면 도착지 IP 주소를 확인해서 경로를 지정하고 패킷을 포워딩 한다.

  • IP 주소 중 네트워크 부분만 확인해서 해당하는 네트워크의 라우터에게 전달한다.
  • 네트워크 정보를 알아내는 방법은 관리자가 직접 경로 정보를 입력하는 방법과 라우터끼리 경로 정보를 자동으로 교환하는 방법이 있다.

2. 브로드캐스트 컨트롤

  • 스위치에서의 플러딩
    스위치는 패킷의 도착지 주소를 모르면 어딘가에 존재할지 모를 장비와의 통신을 위해 패킷을 모든 포트에 전송한다. LAN 어딘가에 도착지가 있을 수 있다고 가정하고 전체 네트워크에 플러딩하는 것은 쓸모없는 패킷이 전송되어 네트워크 성능에 무리가 갈 수 있지만 LAN은 크기가 작아서 플러딩에 대한 영향이 작고 도착지 NIC에서 자신의 주소와 도착지 주소가 다르면 폐기하기 때문에 플러딩 작업이 네트워크에 큰 무리를 주지는 않는다.

  • 라우터의 전송
    반면, 라우터는 패킷을 원격지로 보내는 것을 목표로 개발이 돼서 3계층에서 동작하고 분명한 도착지 정보가 있을 때만 통신을 허락한다. 라우터가 스위치처럼 목적지가 없거나 명확하지 않은 패킷을 플러딩하게 되면 인터넷에 쓸모없는 패킷이 가득차게 된다.

    • 라우터는 바로 연결되어 있는 네트워크 정보를 제외하고 경로 습득 설정을 하지 않으면 패킷을 포워딩할 수 없다.
    • 라우터의 기본적으로 멀티캐스트 정보를 습득하지 않고 브로드캐스트 패킷을 전달하지 않는다.

3. 프로토콜 변환

초창기에는 다양한 프로토콜로 네트워크가 구성되어 있어서 라우터가 프로토콜을 변환해서 서로 간에 통신을 할 수 있도록 해주었지만, 최근에는 통신의 표준이 거의 이더넷으로 수렴되어서 이 역할은 많이 줄어었다.

  • LAN에서 인터넷을 사용하는 경우 WAN 기술로 변환되어야 하기 때문에 이 역할을 라우터가 담당한다.

경로 지정

라우터는 패킷을 처리할 때 경로 정보를 정리하고, 이를 이용해서 패킷을 포워딩하는 역할을 수행한다.

라우팅 동작과 라우팅 테이블

현재 인터넷에서는 단말부터 목적지까지의 경로를 모두 책임지는 방식이 아닌, 인접한 라우터까지만 경로를 지정하면 인접한 라우터에서 최적의 경로를 다시 파악해서 라우터로 패킷을 포워딩하는 방식으로 라우팅이 이루어진다. 네트워크를 한 단계씩 뛰어넘는다는 의미로 Hop by Hop 라우팅이라고 하고 인접한 라우터를 Next Hop이라고 한다.

Next hop을 지정하는 방법

  • 라우터의 나가는 인터페이스를 지정
  • 라우터의 나가는 인터페이스와 IP를 같이 지정

라우팅 테이블에 저장하는 데이터

  • 목적지 주소
  • 넥스트 홉 주소, 나가는 로컬 인터페이스

루프가 없는 라우터

  • 3계층의 IP 헤더에는 TTL이라는 필드가 있음
  • 이 필드는 패킷이 네트워크에 살아있을 수 있는 시간(Hop)을 제한함

경로 정보를 얻는 방법

  • 다이렉트 커넥트 : 직접 연결하는 방식 (케이블 연결)

  • Static Routing : 관리자가 경로를 직접 지정하는 방식으로, 라우팅 정보를 매우 직관적으로 설정하고 관리할 수 있다. 하지만 네트워크 규모가 커지게 되면 Static Routing으로는 한계가 있다. ⇒ Dynamic Routing

  • Dynamic Routing : 직접 경로를 설정하지 않고 동적으로 경로를 받아서 처리하는 방식으로, 라우터끼리 자신이 알고있는 경로 정보나 링크 상태 정보를 교환해서 전체 네트워크 정보를 학습한다.

4계층 장비 - Load Balancer, Firewall

4계층 장비가 등장하게 된 이유는 IP 부족으로 NAT나 PAT 기술이 등장하고 보안용 방화벽, 프록시 같은 장비들이 등장하면서 4계층 이상에서 동작하는 장비가 필요하게 됐다.

특징

  • 세션 테이블 : 통신의 방향성이나 순서와 같은 통신 전반에 대한 관리를 위한 테이블
  • Symmetric 경로 요구 : InBound와 OutBound 경로
  • 정보 변경 : IP 주소가 변경되며 확장된 L7 로드 밸런서는 애플리케이션 프로토콜 정보도 변경됨

세션 장비(4계층 장비)의 이런 요소가 서비스에 영향을 미치므로 네트워크 통신 중간 위치에 방화벽, NAT, 로드 밸런서와 같은 장비가 있을 경우 네트워크 인프라 뿐만 아니라 시스템 설계와 애플리케이션 개발에도 세션 장비에 대한 고려가 필요

Load Balancer

서버나 장비의 부하를 분산하기 위해 사용되는 장비로, 트래픽을 분배해주는 기능을 수행한다. 4계층 이상에서 동작하면서 4계층 정보, 애플리케이션 정보를 확인하고 수정하는 기능도 수행한다.

  • 가장 많이 사용되는 곳이 웹 서버의 부하 분산
  • 작은 시스템 여러 대를 운영하더라도 사용자는 서버 배치와 상관없이 하나의 서비스로 접근이 가능해야 하기 때문에 로드 밸런서가 서비스에 사용되는 대표 IP 주소를 서비스 IP로 갖고 그 밑에 시스템이 늘어나면 로드 밸런서가 각 시스템의 실제 IP로 변경해서 요청을 보낸다.
  • 웹 애플리케이션뿐 아니라 FWLB(FireWall Load Balancing), VPNLB(VPN Load Balancing) 등과 같은 서비스를 위해서도 사용된다.

종류

  • L4 로드 밸런싱
    TCP, UDP(포트 넘버)를 기반으로 로드 밸런싱을 수행

  • L7 로드 밸런싱
    HTTP, FTP, SMTP와 같은 애플리케이션 프로토콜 정보를 기반으로 로드 밸런싱을 수행

    • HTTP 헤더 정보나 URI와 같은 정보를 기반으로 프로토콜을 이해한 후 부하를 분산하는 것이 가능하다.
    • 이런 장비를 ADC(Application Delivery Controller)라고 부르며, Proxy 역할을 수행한다.
    • Squid나 Nginx의 리버스 프록시와 유사한 기능

일반적인 데이터센터에서는 L4와 L7을 모두 지원하는 장비를 가지고 설정에 따라 각각 역할을 수행하고, 클라우드 환경에서는 L4와 L7을 지원하는 컴포넌트를 계층별로 구분해서 사용한다.
ex) AWS의 경우 NLB가 L4 로드 밸런싱을, ALB가 L7 로드 밸런싱을 수행

L4 스위치

로드밸런서 기능이 있는 스위치로 부하 분산, 성능 최적화, 리다이렉션 기능을 제공한다.

라우터나 스위치는 새로고침 등을 해도 포워딩 방식이기 때문에 원래 경로를 찾아가는 반면, 로드밸런서는 리다이렉션 방식이기 때문에 새로고침 등을 하게 되면 다른 경로로 찾아가게 될 수도 있다.

시스템 확장 방법

  • Scale Up :
    • 기존 시스템을 업그레이드(반대되는 개념은 Scale Down)
    • 시스템 설계 변경없이 서비스 사용량을 쉽게 늘릴 수 있음
    • 대형 유닉스 시스템에서 사용
    • 시스템이 커질수록 비용이 기하급수적으로 증가
  • Scale Out
    • 같은 용량의 시스템을 여러 대 배치(반대되는 개념은 Scale In)
    • 더 적은 비용으로 Scale Up보다 성능 향상이 가능
    • 여러 대의 시스템에 로드를 적절히 분산해서 하나의 시스템에 장애가 발생하더라도 서비스에 미치는 영향이 없도록 결함 허용 시스템을 구축할 수 있음
    • 복잡한 아키텍쳐를 이해해야 하고 프로세스나 네트워크 장비가 추가로 필요

Firewall

네트워크 중간에 위치해 해당 장비를 통과하는 트래픽을 사전에 주어진 정책 조건에 맞추어 허용(Permit)하거나 차단(Deny)하는 장비

  • 일반적으로는 네트워크에서 보안을 담당하는 장비를 전부 방화벽이라고 하지만 네트워크 3, 4 계층에서 동작하고 세션을 인지 및 관리하는 SPI(Stateful Packet Inspection) 엔진을 기반으로 동작하는 장비를 방화벽이라고 한다.
  • H/W, OS, S/W에 모두 존재하는 장비
  • 나가는 것에 대해서만 흐름을 바꾸는게 proxy, 들어오고 나가는 것에 모두 관여하는게 방화벽
profile
꿈틀꿈틀

0개의 댓글