학교
[컴퓨터 네트워크] Chapter 5. Network Layer: Control Plane (Part 2) - (1)
일자 : 14주차 2차시 (1)
## 3. intra-ISP 라우팅: OSPF
### [1] 라우팅을 확장 가능하게 만들기
- 지금까지의 라우팅 연구 - `이상화된 모델(idealized)`
- `모든 라우터가 동일`함
- `네트워크가 “평면적(flat)”임`
- 하지만, 실제로는 그렇지 않음
#### 1) 규모: 수십억 개의 목적지가 존재한다.
- 라우팅 테이블에 `모든 목적지를 저장할 수 없음`!
- 라우팅 테이블 교환(exchange)이 `링크를 과부하 시킬 것임!`
#### 2) 관리적 자율성을 고려해야 한다.
- 인터넷: 네트워크의 네트워크
- 각 네트워크 관리자마다 자신의 네트워크에서 라우팅을 제어하고 싶어함
### [2] 확장 가능한 라우팅을 위한 인터넷 접근 방식
- 라우터를 `“자율 시스템(Auonomous systems)”(AS)으로 알려진 지역으로 집계`함 (일명 “도메인(domaim)”)
#### 1) `intra-AS` (일명 “intra-domain”)
: `동일 AS 내의 라우팅` (“네트워크”)
- AS 내의 모든 라우터는 `동일한 intra-domain 프로토콜을 실행`해야 함
- Ex) 한동 캠퍼스 내에서 사용하는 네트워크.
- `다른 AS의 라우터`는 `서로 다른 intra-domain 라우팅 프로토콜을 실행`할 수 있음
- Ex) 포스텍 캠퍼스의 라우터는 서로 다른 intra-doamin 라우팅 프로토콜을 실행한다.
- `게이트웨이 라우터`: `자신의 AS의 “엣지”에 위치`하며, `다른 AS의 라우터와 연결(link)`이 있음
#### 2) `inter-AS` (일명 “inter-domain”)
: `AS 간의 라우팅`
- 게이트웨이는 inter-domain 라우팅(및 intra-domain 라우팅)을 수행함
### [3] 상호 연결된 AS

- 3개의 AS가 존재한다. (AS1, AS2, AS3)
- 각각 intra-AS routing이 존재하며, 서로 다르다.
- 다른 AS끼리 연결이 될 때에는 inter-AS routing이 사용된다.
이때, router에 있는 forwarding tablex이 사용된다.
#### 1) intra- 및 inter-AS 라우팅 알고리즘에 의해 구성된 포워딩 테이블
- `intra-AS 라우팅`은 `AS 내의 목적지`에 대한 항목을 결정함
- `inter-AS 및 intra-AS`는 `외부 목적지`에 대한 항목을 결정함
### [4] Inter-AS 라우팅: 도메인 내 포워딩에서의 역할
#### 1) AS1의 라우터가 AS1 외부로 향하는 데이터그램을 수신한다고 가정함:
- 라우터는 `패킷을 AS1의 게이트웨이 라우터로 전달해야 하지만, 어느 것을 선택해야 할까?`
#### 2) AS1 inter-domain 라우팅은 반드시

1. AS2를 통해 도달할 수 있는 목적지와 AS3를 통해 도달할 수 있는 목적지를 `학습해야 함`
2. `이 도달 가능성 정보(reachability info)`를 AS1의 모든 라우터에 `전파해야 함`
### [5] Intra-AS 라우팅: AS 내 라우팅
: 가장 일반적인 intra-AS 라우팅 프로토콜:
- `RIP`: `라우팅 정보 프로토콜` [RFC 1723]
- 고전적인 DV: DVs는 30초마다 교환됨
- 더 이상 널리 사용되지 않음
- `EIGRP`: Enhanced Interior Gateway Routing Protocol
- `DV 기반`
- 수십 년간 Cisco 전용이었으나 2013년에 개방됨 [RFC 7868]
- `OSPF`: Open Shortest Path First [RFC 2328]
- `링크 상태 라우팅`
- `IS-IS 프로토콜` (ISO 표준, RFC 표준 아님) 기본적으로 OSPF와 동일함
### [6] OSPF (Open Shortest Path First) 라우팅
- `“open”`: `공개적으로 사용 가능`
- 고전적인 링크 상태
- 각 라우터는 `OSPF 링크 상태 광고`를 모든 다른 라우터에 `홍수처럼 전송함` (TCP/UDP를 사용하지 않고 `IP를 통해 직접 전송`)
- 여러 링크 비용 메트릭 가능: `대역폭, 지연`
- 각 라우터는 `전체 토폴로지`를 가지고 있으며, `다익스트라 알고리즘을 사용하여 포워딩 테이블을 계산함`
- 보안: `모든 OSPF 메시지는 인증됨(authenticated)` (악의적 침입(malicious intrusion)을 방지(prevent)하기 위해)
### [7] 계층적(Hierarchical) OSPF
- 두 단계의 계층 구조: 지역 영역(loacl area), 백본(backbone).
- 링크 상태 광고는 지역이나 백본에서만 홍수처럼 전송됨
- 각 노드는 상세한 지역 토폴로지를 가지며, 다른 목적지에 도달하기 위한 방향만 알고 있음
#### 1) 지역 경계 라우터 (area border routers)
: 자신의 지역 내 목적지까지의 `거리를 “요약”하고, 백본에 광고함`
- 비유 : `동네의 주민 대표`처럼, 동네 내 목적지까지의 거리 정보를 요약하여 **시청(백본)**에 보고한다.
#### 2) 지역 라우터 (local routers)
- 지역 내에서만 링크 상태를 홍수처럼 `전송함`
- 지역 내에서 라우팅을 `계산함`
- `지역 경계 라우터(area border router)`를 통해 `외부로 패킷을 전달함`
- 비유 : `동네 주민들`처럼, 동네 내에서 서로의 집까지의 길을 잘 알고 있으며, 정보를 공유하여 최적의 길을 찾는다.
#### 3) 경계 라우터 (boundary router)
: `다른 AS에 연결됨`
- 비유 : `도시의 경계 경찰관`과 같아, 자신의 구역과 다른 도시를 연결하는 역할을 한다.
#### 4) 백본 라우터
: `백본에 한정하여 OSPF를 실행함`
- 비유 : `시청의 관리직원`ㅌㅌ처럼, 도시 전체의 정보를 관리하고 동네 대표들의 정보를 통합하여 운영한다.
## 4. ISP 간 라우팅: BGP
### [1] 인터넷 inter-AS 라우팅: BGP
- `BGP (Border Gateway Protocol)`: 사실상 `inter-domain 라우팅 프로토콜`
- “인터넷을 연결하는 `접착제`”
- 서브넷이 자신의 존재(existence)와 도달할 수 있는 목적지를 나머지 인터넷에 광고할 수 있도록 함(: “나는 여기 있으며, 내가 도달할 수 있는 것은 이것이다.”
- BGP는 각 AS에 다음과 같은 수단을 제공함:
- `eBGP`: `이웃 AS`로부터 서브넷 도달 가능성 정보를 얻음
- 비유 : 이웃 도시의 소식통과 같다. 이웃 도시로부터 어떤 길이 열려 있는지, 즉 서브넷에 도달할 수 있는 정보를 받아오는 역할을 한다.
- `iBGP`: `모든 AS 내부 라우터`에 도달 가능성 정보를 전파함
- 비유 : 자신의 도시 내부의 소식통처럼, 도시 안의 모든 주민(라우터)에게 그 도시 내에서 접근 가능한 길과 정보를 전파하는 역할을 한다.
- 도달 가능성 정보와 정책에 따라 `다른 네트워크에 대한 “좋은” 경로를 결정함`
### [2] eBGP, iBGP 연결

#### 0) 의미
- 빨간 점선 : eBGP 연결
- 파란 점선 : 논리적 iBGP 연결
- 1c 라우터 : 게이트웨이 라우터는 eBGP 및 iBGP 프로토콜을 모두 실행함
#### 1) 설명
- 1c와 2a는 그리고 2c와 3a는 서로 eBGP 연결되어 있으며, 이웃 AS로부터 서브넷 도달 가능성 정보를 주고 받는다. (또한, 주로 TCP 연결이 된다.)
- 주목할 점 : 1cc router, 3a router (이 두 개의 라우터는 eBGP, iBGP 프로토콜을 모두 실행한다는 점)
### [3] BGP 기본 사항

- `BGP 세션`: 두 BGP 라우터 (“피어”)가 반영구적(semi-permanent)인 TCP 연결을 통해 `BGP 메시지를 교환함`:
- `서로 다른 목적지 네트워크 접두사에 대한 경로 광고` (BGP는 “경로 벡터” 프로토콜임)
- AS3의 게이트웨이 3a가 AS2의 게이트웨이 2c에 경로 AS3,X를 광고할 때:
- AS3는 `AS2에 X를 향해 데이터그램을 전달할 것을 약속함`
- (X는 AS3에 소속된 것은 아니다)
### [4] 경로 속성과 BGP 경로
- BGP에서 광고하는 경로: `접두사 + 속성`
- `접두사`: 광고되는 목적지
- 두 가지 중요한 속성:
- `AS-PATH`: 접두사 광고가 `지나온 AS 목록`
- `NEXT-HOP`: `다음 AS로의 특정 내부 AS 라우터`를 나타냄
- `정책 기반 라우팅`:
- 경로 광고를 수신하는 게이트웨이는 `수입(import) 정책`을 사용하여 `경로를 수락하거나 거부`함 (예: AS Y를 경유하지 않도록 함).
- `AS 정책`은 또한 `경로를 다른 이웃 AS에 광고할지 여부를 결정함`
### [5-1] BGP 경로 광고

- AS2의 라우터 `2c`가 AS3의 라우터 `3a`로부터 `경로 광고 AS3,X를 수신함 (eBGP를 통해)`
- `AS2 정책`에 따라 AS2의 라우터 2c는 경`로 AS3,X를 수락`하고, `이를 모든 AS2 라우터에 iBGP를 통해 전파함`
- `AS2 정책`에 따라 AS2의 라우터 `2a`가 `AS1의 라우터 1c에 경로 AS2, AS3, X를 eBGP를 통해 광고함`
### [5-2] BGP 경로 광고 (추가)
#### 1) 1단계

- `게이트웨이 라우터`는 목적지까지의 `여러 경로에 대해 배울 수 있음`
- AS1의 게이트웨이 라우터 1c가 `2a로부터 경로` `AS2,AS3,X를 학습함`
- AS1의 게이트웨이 라우터 1c가 `3a로부터 경로` `AS3,X를 학습함`
- `정책에` 따라 AS1의 게이트웨이 라우터 `1c`는 `경로 AS3,X를 선택`하고, `이를 iBGP를 통해 AS1 내에서 광고함`
#### 2) 2단계

- 상기(recall): 1a, 1b, 1d는 `1c를 통해` `iBGP에서 “X에 가는 경로는 1c를 거친다”는 정보를 학습함`
- 1d에서: `OSPF intra-domain 라우팅`에 따라 1c에 도달하기 위해서는 `인터페이스 1을 사용함`
- 1d에서: X에 도달하기 위해서는 `인터페이스 1을 사용함`
- 1d에서 동일한 인터페이스 1을 사용하는 이유
: 이는 X에 도달하기 위해 1c를 거치는 동일한 경로를 사용해야 하기 때문에 그렇다.
#### 3) 3단계

- 상기: 1a, 1b, 1d는 `1c를 통해` `iBGP에서 “X에 가는 경로는 1c를 거친다”는 정보를 학습함`
- 1d에서: OSPF intra-domain 라우팅에 따라 `1c에 도달하기 위해 인터페이스 1을 사용함`
- 1d에서: X에 도달하기 위해 `인터페이스 1을 사용함`
- 1a에서: OSPF intra-domain 라우팅에 따라 `1c에 도달하기 위해 인터페이스 2를 사용함`
- 1a에서: `X에 도달하기 위해 인터페이스 2를 사용함`
### [6] 핫 포테이토 라우팅

- 2d는 (iBGP를 통해) `2a 또는 2c를 통해 X로 라우팅할 수 있음을 학습함`
- `핫 포테이토 라우팅`: `가장 적은 intra-domain 비용을 가진 로컬 게이트웨이를 선택함` (예: 2d는 X에 도달하기 위해 2a를 선택함, 비록 AS 홉 수는 더 많더라도): inter-domain 비용은 걱정하지 않음!
- 2a에서 2d로 가는 비용은 201이고, 2d에서 2c로 가는 비용은 263이다. 즉, 2d가 X에 도달하기 위해 2a를 선택하는 것은 2a를 통해 X로 가는 비용이 상대적으로 낮기 때문이다.
- 핫 포테이토 라우팅에서는 inter-domain 비용이나 홉 수는 고려하지 않고, 오직 intra-domain 비용에만 집중한다. 따라서 비록 AS 홉 수가 더 많더라도, 2d는 비용이 적은 2a를 선택하게 된다.
### [7-1] BGP: 광고를 통한 정책 달성

- ISP는 `고객 네트워크로의 트래픽만 라우팅하고 싶어함` (다른 ISP 간의 `전이 트래픽을 처리하고 싶지 않음` – 전형적인 “실제 세계” 정책)
- A는 B와 C에 경로 Aw를 광고함
- `B는 C에 BAw를 광고하지 않기로 선택함`!
- B는 `CBAw를 라우팅해도 “수익”을 얻지 못함`, 왜냐하면 C, A, w는 B의 고객이 아니기 때문임
- C는 경로 CBAw를 알지 못함
- `C는 B를 사용하지 않고 CAw를 라우팅하여 w에 도달함`
### [7-2] BGP: 광고를 통한 정책 달성 (추가)

- ISP는 고객 네트워크 간의 트래픽만 라우팅하고 싶어함 (다른 ISP 간의 전이 트래픽을 처리하고 싶지 않음 – 전형적인 “실제 세계” 정책)
- `A, B, C는 제공자 네트워크임`
- `x, w, y는 고객` (제공자 네트워크의 고객임)
- x는 `이중 연결`됨: 두 개의 네트워크에 연결되어 있음
- 시행할 정책: `x는 B에서 C로의 트래픽을 x를 통해 라우팅하고 싶지 않음`
- ... 그래서 `x는 B에게 C로 가는 경로를 광고하지 않음`
- Ex) x는 B에게 Cy를 광고하지 않음
### [8] BGP 경로 선택
- 라우터는 `목적지 AS에 대한 여러 경로를 학습`할 수 있으며, 다음 `기준`에 따라 경로를 선택함:
1. `지역 선호도 값 속성`: 정책 결정
2. 가장 `짧은 AS-PATH`
3. 가장 `가까운 NEXT-HOP 라우터`: 핫 포테이토 라우팅
4. 추가 기준
### [9] BGP 메시지
: (빠르게 짚기만 하고 지나감)
- BGP 메시지는 TCP 연결을 통해 피어 간에 교환됨
- BGP 메시지:
- `OPEN`: 원격 BGP 피어에 대한 TCP 연결을 열고, 송신 BGP 피어를 인증함
- `UPDATE`: 새로운 경로를 광고하거나(old) 기존 경로를 철회함
- `KEEPALIVE`: UPDATES가 없을 때 연결을 유지하고, OPEN 요청을 ACK함
- `NOTIFICATION`: 이전 메시지의 오류를 보고하며, 연결 종료에도 사용됨
### [10] 다른 Intra-AS 및 Inter-AS 라우팅의 이유
#### 1) 정책 (policy)
- `inter-AS(외부적인 AS)`: 관리자는 `자신의 트래픽 라우팅 방법`과 `누가 자신의 네트워크를 통해 라우팅하는지`를 제어하고 싶어함
- `intra-AS(내부적인 AS)`: `단일 관리자`가 있으므로 `정책이 덜 중요함`
#### 2) 규모 (scale)
- `계층적 라우팅(hierarchical)`은 `테이블 크기를 절약하고 업데이트 트래픽을 줄임`
#### 3) 성능 (performance)
- **intra-AS**:
- 성능에 집중할 수 있는 이유는 단일 관리자가 전체 네트워크를 제어하기 때문임. 관리자는 네트워크 최적화를 위해 라우팅 프로토콜을 조정하고, 즉각적인 문제 해결이 가능하여 성능 개선이 용이함.
- **inter-AS**:
- 정책이 성능보다 우선하는 이유는 서로 다른 ISP의 이해관계가 반영되기 때문임. 각 ISP는 상업적 요인이나 보안 문제에 따라 특정 경로를 선택하며, 이로 인해 성능보다 정책 준수가 더 중요해짐. 따라서 데이터 전송 경로가 비효율적일 수 있음.
## 5. SDN 제어 평면
### [1] 소프트웨어 정의 네트워킹 (SDN)
- `인터넷 네트워크 계층`: 역사적으로 `분산된 각 라우터 제어 접근 방식으로 구현`됨:
- `단일 라우터`는 `스위칭 하드웨어를 포함`하고, 독점적인 라우터 운영 체제(e.g., Cisco IOS)에서 인터넷 표준 프로토콜(IP, RIP, IS-IS, OSPF, BGP)의 `독점 구현을 실행함`
- 다양한 네트워크 계층 기능을 위한 다양한 `"미들박스"`: 방화벽, 로드 밸런서, NAT 박스 등
- ~2005: 네트워크 제어 평면 재고에 대한 관심 증가
### [2] 라우터별 제어 평면

- 각 라우터의 개별 라우팅 알고리즘 구성 요소가 `제어 평면에서 상호작`용하여 `포워딩 테이블을 계산함`
### [3] 소프트웨어 정의 네트워킹 (SDN) 제어 평면

- `원격 컨트롤러`가 `라우터에 포워딩 테이블을 계산하고 설치함`
### [4] 소프트웨어 정의 네트워킹 (SDN)
#### 1) 논리적으로 중앙 집중화된 제어 평면의 장점
- **더 쉬운 네트워크 관리**: `라우터 구성 오류를 피하고`, `트래픽 흐름의 유연성을 증가시킴`
- **테이블 기반 포워딩**: (OpenFlow API를 상기 [recall]) `라우터 프로그래밍이 가능해짐`
- 중앙 집중화된 프로그래밍이 용이: 중앙에서 테이블을 계산하고 배포
- 분산 프로그래밍은 더 어려움: 각 라우터에서 구현된 분산 알고리즘(프로토콜)의 결과로 테이블을 계산해야 함
- **개방형(비독점적) 제어 평면 구현**:
- 혁신 촉진: "1000송이가 피게 하라"는 발상 허용
### [5] 트래픽 엔지니어링: 전통적인 라우팅으로는 어려움

- u, x, y, z = 1 + 1 + 2 = 4 (least cost path)
- u, v, w, z = 2 + 3 + 5 = 9 (not least const path)
#### 1) 질문 1
질문: 네트워크 운영자가 u에서 z로의 트래픽이 uxyz가 아닌 uvwz를 따라 흐르도록 하려면 어떻게 해야 할까?
답변: `링크 가중치를 재정의`해야 하며, 그러면 `트래픽 라우팅 알고리즘이 그에 따라 경로를 계산함` (또는 새로운 라우팅 알고리즘이 필요함)!
- `링크 가중치`는 `제어 “조정 장치”에 불과함`: 제어할 수 있는 것이 많지 않음!
#### 2) 질문 2
질문: 네트워크 운영자가 u에서 z로의 트래픽을 uvwz와 uxyz 사이에 `분할(로드 밸런싱)하고 싶다면` 어떻게 해야 할까?
답변: `할 수 없다` (또는 `새로운 라우팅 알고리즘이 필요하다`).
#### 3) 질문 3
질문: `w에서 z로 파란색과 빨간색 트래픽을 다르게 라우팅하고 싶다면` 어떻게 해야 할까?
답변: `할 수 없다` (목적지 기반 포워딩, 링크 상태 및 거리 벡터 라우팅으로는 불가능하다).
- 4장에서 배운 것처럼, `일반화된 포워딩과 SDN을 사용하면 원하는 모든 라우팅을 구현할 수 있다.`
---
