Skip to content

Commit

Permalink
2024-02-11 && 2024-02-12
Browse files Browse the repository at this point in the history
  • Loading branch information
Lim committed Feb 12, 2024
1 parent 680e7f1 commit b161b7d
Show file tree
Hide file tree
Showing 5 changed files with 141 additions and 7 deletions.
14 changes: 7 additions & 7 deletions docs/sk-lim19f/2024-02-10.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
5. 라우터/L3 스위치: 3계층 장비
# 5. 라우터/L3 스위치: 3계층 장비

- 라우터(Router)는 3계층에서 동작하는 여러 네트워크 장비의 대표격으로 경로를 지정해주는 장비
- 라우터에 들어오는 패킷의 목적지 IP 주소를 확인하고 자신이 가진 경로 정보를 이용해 패킷을 최적의 경로로 포워딩

5.1 라우터의 동작 방식과 역할
## 5.1 라우터의 동작 방식과 역할

- 라우터는 다양한 경로 정보를 수집해 최적의 경로를 라우팅 테이블에 저장한 후 패킷이 라우터로 들어오면 도착지 IP 주소와 라우팅 테이블을 비교해 최선의 경로로 패킷을 내보냄
- 스위치와 반대로 라우터는 들어온 패킷의 목적지 주소가 라우팅 테이블에 없으면 패킷을 버림

5.1.1 경로 지정
### 5.1.1 경로 지정

- 라우터의 가장 중요한 역할은 경로 지정
- 경로 정보를 모아 라우팅 테이블을 만들고 패킷이 라우터로 들어오면 패킷의 도착지 IP 주소를 확인해 경로를 지정하고 패킷을 포워딩
Expand All @@ -22,7 +22,7 @@
- 라우터끼리 서로 경로 정보를 자동으로 교환하는 방법
- 경로 정보를 확인하고 포워딩하는 역할

5.1.2 브로드캐스트 컨트롤(Broadcast Control)
### 5.1.2 브로드캐스트 컨트롤(Broadcast Control)

- 라우터는 패킷을 원격지로 보내는 것을 목표로 개발되어 3계층에서 동작하고 분명한 도착지 정보가 있을 때만 통신을 허락
- 쓸모없는 통신이 네트워크를 차지하는 것을 최대한 막으려고 노력
Expand All @@ -31,23 +31,23 @@
- 라우터의 이 기능을 이용해 브로드캐스트가 다른 네트워크로 전파되는 것을 막을 수 있음
- 이 기능을 "브로드캐스트 컨트롤/멀티캐스트 컨트롤"이라고 함

5.1.3 프로토콜 변환
### 5.1.3 프로토콜 변환

- 라우터의 또 다른 역할은 서로 다른 프로토콜로 구성된 네트워크를 연결하는 것
- LAN 기술이 WAN 기술로 변환되어야만 인터넷과 같이 원격지 네트워크와의 통신이 가능했고 이 역할을 라우터가 담당
- 라우터는 3계층에서 동작하는 장비이므로 3계층 주소 정보를 확인하고 그 정보를 기반으로 동작
- 라우터에 패킷이 들어오면 2계층까지의 헤더 정보를 벗겨내고 3계층 주소를 확인한 후 2계층 헤더 정보를 새로 만들어 외부로 내보냄
- 그래서 라우터에 들어올 때 패킷 2계층 헤더 정보와 나갈 때 패킷의 2계층 헤더 정보가 다름

5.2 경로 지정 - 라우팅/스위칭
### 5.2 경로 지정 - 라우팅/스위칭

- 라우터가 패킷을 처리할 때는 크게 두 가지 작업을 수행
- 경로 정보를 얻어 경로 정보를 정리하는 역할
- 정리된 경로 정보를 기반으로 패킷을 포워딩하는 역할
- 라우터는 자신이 분명히 알고 있는 주소가 아닌 목적지를 가진 패킷이 들어오면 해당 패킷을 버리므로 패킷이 들어오기 전에 경로 정보를 충분히 수집하고 있어야 라우터가 정상적으로 동작
- 라우터는 서브넷 단위로 라우팅 정보를 습득하고 라우팅 정보를 최적화하기 위해 서머리 작업을 통해 여러 개의 서브넷 정보를 뭉쳐 전달

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

- 단말부터 목적지까지의 경로를 모두 책임지는 것이 아니라 인접한 라우터까지만 경로를 지정하면 인접 라우터에서 최적의 경로를 다시 파악한 후 라우터로 패킷을 포워딩
- 네트워크를 한 단계씩 뛰어넘는다는 의미로 이 기법을 홉-바이-홉(Hop-by-Hop) 라우팅이라고 부름
Expand Down
Binary file added docs/sk-lim19f/2024-02-11.JPEG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
58 changes: 58 additions & 0 deletions docs/sk-lim19f/2024-02-11.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
### 5.2.2 라우팅(라우터가 경로 정보를 얻는 방법)

- 라우터가 경로 정보를 얻는 방법은 3가지로 크게 구분
- 다이렉트 커넥티드
- 스태틱 라우팅
- 다이나믹 라우팅

#### 5.2.2.1 다이렉트 커넥티드

- IP 주소를 입력할 때 사용된 IP 주소와 서브넷 마스크로 해당 IP 주소가 속한 네트워크 주소 정보를 알 수 있음
- 라우터나 PC에서는 이 정보로 해당 네트워크에 대한 라우팅 테이블을 자동으로 만듬
- 이 경로 정보를 다이렉트 커넥티드라고 부름

#### 5.2.2.2 스태틱 라우팅

- 관리자가 목적지 네트워크와 넥스트 홉을 라우터에게 직접 지정해 경로 정보를 입력하는 것
- 관리자가 경로를 직접 지정하므로 라우팅 정보를 매우 직관적으로 설정, 관리할 수 있음

#### 5.2.2.3 다이나믹 라우팅

- 스태틱 라우팅은 관리자가 변화가 적은 네트워크에서 네트워크를 손쉽게 관리할 수 있는 좋은 방법이지만 큰 네트워크는 스태틱 라우팅만으로는 관리가 어려움
- 다이나믹 라우팅은 라우터끼리 자신이 알고 있는 경로 정보나 링크 상태 정보를 교환해 전체 네트워크 정보를 학습
- 주기적으로 또는 상태 정보가 변경될 때 라우터끼리 경로 정보가 교환되므로 라우터를 연결하는 회선이나 라우터 자체에 장애가 발생하면 이 상황을 인지해 대체 경로로 패킷을 포워딩

### 5.2.3 스위칭(라우터가 경로를 지정하는 방법)

- 패킷이 들어와 라우팅 테이블을 참조하고 최적의 경로를 찾아 라우터 외부로 포워딩하는 작업을 스위칭이라고 함
- 한번 스위칭 작업을 수행한 정보는 캐시에 저장하고 뒤에 들어오는 패킷은 라우팅 테이블을 확인하는 것이 아니라 캐시를 먼저 확인
- 단순히 목적지 IP만 캐시하는 경우와 출발지와 목적지 IP 모두 캐시하는 경우, 포트 번호 정보까지 포함해 플로를 모두 저장하는 경우로 구분
- 넥스트 홉 L2 정보까지 캐시해 스위칭 시간을 줄이는 기법도 사용

### 5.2.4 라우팅 스위칭 우선순위

- 목적지 네트워크 정보가 동일한 서브넷을 사용하는 경우, 정보를 얻은 소스에 따라 가중치를 정함
- 내가 갖고 있는 네트워크(다이렉트 커넥트)
- 내가 경로를 직접 지정한 네트워크(스태틱 라우팅)
- 경로를 전달받은 네트워크(다이나믹 라우팅)
- 3가지 경로 수집 방법 중 우선순위가 가장 높은 것은 라우터에 바로 연결된 네트워크
- 다음은 관리자가 목적지 네트워크에 대한 경로를 직접 지정하는 스태틱 라우팅
- 마지막으로 라우팅 프로토콜로부터 경로를 전달받은 네트워크
- 패킷을 스위칭할 때는 롱기스트 프리픽스 매치 기법으로 우선수위를 정함
- 롱기스트 프리픽스 매치는 가려는 목적지와 가장 유사한 라우팅 경로를 선택하는 알고리짐

## 5.3 라우팅 설정 방법

### 5.3.1 다이렉트 커넥티드

- 라우터나 PC에 IP 주소, 서브넷 마스크를 입력하면 다이렉트 커넥티드 라우팅 테이블이 생성
- 커넥티드 라우팅 정보만 있는 경우 뿐만 아니라 외부 네트워크에 대한 라우팅 정보가 있더라도 다이렉트 커넥티드 정보를 잘못 입력하면 외부 네트워크와 통신할 수 없음
- 외부 네트워크로 나가는 첫 번째 길목이 다이렉트 커넥트이기 때문

### 5.3.2 스태틱 라우팅

- 네트워크 정보를 쉽게 추가하고 경로를 직접 제어할 수 있는 가장 강력한 방법

### 5.3.3 다이나믹 라우팅

- 다이나믹 라우팅 프로토콜을 사용하면 관리자의 직접적인 개입 없이 라우터끼리 정보를 교환해 경로 정보를 최신으로 유지
Binary file added docs/sk-lim19f/2024-02-12.JPEG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
76 changes: 76 additions & 0 deletions docs/sk-lim19f/2024-02-12.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# 6. 로드 밸런서 / 방화벽: 4계층 장비(세션 장비)

- 2, 3계층 장비에서 고려하지 않았던 통신의 방향성이나 순서와 같은 통신 전반에 대한 관리가 필요하며 이런 정보를 세션 테이블(Session Table)이라는 공간에 담아 관리

## 6.1 4계층 장비의 특징

- 4계층 장비는 TCP와 같은 4계층 헤더에 있는 정보를 이해하고 이 정보들을 기반으로 동작
- 기존 네트워크 장비와 다른 점을 이해해야 하는데 세션 테이블과 그 안에서 관리하는 세션 정보가 가장 중요
- 그래서 4계층 이상에서 동작하는 로드 밸런서, 방화벽과 같은 장비를 '세션 장비'라고 부름
- 세션 테이블
- 세션 장비는 세션 테이블을 기반으로 운영
- 세션 정보를 저장, 확인하는 작업 전반에 대한 이해가 필요
- 세션 정보는 세션 테이블에 남아 있는 라이프타임이 존재
- Symmetric(대칭)경로 요구
- Inbound와 Outbound 경로가 일치
- 정보 변경(로드 밸런서의 경우)
- IP 주소가 변경되며 확장된 L7 로드 밸런서(ADC)는 애플리케이션 프로토콜 정보도 변경

## 6.2 로드 밸런서

- 서버나 장비의 부하를 분산하기 위해 사용하는 장비를 흔히 로드 밸런서라고 부름
- 트래픽을 분배해주는 기능 때문인데 4계층 이상에서 동작하면서 IP 주소나 4계층 정보, 애플리케이션 정보를 확인, 수정하는 기능이 있음
- 가장 많이 쓰이는 분야는 웹 서버 부하 분산
- 내부 부품을 이중화하거나 용량이 더 큰 부품을 사용하면 가격이 크게 올라가므로 작은 장비 여러대를 묶어 사용하는 방법을 선호
- 이런 시스템 확장 방법을 스케일 아웃이라고 함

> 시스템 확장 방법: 스케일 업과 스케일 아웃
- 스케일 업은 기존 시스템에 CPU, 메모리, 디스크와 같은 내부 컴포넌트 용량을 키우거나 이것이 불가능 할 경우, 새로 더 큰 용량의 시스템을 구매해 서비스로 옮기는 방법
- 스케일 아웃은 같은 용량의 시스템을 여러 대 배치

- 작은 시스템 여러대를 운영하더라도 사용자는 서버 배치와 상관없이 하나의 서비스로 보여야 함
- 로드 밸런서가 서비스에 사용되는 대표 IP 주소를 서비스 IP로 갖고 그 밑에 시스템이 늘어나면 로드 밸런서가 서비스에 사용되는 IP 주소를 서비스 IP로 갖고 그 밑에 시스템이 늘어나면 로드 밸런서가 각 시스템의 실제 IP로 변경해 요청을 보냄
- 로드 밸런서는 동작하는 계층에 따라 4계층과 7계층으로 나누어짐
- L4 로드 밸런싱
- 일반적인 로드 밸런서가 동작하는 방식
- TCP, UDP 정보(특히 포트 넘버)를 기반으로 로드 밸런싱을 수행
- L7 로드 밸런싱
- HTTP, FTP, SMTP와 같은 애플리케이션 프로토콜 정보를 기반으로 로드 밸런싱을 수행
- HTTP 헤더 정보나 URI와 같은 정보를 기반으로 프로토콜을 이해한 후 부하를 분산할 수 있음
- 일반적으로 이런 장비를 ADC(Application Delivery Controller)라고 부르며 프록시(Proxy) 역할을 수행
- 스퀴드(Squid)나 Nginx에서 수행하는 리버스 프록시(Reverse Proxy)와 유사한 기능을 가지고 있음

> AWS에서는 NLB가 L4 로드 밸런싱, ALB가 L7 로드 밸런싱용 전용 컴포넌트
### 6.2.1 L4 스위치

- L4 스위치는 용어 그대로 4계층에서 동작하면서 로드 밸런서 기능이 있는 스위치
- L4 스위치는 부하 분산, 성능 최적화, 리다이렉션 기능을 제공
- L4 스위치가 동작하려면 가상 서버(Virtual Server), 가상 IP(Virtual IP), 리얼 서버(Real Server)와 리얼 IP(Real IP)를 설정해야 함
- 가상 서버는 사용자가 바라보는 실제 서비스이고 가상 IP는 사용자가 접근해야 하는 서비스 IP 주소
- 리얼 서버는 실제 서비스를 수행하는 서버이고 리얼 IP는 실제 서버의 IP
- L4 스위치는 가상 IP를 리얼 IP로 변경해주는 역할을 수행

### 6.2.2 ADC

- ADC는 애플리케이션 계층에서 동작하는 로드 밸런서
- 4계층에서 동작하는 L4 스위치와 달리 애플리케이션 프로토콜의 헤더와 내용을 이해하고 동작하므로 다양한 부하 분산, 정보 수정, 필터링이 가능
- ADC는 이런 상세한 동작을 위해 프락시로 동작
- 대부분의 ADC는 L4 스위치의 기능을 포함하고 있음
- 4계층에서 애플리케이션 계층까지 로드 밸런싱 기능을 제공하고 페일오버(Failover), 리다이렉션(Redirection) 기능도 함께 수행
- 이 외에도 애플리케이션 프로토콜을 이해하고 최적화하는 다양한 기능을 제공
- 캐싱(Caching), 압축(Compression), 콘텐츠 변환 및 재작성, 인코딩 변환 등이 가능하고 애플리케이션 프로토콜 최적화 기능도 제공
- 플러그인 형태로 보안 강화 기능을 추가로 제공해 WAF(Web Application Firewall) 기능이나 HTML, XML 검증과 변환을 수행

### 6.2.3 L4 스위치 vs ADC

- L4 스위치는 4계층에서 동작하면서 TCP, UDP 정보를 기반으로 부하를 분산
- 부하 분산 뿐만 아니라 TCP 계층에서의 최적화와 보안 기능도 함께 제공
- TCP 레벨의 간단한 DoS(Denial of Service) 공격을 방어하거나 서버 부하를 줄이기 위해 TCP 세션 재사용과 같이 보안과 성능을 높여주는 기능도 함께 제공
- ADC는 애플리케이션 프로토콜을 이해하고 애플리케이션 내용에 대한 분산, 리다이렉션, 최적화를 제공해 L4 스위치보다 더 다향한 기능을 사용
- ADC는 성능 최적화를 위해 서버에서 수행하는 작업 중 부하가 많이 걸리는 작업을 별도로 수행
- 그 중 하나가 이미지나 정적 콘텐츠 캐싱 기능
- 웹 서버에는 컨텐츠 압축 기능이 있지만 ADC에서 이 역할을 수행해 웹 서버의 부하를 줄일 수 있음
- ADC는 하드웨어 가속이나 소프트웨어 최적화를 통해 이런 부하가 걸리는 작업을 최적화 하는 기능이 있음
- ADC에서는 SSL의 엔드 포인트로 동작해 클라이언트에서 ADC까지의 구간을 SSL로 처리해주고 ADC와 웹 서버 사이를 일반 HTTP를 이용해 통신

0 comments on commit b161b7d

Please sign in to comment.