-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Lim
committed
Feb 12, 2024
1 parent
680e7f1
commit b161b7d
Showing
5 changed files
with
141 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 다이나믹 라우팅 | ||
|
||
- 다이나믹 라우팅 프로토콜을 사용하면 관리자의 직접적인 개입 없이 라우터끼리 정보를 교환해 경로 정보를 최신으로 유지 |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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를 이용해 통신 |