4.NetworkDevice
2계층 장비 - L2 Switch
Switch : 패킷을 동시에 여러 장비가 서로 간섭없이 통신하도록 도와주는 장비

개요
- 네트워크 중간에서 패킷을 받아
필요한 곳에만 보내주는 네트워크 중재자
- 허브는 신호를 증폭해주고 데이터를 받으면 연결된 모든 곳에 전송해주는 장비
- 스위치는 아무 설정 없이 네트워크에 연결해도 MAC 주소를 기반으로 패킷을 전달하는 기본 동작을 수행할 수 있는 2계층 장비
- MAC 주소를 인식하고 패킷을 전달하는 스위치의 기본 동작 외에도 한 대의 장비에서 논리적으로 네트워크를 분리할 수 있는 VLAN 기능과 네트워크의 루프를 방지하는 스패닝 트리 프로토콜(STP)과 같은 기능을 기본적으로 가지고 있으며, 다양한 보안 기능과 모니터링에 필요힌 여러 기능이 있음
- 전문적인 네트워크 관리자가 되기 전에는 VLAN에 대한 이해와 설정 그리고 트렁크 포트 설정과 루프 방지의 개념만 알아도 됨
역할
- 네트워크 성능을 높여줌
- 여러 단말이 한꺼번에 통신할 수 있어 통신하기 위해 기다리거나 충돌 때문에 대기하는 문제를 해결
MAC Address Table
- 연결된 장비의 MAC Address 와 인터페이스를 기록한 테이블
MAC Address Table을 만드는 방법
Flooding
- 스위치가 처음 부팅 되었을 때는 MAC Address Table이 비어있는 상태
- 데이터가 전송을 요청하면 연결된 모든 장비에 패킷을 전송
- Flooding은 정상적인 동작이지만, 이 동작이 많아지면 스위치가 제 역할을 못하게 됨
비정상적인 Flooding
- 스위치의 기능을 무력화해서 주변 통신을 모니터링 하는 공격 기법
- 스위치에게 엉뚱한 MAC Address를 학습시키거나, MAC Address Table을 꽉 차게 해서 스위칭의 플러딩 동작을 유도
- 연결된 장비를 모니터링 해서 이런 상황이 벌어지면 주변에서 공격이 수행되는 상황임을 파악해야 함
Address Learning
- 패킷을 전송한 곳의 MAC Address 와 인터페이스를 MAC Address Table에 기록
- Broadcast, Multicast 의 경우는 MAC Address 를 학습할 수 없음
사전 정의된 MAC Address Table: Switch 간 통신을 위해서 사용되는 주소
Forwarding / Filtering
- 전송된 데이터가 맞지 않는 인터페이스로는 전송하지 않고(Filtering), 일치하는 인터페이스에는 데이터를 전송(Forwarding)
LAN에서의 ARP(Address Resolution Protocol)
- MAC Address 를 학습하는 프로토콜
- 이더넷에서는 스위치가 Unicast를 Flooding 하는 경우는 거의 없음
- 패킷을 만들기 전에 단말의 MAC Address를 알기 위해서 ARP Broadcast 가 먼저 수행되기 때문
- ARP와 MAC Address Table은 일정 시간 동안 지워지지 않는데, 이 시간을 Aging Time 이라고 함
- 일반적으로 MAC Address Table의 에이징 타임이 더 길어서 Unicast 전송 시 Flooding이 발생하는 것을 방지
VLAN(Virtual Local Area Network)

- 물리적 배치와 상관없이 LAN 을 논리적으로 분할 구성하는 기술
- 기업과 같이 여러 부서가 함께 근무하면서 각 부서 별로 네트워크를 분할 할 때 네트워크를 여러 개 운영해야 함
- 최근에는 전화기, 복합기, 스마트폰과 같이 PC 외에도 다수의 단말이 네트워크에 연결되므로 네트워크 분할이 더 중요
- 과도한 브로드캐스트로 인한 단말들의 성능 저하, 보안 향상을 위한 차단 용도, 서비스 성격에 따른 정책 적용과 같은 이유로 네트워크가 분리되어야 함
- VLAN을 나누면 하나의 장비를 서로 다른 네트워크를 갖도록 논리적으로 분할한 것이므로 Unicast 뿐 아니라 브로드캐스트도 VLAN 간에 통신할 수 없음
[개요]

- VLAN 간의 통신이 필요하다면 서로 다른 네트워크 간의 통신이므로 3계층 장비(Router)가 필요

- VLAN을 사용하면 물리적 구성과 상관없이 네트워크를 분리할 수 있고, 물리적으로 다른 층에 있는 단말이 하나의 VLAN을 사용해 동일한 네트워크로 묶을 수 있음
- 같은 층에서 부서별로 네트워크를 분리하거나 일반 PC, IP 전화기를 분리할 수 있음
- 무선 단말과 같이 서비스나 단말의 성격에 따라 네트워크를 분리할 수 있고, 분리된 단말 간에는 3계층 장비를 통해 통신
[종류와 특징]
[VLAN 동작 방식]
- 서로 다른 VLAN은
3계층 장비를 이용해서 통신을 수행
- 서로 다른 물리적 장비에 구성된 동일한 VLAN은 연결이 되어 있어야만 통신이 가능
- 하나의 스위치에 여러 개의 VLAN이 존재하고, 다른 스위치에도 여러 개의 VLAN이 존재하는 상태에서 각 스위치에 동일한 VLAN이 여러 개 존재하는 경우 여러 개의 포트를 연결해야 함.
[Trunk Port]
- 데이터를 전송할 때, VLAN ID를 함께 전송해서 읽을 때 VLAN ID를 읽어서 특정 VLAN에 데이터를 전송하는 포트
Tagged Port 라고도 함.
- 이 포트를 이용하면 스위치끼리 여러 개의 VLAN이 연결되어 있더라도 물리적으로 하나만 연결하면 됨
- Trunk 는 Cisco 에서 사용하는 용어
- 트렁크 포트 이외의 포트를 Untagged 포트 또는 Access 포트라고 함
- 스위치 간의 연결이 아닌 서버와 연결된 포트도 VMWare 의 ESXi 와 가상화 서버가 연결될 때는 Tagged 포트로 설정해야한다.
- 가상화 서버 내부에 가상 스위치가 존재하기 때문에 스위치와 스위치의 연결로 봐야 함.
[STP]
[Loop]
- SpoF를 피하기 위해 스위치 두 대로 네트워크를 디자인 하지만, 스위치 두 대로 디자인을 하면 패킷이 네트워크를 따라 계속 전송되므로 네트워크를 마비시킬 수 있음
(다양한 루프 구조)


- 루프 구조로 네트워크가 연결된 상태에서 단말에서 브로드캐스트를 발생시키면 스위치는 이 패킷을 패킷이 유입된 포트를 제외한 모든 포트로 Flooding
- Flooding 된 패킷은 다른 스위치로도 보내지고, 이 패킷을 받은 스위치는 패킷이 유입된 포트를 제외한 모든 포트로 다시 Flooding 하다보면 루프 구조에서는 이 패킷이 계속 돌아가는데, 이것을 브로드캐스트 스톰이라고 함
- 네트워크에 접속된 단말의 속도가 느려지고, 접속 속도가 느려짐. 또 설치된 스위치에 모든 LED 들이 동시에 빠른 속도로 깜빡임
- Router 에서는 이런 문제가 발생하지 않는데, 3계층에서는 TTL(Time To Live) 이라는 패킷 수명을 가지고 있기 때문에 이런 상황이 발생하지 않음
[STP]
- Spanning Tree Protocol 은 루프를 확인하고 적절히 포트를 사용하지 못하도록 만들어 루프를 예방하는 메커니즘
- 이를 위해서
BPDU(Bridge Protocol Data Unit) 라는 프로토콜을 통해 스위치 간에 정보를 전달하고 이렇게 수집된 정보를 이용해서 루프 구간을 확인
- BPDU에는 스위치의 고유한 값을 같이 전송해서 루프를 파악
- 동작 방식
- 루프를 없애기 위해 나무가 뿌리에서 가지로 뻗어나가는 것 처럼 토콜리지를 구성
- 네트워크 상에서 뿌리가 되는 가장 높은 스위치를 선택하고, 그 스위치를 통해 BPDU가 교환되도록 하는데 그 스위치가
Root Switch
- 모든 스위치는 처음에 자신을 루트 스위치로 인식해서 동작
- BPDU를 교환해서 브릿지 ID가 낮은 스위치를 루트 스위치로 선정
[향상된 STP]
RSTP
- 스패닝 트리 프로토콜은 이중화된 스위치 경로 중 정상적인 경로에 문제가 발생할 경우 백업 경로를 활성화하는데 30~50초 정도 걸림
- BPDU에 별도의 부가 정보를 추가해서 2~3초 정도로 줄인 방식
MST
- 일반 스패닝 프로토콜은 VLAN 개수와 상관 없이 스패닝 트리가 한 개만 동작
- VLAN을 그룹별로 묶어서 여러 개의 스패닝 트리가 동작하게 해서 효율을 높인 방식
[스위치의 구조]
- 관리용 Control Plane 과 패킷을 포워딩하는 Data Plane 으로 구성
- 스위치 원격 관리용 텔넷, SSH, Web 과 같은 서비스는 Control Plane 에서 수행
[스위치에 IP를 할당하는 이유]
- 스위치는 근본적으로 IP를 할당할 필요가 없음
- 관리 목적으로 IP를 할당
- 일정 규모 이상의 네트워크에서 운영되는 스위치는 원격으로 접속해서 관리할 수 있도록 하기 위해서
3계층 장비 - Router & L3 Switch
Router : 3계층 장비로 경로를 지정해주는 장비

- 라우터에 들어오는 패킷의 목적지 IP 주소를 확인하고 자신이 가진 경로 정보를 이용해서 패킷을 최적의 경로로 포워딩
- 원격지 네트워크와 연결할 때 필수 네트워크 장비
L3 Switch
- 라우터처럼 3계층에서 동작하는 스위치
- 기존의 라우터는 소프트웨어로 구현하고 스위치는 하드웨어로 구현하는 형태로 구분하거나 다양한 기능의 라우터와 패킷을 빨리 보내는데 최적화된 스위치로 구분했는데, 지금은 라우터와 L3 Switch를 구분하기 어려움
라우터의 동작 방식과 역할
- 라우터는 다양한 경로 정보를 수집해 최적의 경로를 라우팅 테이블에 저장한 후 패킷이 라우터로 들어오면 도착지 IP 주소와 라우팅 테이블을 비교해 최선위 경로로 패킷을 내보냄
- 스위치와 반대로 라우터는 들어온 패킷의 목적지 주소가 라우팅 테이블에 없으면 패킷을 버림
- 패킷 포워딩 과정에서 기존 2계층 헤더 정보를 제거한 후 새로운 2계층 헤더를 만들어 냄
- 라우터의 동작 방식을 경로 지정, 브로드캐스트 컨트롤, 프로토콜 변환이라 함
경로 지정
- 경로 정보를 모아서 라우팅 테이블을 만들고 패킷이 라우터로 들어오면 패킷의 도착지 IP 주소를 확인해서 경로를 지정하고 패킷을 포워딩
- 경로를 학습하는 방법은 인접 네트워크 정보를 얻는 방법과 관리자가 직접 경로 정보를 입력하는 방법 그리고 라우터끼리 서로 경로 정보를 자동으로 교환하는 방법이 있음
- 라우터가 패킷을 처리할 때 수행하는 작업
- 경로 정보를 얻어 경로 정보를 정리하는 역할
- 정리된 경로 정보를 기반으로 패킷을 포워딩하는 역할
- 라우터는 서브넷 단위로 라우팅 정보를 습득하고, 라우팅 정보를 최적화하기 위해서 서머리 작업을 통해 여러 개의 서브넷 정보를 뭉쳐서 전달
- 라우터에 들어온 패킷의 목적지 주소와 라우터가 갖고 있는 라우팅 테이블 정보가 정확히 일치하지 않더라도 수많은 정보 중 목적지에 가장 근접한 정보를 찾아 패킷을 포워딩 해야 함
- 현대 인터넷에서는 단말부터 목적지까지의 경로를 모두 책임지는 것이 아닌, 인접한 라우터까지만 경로를 지정하면 인접 라우터에서 최적의 경로를 다시 파악한 후 다음 라우터로 패킷을 포워딩
(라우팅 동작과 라우팅 테이블)

- 네트워크를 한 단계씩 뛰어 넘는다는 의미로
Hop-by-Hop 라우팅이라고 부르고, 인접한 라우터를 next hop 이라고 함
- 라우터는 패킷이 목적지로 가는 전체 경로를 파악하지 않고, 최적의 next hop을 선택해 보내줌
- next-hop 을 지정하는 방법
다음 라우터의 IP를 지정하는 방법
라우터의 나가는 인터페이스를 지정하는 방법
라우터의 나가는 인터페이스와 다음 라우터의 IP를 동시에 지정하는 방법
(라우팅 동작과 라우팅 테이블)

- 루프가 없는 3계층: TTL(Time To Live)
- 3계층의 IP 헤더에는 TTL 이라는 필드가 있는데, 이 필드는 패킷이 네트워크에 살아 있을 수 있는 시간(HOP)을 제한
- 인터넷 구간에서 쓸모없는 패킷이 돌아다녀 대역폭을 낭비하는 것을 막이 위해 라우터는 주소가 불분명한 패킷을 버림
- 실제로 운영되던 사이트가 갑자기 없어진다던가 이 상황에서 대안 경로를 찾다가 순간적으로 마주보는 두 대의 라우터의 넥스트 홉이 각각 상대방으로 구성되어 패킷이 두 라우터 사이에서 계속 오가는 경우가 발생할 수 있음
- 패킷이 영구적으로 사라지지 않는다면 장비 간에 동일한 패킷이 ping pong을 치거나 인터넷에 사라지지 않는 유령 패킷이 넘쳐나게 됨
- → 모든 패킷은 TTL 이라는 수명 값(Lifetime)을 가지고 있고, 이 값이 0이 되면 네트워크 장비에서 버림
- TTL은 실제 초(s)와 같은 시간이 아니라 홉을 지칭하며, 하나의 홉을 지날 때마다 TTL 값은 1씩 줄어듦
브로드캐스트 컨트롤
- 라우터는 목적지 주소를 모르는 패킷이 전달되더라도 브로드캐스트를 수행하지 않음
프로토콜 변환
- 예전에는 LAN에서 사용하는 프로토콜과 WAN에서 사용하는 프로토콜이 달라서 변환을 라우터가 수행
라우터가 경로 정보를 얻는 방법
라우팅 / 스위칭 우선 순위
-
Direct Connected > Static Routing > Dynamic Routing
-
AD(Administrative Distance - 관리 거리)
-
동일한 우선 순위의 경우 AD를 이용해서 우선 순위를 설정

(Cisco 장비 기준 AD)
-
라우팅 테이블은 가장 좋은 경로 정보만 모아놓은 핵심 정보
-
일반적인 경로 정보를 모아놓은 토폴로지 테이블에서 좋은 경로 정보의 우선수위는 경로 정보를 받은 방법과 거리를 기준으로 정함
4계층 장비 - LoadBalancer(L4 Switch) & Firewall
LoadBalancer
- 네트워크 장비는 2계층과 3계층에서 동작하는 장비를 지칭하는 용어였지만, IP 부족으로 NAT 기술이 등장하고 보안용 방화벽, 프록시와 같은 장비들이 등장
- 4계층 이상에서 동작하는 네트워크 장비들이 많아지면서 4계층에서 동작하는 장비도 네트워크 장비에 포함
- 4계층의 특징인
포트 번호, 시퀀스 번호, ACK 번호를 붙여서 사용
- 기존 2, 3계층 장비에서 고려하지 않았던 통신의 방향성이나 순서와 같은 통신 전반에 대한 관리가 필요하며 이런 정보를
Session Table 이라는 공간에 담아 관리
- 4계층 이상에서 동작하는 장비는 이런 세션 테이블을 관리해야 하고 이 정보를 기반으로 동작함
4계층 장비의 특징
- TCP와 같은 4계층 헤더에 있는 정보를 이해하고 이 정보들을 기반으로 동작
- 4계층에서 동작하는
LoadBalancer 와 Firewall 을 세션 장비라고도 함
Session 장비에서 고려할 요소
- Session Table
- Symmetric 경로 요구: Inbound 와 Outbound 경로가 일치해야 함
- 정보 변경
- LoadBalancer 의 경우는 IP 주소가 변경되며, 확장된 L7 LoadBalancer는 애플리케이션 프로토콜 정보도 변경함
LoadBalancer
서버나 장비의 부하를 분산하기 위해 사용하는 장비
- 트래픽을 분배해주는 기능 때문에 4계층 이상에서 동작하면서 IP 주소나 4계층 정보 또는 애플리케이션 정보를 확인 및 수정하는 기능이 있음
- 가장 많이 사용되는 것은 서버의 부하 분산
- 작은 시스템 여러 대를 운영하더라도 사용자는 서버 배치와 상관없이 하나의 서비스로 보여야 하는데, 로드밸런서가 서비스에 사용되는 대표 IP 주소를 서비스 IP로 갖고, 그 밑에 시스템이 늘어나면 로드밸런서가 각 시스템의 실제 IP로 변경해서 요청을 전송
- 로드밸런서는 웹 애플리케이션 뿐 아니라 FWLB(Fire Wall Load Balancer) 나 VPBLB(VPN Load Balancer) 와 같이 다양한 서비스를 위해 사용할 수 있음
L4 LoadBalancing & L7 LoadBalancing
L4 Switch
4계층에서 동작해서 LoadBalancer 기능이 있는 스위치
- 내부 동작 방식은 4계층 LoadBalancer 이지만 외형은 여러 개의 포트를 가지고 있음
- 서버형 로드밸런서나 소프트웨어 형태(nginx 등)의 로드밸런서도 있지만, 다양한 네트워크 구성이 가능한 스위치형 로드밸런서가 가장 대중화 되어 있음
- L4 스위치는 부하 분산 및 성능 최적화와 리다이렉션 기능을 제공
부하 분산

Virtual Server, Virtual IP, Real Server, Real IP 를 설정해야 함
- Virtual Server 와 Virtual IP 가 사용자가 바라보는 실제 서비스
- Real Server가 실제 서비스를 수행하는 서버
- Real IP가 Real Server의 IP
- L4 Switch 는
Virtual IP -> Real IP 로 변경해주는 역할을 수행
- 사용자는 L4 Switch 의 Virtual IP를 목적지로 서비스를 요청하고, L4 스위치가 목적지로 설정된 가상 IP를 리얼 IP로 다시 변경해 전송
- 이 과정에서 부하를 어떤 방식으로 분산할지 결정할 수 있음
헬스 체크(Health Check)
-
서비스 그룹에 있는 각 서버가 살아있는지 확인하는 작업.
-
정상적인 서비스 쪽으로만 부하를 분산하고, 비정상적인 서버는 서비스 그룹에서 제외해서 트래픽을 보내지 않아야 함
-
비정상적인 서버라고 하더라도 헬스 체크를 수행해서 정상으로 확인되면 다시 서비스 그룹에 포함시켜야 함
-
헬스 체크 방식
헬스 체크 주기와 타이머
- 값
Interval - 로드 밸런서에서 서버로 헬스 체크 패킷을 보내는 주기
Response - 로드 밸런서에서 서버로 헬스 체크 패킷을 보내고 응답을 기다리는 시간으로 해당 시간까지 응답이 오지 않으면 실패로 간주
Retries - 로드 밸런서에서 헬스 체크 실패 시 최대 시도 횟수로 최대 시도 횟수 이전에 성공 시 횟수는 초기화됨
Timeout - 로드 밸런서에서 헬스 체크 실패 시 최대 대기 시간으로 헬스 체크 패킷을 서버로 전송한 후 이 시간 내에 성공하지 못하면 해당 서버는 다운
Dead Interval - 서비스의 기본적인 헬스 체크 주기가 아닌 서비스 다운 시의 헬스 체크 주기로 서비스가 죽은 상태에서 헬스 체크 주기를 별도로 더 늘릴 때 사용
부하 분산 알고리즘
Round Robin
- 현재 구성된 장비에 순차적으로 분산함. 총 누적 세션 수는 동일하지만 활성화 된 세션 수는 달라질 수 있음
Least Connection (최소 접속)
- 현재 구성된 장비 중 가장 활성화된 세션 수가 적은 장비로 부하를 분산함
Weighted Round Robin
- 라운드 로빈 방식과 동일하지만, 각 장비에 가중치를 두어 가중치가 높은 장비에 부하를 더 많이 분산함. 처리 용량이 다른 서버에 부하를 분산하기 위한 분산 알고리즘
Weighted Least Connection
- 최소 접속 방식과 동일하지만, 각 장비에 가중치를 두어 가중치가 높은 장비에 부하를 더 많이 분산함. 처리 용량이 다른 서버에 부하를 분산하기 위한 분산 알고리즘
Hash
- 해시 알고리즘을 이용한 부하 분산
- 서버의 부하를 고려하지 않고 클라이언트가 같은 서버에 지속적으로 접속하도록 하기 위해 사용하는 부하 분산 방식
- 같은 알고리즘을 사용하면
항상 동일한 결과값을 가지고 서비스를 분산할 수 있음
- → 라운드 로빈이나 최소 접속 방식은 부하를 비교적 비슷한 비율로 분산시킬 수 있다는 장점이 있지만, 동일한 출발지에서 로드 밸런서를 거친 서비스 요청이 처음에 분산된 서버와 그 다음 요청이 분산된 서버가 달라질 수 있어, 각 서버에서 세션을 유지해야 하는 서비스는 정상적으로 서비스 되지 않음
로드 밸런서 구성 방식

HAProxy 를 사용한 로드 밸런서 설정
- 일반 서버에서 로드 밸런서의 역할을 직접 수행하게 해주는 오픈소스 기반의 소프트웨어 로드 밸런서
- NFV(Network Fuction Virtualization) 이라고 볼 수 있음.
- HAProxy 를 적용한 하드웨어 어플라이언스(Hardware Appliance) 형태의 모델인 ALOHA 로드밸런서도 제공