본 내용은 Computer Networking: A Top-down Approach 를 읽고 공부한 내용입니다.
목차
1. 개요
2. 라우팅 알고리즘 <- 경로 계산 시 쓰는 알고리즘
1) 링크 상태(LS) 라우팅 알고리즘
2) 거리 벡터(Distance-Vector, DV) 라우팅 알고리즘
3. 인터넷에서의 라우팅 <- 라우팅 정보 교환을 위한 프로토콜
1) 인트라-AS 라우팅(RIP, OSPF)
2) 인터-AS 라우팅(BGP)
3) Hot Potato Routing
4) BGP 라우팅 정책
5) intra VS inter-AS routing 차이점
4. 소프트웨어 정의 네트워크(SDN) 제어 평면
1) Match and Action
2) SDN 구조의 네 가지 특징
3) SDN의 3계층
2) 오픈플로우(OpenFlow) 프로토콜
3) SDN 컨트롤러 시나리오
5. 문제풀이
1. 개요
앞의 내용에서 네트워크 계층의 포워딩 기능에 대해 알아보았다. 이 장부터는 '라우팅 기능'에 대해 알아보자!
2. 라우팅 알고리즘
라우팅 프로토콜의 목표는 source에서 destination까지의 "good" paths를 결정하는 것이다. 여기서 "good"은 최소의 비용, 가장 빠른, 혼잡을 최소화하는 것을 의미한다.
아래와 같이 간단하게 분류할 수 있다.
global/decentralized : 라우터들끼리 전부 연결됨(link state algo)/라우터들은 그들의 이웃끼리만 비용과 연결상태 공유(distance vector algo)
static/dynamic : 경로들이 천천히 변화/경로들이 엄청 빠르게 변화 및 주기적 업데이트
1. LS 알고리즘
다익스트라 알고리즘 사용
특징:
집중적이고 정적이다(한 노드에서부터 시작하여 연결된 노드에만 집중하므로)
시간복잡도: O(N^2) 이 때 N은 노드의 갯수이다. / 전송되는 메시지 갯수 : O(NE) E는 간선의 갯수이다.
2. DV 알고리즘
벨만 포드 알고리즘 (DP) 사용.
특징 :
반복적(이웃끼리 정보를 교환하지 않을 때까지 프로세스가 지속된다.)
비동기적(모든 노드가 서로 톱니바퀴 모드로 동작할 필요가 없다.)
분산적(주변 소식이 바뀔 때 notify한다.)
3. 인터넷에서의 라우팅
위의 라우팅 알고리즘들은 아무래도 한계가 존재한다. 우선 라우터의 개수가 증가함에 따라 테이블 정보 계산, 저장, 통신에 관련된 오버헤드가 크게 증가하였다. 수많은 라우터들 사이에서 반복되는 DV 알고리즘은 절대로 수렴되지 않을 것이다. (확장) 또한 회사의 요구에 따라 외부로부터 네트워크 내부 조직을 숨기고 싶을 수 있다. 이상적으로는 네트워크가 '외부'네트워크에 연결될 수 있으며 회사는 자신이 원하는 대로 네트워크를 운영/관리할 수 있어야 한다. (관리 자치권)
위의 문제는 AS(autonomous system) 자치시스템 으로 집합화하여 해결할 수 있다.
1. 인트라-AS 라우팅 -RIP(DV), OSPF(LS)
interior gateway protocol(IGP)라고도 불린다.
위의 그림의 파란색, 즉 같은 AS 내부에서는 같은 알고리즘을 쓴다. 이처럼 AS 내부에서 동작하는 라우팅 알고리즘을 intra-AS 라고 한다.
또한 한 AS에서 외부 목적지 AS에 패킷을 전달하는 라우터를 게이트웨이 라우터(gateway router)라고 한다. 위의 그림에서 3a, 1c, 1b, 2a 라우터가 gateway 라우터이다.
OSPF를 같이 살펴보자! open은 공적으로 사용 가능함을 의미하고 LS(다익스트라) 알고리즘을 사용한다. OSPF로 라우터는 전체 AS의 완벽한 토폴로지 그림(방향 그래프)을 얻을 수 있다. 라우터는 자신을 루트 노드로 간주하고 모든 서브넷에 이르는 최단경로 트리를 결정하기 위해 다익스트라를 이용하는 것이다.
OSPF에서 라우터는 AS에서 인접한 라우터뿐만 아니라 다른 모든 라우터에게 라우팅 정보를 브로드캐스트한다. 또한 링크 상태가 변경될 때마다 / 심지어 링크 상태가 변경되지 않았더라도 30분씩 정기적으로 링크 상태 정보를 브로드캐스트한다.
위는 OSPF의 구조이다. 계층적이다!
OSPF의 유형은 다음과 같다.
- 내부 라우터: 백본이 아닌 영역에 있는 라우터로, intra-AS 라우팅만을 수행한다.
- 영역 경계 라우터: 영역과 백본에 속하는 라우터이다.
- 백본 라우터(비경계 라우터) : 백본 내에서 라우팅을 수행하지만, 영역 경계 라우터는 아니다.백본 영역이 아닌 곳에서 내부 라우터는 백본 라우터가 주는 영역에 대한 정보 브로드캐스트를 통해 다른 영역으로의 경로가 있음을 알게 된다.
- 경계 라우터 : 다른 AS에 속한 라우터들과 라우팅 정보를 교환한다. (BGP)
2. BGP(인터-AS 라우팅)
그럼 이번에는 위의 그림에서 AS1에서 AS2로, 그리고 AS1에서 AS3로 나가는, 즉 내부에서 외부로의 패킷을 보낼 때에는 어떻게 보내야하는 것일까? 이것은 inter-AS 라우팅을 사용해야 한다. 실제로 인터넷에서 모든 AS는 같은 인터-AS 라우팅 프로토콜을 사용한다.
BGP가 각 AS에게 제공하는 방법은 아래와 같다.
- 이웃 AS들로부터 서브넷 도달성 정보를 얻는다.
- AS 내부의 모든 라우터에게 도달성 정보를 전파한다.
- 도달성 정보와 AS 정책에 근거하여 서브넷으로의 '좋은' 경로를 결정한다.
서브넷 이야기가 많은데, BGP가 없다면 각 서브넷은 고립될 수 있다. 왜냐하면 BGP는 각 서브넷으로 하여금 외부 네트워크에게 자신의 존재를 광고하도록 하기 때문이다!
(외부) eBGP VS (내부) iBGP
오른쪽 사진에서 살펴보자.
BGP에서 목적지는 호스트가 아닌 CIDR된 prefix이다. 각 prefix는 서브넷이나 서브넷의 집합을 나타낸다. 예를 들어 AS2에 접속된 네 개의 서브넷이 있다면 AS2는 이 네 개의 서브넷에 대해 프리픽스를 합하고, BGP를 사용하여 AS1에게 하나의 프리픽스를 광고한다.
그럼 어떻게 BGP가 프리픽스 도달성 정보를 분배할까? 예상하듯, 게이트웨이 라우터 3a와 1c 사이의 eBGP 세션을 사용하여 AS3은 AS1에게 A3으로부터 도달 가능한 프리픽스의 목록을 보낸다. 그리고 AS1은 AS3에게 AS1으로부터 도달 가능한 프리픽스의 목록을 보낸다. 그러면 받은 이는 자신의 iBGP 세션을 사용하여 그 프리픽스를 자신의 AS 내부의 다른 모든 라우터에게 분배한다. 그러면 다른 라우터들도 프리픽스를 배우게 된다!
eBGP
|
AS와 AS 간의 BGP 라우팅 정보를 교환하기 위해 사용, 두 AS를 연결하는 구간을 eBGP 또는 DMZ 구간이라고 함
전송되는 데이터의 TTL의 Default 값은 1 (경로 1개 이동 시 삭제됨)
eBGP로부터 학습한 새 경로는 모든 피어에 다시 알려진다.
|
iBGP
|
AS 내부에서 BGP 라우팅 정보를 교환하기 위해 사용
전송되는 데이터의 TTL의 Default 값은 225
iBGP로부터 학습한 새 경로는 모든 게이트웨이 피어에만 다시 알려진다.
|
BGP의 속성 두가지
- AS-PATH
해당 네트워크까지 가는 경로 상에 있는 AS 주소들을 기록해 놓는 속성 - NEXT-HOP
AS-PATH를 시작하는 라우터 인터페이스(다른 AS로 가는 첫번째 inter-AS router)
3. Hot Potato Routing
핫 포테이토 라우팅에서 AS는 가능하면 빨리(저렴하게) 패킷(뜨거운 감자)을 없앤다. 현재 예에서 2d에서 동작하는 핫포테이토 라우팅은 1a와 2c로의 경로 비용을 결정하기 위해서 intra-AS 라우팅 프로토콜로부터의 정보를 사용하고, 최소비용의 경로를 선택한다.
4. BGP 라우팅 정책
상황을 우선 살펴보자. 그림에서 AS W,X,Y는 스텁 네트워크이고, A, B, C는 백본 제공자 네트워크이다.
스텁 네트워크에 들어있는 모든 트래픽은 네트워크를 향해 보내져야만 하고, 스텁 네트워크를 떠난 모든 트래픽은 네트워크 안에서 시작되어야 한다.
W와 Y는 한 개의 제공자에만 연결되어 있으나 X는 두 개의 제공자에 연결되어 있다 (다중 홉 스텁 네트워크)
이 라우팅 정책의 핵심은 '트래픽 운반의 책임을 지지 않는다'이다.
A는 Aw로의 경로를 B에게 광고하지만 B는 C에게 굳이 BAw로의 경로를 advertising할 필요가 없다.
X 또한 Y까지 가능 XCY라는 경로를 알고 있지만 B에게 그 사실을 알리지 않는다.
5. intra, inter-AS routing 프로토콜이 왜 다를까?
정책: AS 사이에서의 정책 문제를 달리 해야 하기 때문. 하나의 AS 안에서의 모든 것은 명시적으로 같은 관리자가 제어하므로 정책 문제가 그리 중요하지 않다.
확장성: 여러 개의 대형 네트워크에서 확장성 있는 라우팅을 다루는 라우팅 알고리즘과 데이터 구조는 inter-AS 라우팅에서 매우 중요한 문제이다.
성능: inter-AS 라우팅은 정책형 이므로 라우터의 질(성능)은 그리 중요하지 않다.
4. SDN
1. Match and Action
SDN의 핵심은 '논리적으로 중앙 집중된' 제어이다. 일반화된 일치와 행동(match-plus-action) 추상화를 통해 라우터는 기존에는 별도의 장치로 구현되었던 다양한 기능들(부하 분산, 방화벽 및 NAT)뿐만 아니라 전통적인 IP 포워딩을 수행할 수 있다.
마치 하나의 중앙 서비스 지점에 있는 것처럼 서비스에 집중한다는 의미이다!
2. SDN 구조의 네 가지 특징
- 플로우 기반 포워딩
SDN에서는 모든 네트워크 스위치들의 플로우 테이블 항목들을 계산하고 관리, 설치하는 일들이 SDN 제어 평면의 임무이다. SDN에서 제어되는 스위치들에서의 패킷 포워딩은 전송/네트워크/링크 계층 헤더의 어떤 값들을 기반으로도 이루어질 수 있다. - 데이터 평면과 제어 평면의 분리
데이터 평면은 네트워크 스위치들로 이루어지는데 이들은 자신들의 플로우 테이블 내용을 기반으로 '비교와 실행'을 수행한다. 제어 평면은 서버와 스위치들의 플로우 테이블을 결정/관리하는 소프트웨어로 이루어진다. - 네트워크 제어 기능이 데이터 평면 스위치 외부에 존재
전통적인 라우터들과는 달리 소프트웨어가 네트워크 스위치로부터 멀리 떨어진 별도의 서버에서 수행된다.
SDN 컨트롤러: 정확한 상태 정보(스위치, 호스트들의 상태)를 유지하고 이 정보를 네트워크 제어 응용들에 제공
응용: 하부 네트워크 장치들을 모니터하고 프로그램하고 제어까지 할 수 있도록 수단 제공 - 프로그램이 가능한 네트워크
제어 평면에서 수행중인 네트워크 제어 응용을 통해 네트워크를 프로그램 할 수 있다
1. 각 라우터들은 일반화된 "flow table" 포워딩을 가지고 있다.
2. 컨트롤러 플레인과 데이터 플레인의 분리
3. 컨트롤 플레인은 데이터 플레인의 스위치에게 기능을 보낸다.
4. 여러 응용들을 프로그램할 수 있다.
3. SDN의 3계층
1. network-control applications
------------네트워크 제어 응용들을 위한 인터페이스와 추상화(네트워크 그래프, Restful api, Intent) ----------------
2. SDN controller - 네트워크 상태 정보 관리(통계, 플로우 테이블, 링크 상태 정보, 호스트 정보, 스위치정보)
------------제어받는 장치들과의 통신 Openflow, SNMP ---------------------------
3. SDN-controlled switches
4. 오픈플로우(OpenFlow) 프로토콜
위에서 설명한 컨트롤러와 스위치 사이의 프로토콜이다.
컨트롤러->스위치로 가는 중요한 메시지들은 다음과 같다.
features(설정) : 컨트롤러가 스위치의 기능들과 응답에 대해 질의
configure(상태 읽기) : 컨트롤러가 스위치의 기본 파라미터 세팅
modify-state(상태 수정) : 컨트롤러가 스위치 플로우 테이블의 엔트리를 추가/제거 또는 수정하거나 스위치 포트의 특성을 설정하기 위해 사용
packet-out(패킷 전송) : 컨트롤러가 제어하는 스위치의 지정된 포트에서 특정 패킷을 내보내기 위해 사용
스위치->컨트롤러로 가는 중요한 메시지들은 다음과 같다.
flow-removed(플로우 제거) : 컨트롤러에게 어떤 플로우 테이블 엔트리가 시간이 만료되었거나 상태 수정 메시지를 수신한 결과로 삭제되었음을 알린다.
packet-in(패킷 전달): 패킷을 컨트롤러에 보낸다.
port-status(포트 상태): 포트의 상태변화 알린다.
4. SDN 컨트롤러 시나리오
'CS > 네트워크' 카테고리의 다른 글
[Network] 패킷 이동 경로 파헤치기 (2) | 2024.02.19 |
---|---|
[네트워크] Link Layer, Lans (0) | 2023.06.20 |
[네트워크] Network Layer : 데이터 평면 (0) | 2023.06.13 |
[네트워크] 혼잡 제어 (0) | 2023.04.23 |
[네트워크] 트랜스포트 계층 - 신뢰적인 데이터 전송 (RDT) (0) | 2023.04.22 |