본문 바로가기

network

[컴퓨터 네트워킹] 5장 네트워크 계층 : 제어 평면

5장 네트워크 계층 : 제어 평면

 

5.1 개요

포워딩 테이블 or 플로우 테이블 생성하는 방법

1. 라우터별 제어

모든 라우터 각각에서 라우팅 알고리즘이 동작하여 테이블을 제작

 

2. 논리적으로 중앙 집중된 제어

논리적으로 집중된 컨트롤러가 테이블을 작성

 

5.2 라우팅 알고리즘
라우팅 알고리즘 분류 기준 1

중앙 집중형 라우팅 알고리즘 - 링크 상태 (link-state, LS) 알고리즘 

논리적으로 중앙 집중된 제어를 하는 경우에 사용하는 알고리즘으로 연결과 링크 비용에 대한 완전한 정보를 가지는 알고리즘

 

분산 라우팅 알고리즘 - 거리 벡터 (distance-vector, DV)

최소 비용 경로의 계산이 라우터들에 의해 반복적이고 분산된 방식으로 수행된다. 거리 벡터 (distance-vector, DV) 알고리즘이 이에 해당된다.

 

라우팅 알고리즘 분류 기준 2

정적 라우팅 알고리즘 (static routing algorithm)

경로의 변화가 매우 적게 일어나는 경우이며 종종 사람이 개입(링크 비용을 수정)한 결과로 발생한다.

 

동적 라우팅 알고리즘 (dynamic routing algorithm)

네트워크 트래픽 부하나 토폴로지 변화에 따라 라우팅 경로를 바꾸는 알고리즘으로 네트워크 변화에 더 빠르게 대응할 수 있다. 하지만 경로의 루프나 경로 진동과 같은 문제에 취약하다.

 

라우팅 알고리즘 분류 기준 3

부하에 민감한 알고리즘

부하에 민감하지 않은 알고리즘

 

+토폴로지란?

컴퓨터 네트워크의 요소들(링크, 노드 등)을 물리적으로 연결해 놓은 것

 

5.2.1 링크 상태(LS) 라우팅 알고리즘

- 네트워크 토폴로지와 모든 링크 비용이 알려져 있음

 

출발지 노드 u를 위한 상태 알고리즘

Initialization
	N' = {u}
    for all node v
    	if v is a neighbor of u
        	then D(v) = c(u, v)
        else D(v) = infinity

Loop
    find w not in N' such that D(w) is a minium
    N'집합에 포함되지 않은 노드 중에서 D(w) 값이 최소인 것을 찾는다.
    add w to N'
    update D(v) for each neighbor c of w and not in N':
    	D(v) = min(D(v), D(w) + c(w, v))
until N' = N

계산 복잡도 - O(n^2) or 개선시 O(nlgn)

진동문제에 취약

 

5.2.2 거리 벡터 (Distance-Vector, DV) 라우팅 알고리즘

벨만-포드 식

Dx(y) = minv{ c(x, v) + Dv(y) }

노드 x부터 y까지 최소 비용 경로의 비용은 두 노드 경로 사이의 노드 v가 존재할 때 위의 식이 성립한다.

 

거리벡터(DV) 알고리즘

->각 노드 x에서

Initailiaztion
	for all destinations y in N:
    	Dx(y) = c(x, y) /* if y is not a neighbor then c(x, y) = infinity */
        for each neighbor w
        Dw(y) = ? for all destinations y in N
        for each neighbor w
        send distance vector Dx = [Dx(y) : y in N] to w
        
Loop
	wait (until i see a link cost change to some neighbor w or
    	  until i receive a distance vector form some neighbor w)
    for each y in N:
    	Dx(y) = minv{ c(x, v) + Dv(y) }
        
if Dx(y)  changed for any destination y
	send distance vector Dx = [Dx(y) : y in N] to all neighbors

forever

노드가 관리하는 라우팅 정보

- 각 이웃 노드 v 중에서 x에 직접 접속된 이웃 노드까지의 비용 c(x, y)

- 노드 x의 거리 벡터, 즉 x로부터 N에 있는 모든 목적지  y로의 비용 예측값을 포함하는 벡터 Dx = [Dx(y): y in N]

- 이웃 노드들의 거리 벡터들, 즉 v가 x의 이웃이라고 하면 Dv = [Dv(y): y in N]

 

거리 벡터(DV) 알고리즘: 링크 비용 변경과 링크 고장

링크 비용 감소 시

-> 링크 비용 감소 소식이 신속하게 네트워크 상에서 전파

링크 비용 증가 시

-> 라우팅 루프 발생

-> 링크 비용 증가 소식이 느리게 네트워크 상에서 전파

 

거리 벡터 알고리즘: 포이즌 리버스 추가

포이즌 리버스

만약 z가 y를 통해서 목적지 x로 가는 경로 설정을 했다면 z는 y에게 x까지의 거리가 무한대라고 알림으로서

무한 계수 문제를 예방하는 방법

-> 세 개 이상의 노드를 포함한 루프는 포이즌 리버스로는 감지할 수 없는 한계점이 있음

 

5.3 인터넷에서의 AS 내부 라우팅: OSPF && 5.4 인터넷 서비스 제공업자(ISP) 간의 라우팅 : BGP

AS (autonomous system, 자율 시스템) : 동일한 관리 제어하에 있는 라우터 그룹

 

AS 필요한 이유

1. 확정 : 인터넷의 수 많은 라우터들의 정보를 저장하는 경우 막대하 양의 메모리가 필요하며 모든 라우터 사이에서 연결 상태와 링크 비용을 브로드캐스팅 하기 위해 필요한 오버헤드는 막대하다. 따라서 라우터를 그룹화하여 경로 계산의 복잡성을 완화시킴

 

2. 관리 차지 : ISP는 일반적으로 자신의 네트워크를 원하는대로 운용하거나, 네트워크 내부 구성을 외부에 감추기를 원한다. AS를 사용한다면 내부 시스템의 운용 규칙을 관리자가 관리할 수 있으며 외부의 네트워크에는 AS 내부 구조를 감추는 효과를 가져올 수 있다.

 

AS 라우팅 프로토콜

1. AS 내부 라우팅 프로토콜

- 자율 시스템 내부의 라우터끼리 동작하는 프로토콜

- 개방형 최단 경로 우선 프로토콜 (Open Shorest Path First, OSPF)

= 링크 상태 정보를 플러딩하고 다익스트라 최소 비용 경로 알고리즘을 사용하는 링크 상태 알고리즘

* OSPF 개선 사항

a. 보안 : 인증(MD5 or 단순 인증)을 통해 신뢰할 수 있는 라우터들만이 AS내부의 OSPF 프로토콜에 참여할 수 있고, 악의적인 침입자가 잘못된 정보를 라우터 테이블에 삽입하는 것을 막게 된다.

b. 복수 동일 비용 경로 : 하나의 목적지에 대해 동일한 비용을 가진 여러 개의 경로가 존재할 때 OSPF는 여러 개의 경로를 사용할 수 있도록 한다.

c. 유니캐스트와 멀티캐스트 라우팅의 통합 지원

d. 단일 AS 내에서의 계층 지원 : OSPF의 자율 시스템은 계층적인 영역으로 구성될 수 있다. 

 

2. AS 외부 라우팅 프로토콜 (inter-autonomous system routing protocol)

- AS 간 라우팅 프로토콜은 여러 AS간의 협력이 수반되므로 통신하는  AS들은 같은 AS 간 라우팅 프로토콜을 수행해야만 한다. 이때 사용되는 프로토콜이 (Border Gateway Protocol, BGP)이다.

 

5.4.1 BGP의 역할

BGP에서는 패킷이 특정한 목적지 주소를 향해서가 아니라 CIDR형식으로 표현된, 주소의 앞쪽 접두부(prefix)를 향해 포워딩한다. 각 접두부는 서브넷이나 서브넷의 집합을 나타낸다.

 

BGP가 라우터에게 제공하는 것

1. 이웃 AS로부터 도달 가능한 서브넷 접두부 정보를 얻는다.

2. 서브넷 주소 접두부로의 "가장 좋은" 경로를 결정한다.

 

5.4.2 BGP 경로 정보 알리기

BGP 연결은 외부 BGP 연결(eBGP)과 내부 BGP 연결(iBGP)로 이루어져 있다. eBGP 연결은 두 개의 AS에 걸친 연결을 뜻하며, iBGP는 같은 AS 내의 라우터 간의 연결을 뜻한다. 특정 라우터의 도달 가능정 정보를 전파하기위해서 이 두개의 연결이 모두 사용된다.

 

5.4.3 최고의 경로 결정

뜨거운 감자 라우팅 (Hot Potato Routing)

목적지까지의 경로 중 자신의 AS 바깥에 있는 부분에 대한 비용은 신경쓰지 않고 최대한 신속하게 (가능한 한 최소의 비용으로) 패킷을 자신의 AS 밖으로 내보내는 것

 

경로 선택 알고리즘

뜨거운 감자 라우팅 기법이 사용되지만 좀 더 이타적인 알고리즘 방법이다. 다음 규칙을 따르며 적은 번호의 규칙일 수록 우선순위가 높다.

 

- 규칙

1. 속성 중의 하나로서 지역 선호도가 경로에 할당된다. 한 경로의 지역 선호도는 라우터에 의해 설정되었거나 같은 AS내부의 다른 라우터로부터 학습된 것이다. 지역 선호도의 값은 온전히 AS 네트워크 관리자에 의한 정책적인 결정이다. 가장 높은 지역 선호값을 가진 경로가 선택된다.

 

2. 최단 AS-PATH를 가진 경로가 선택된다.

 

3. 남은 경로들에 대해 뜨거운감자 라우팅을 수행한다. 

 

4. 만일 아직도 하나보다 많은 경로가 남아 있다면 라우터는 BGP 식별자를 사용하여 경로를 선택한다.

 

5.4.4 IP 애니캐스트(anycast)

서버들에게 동일한 IP주소를 할당하여 주소를 알려 BGP 경로 선택 알고리즘에 의해서 가장 가까운 지역의 서버를 선택하여 통신을 하게 만드는 방법을 통해서 anycast를 구현한다.

 

5.4.5 라우팅 정책

AS 라우팅 정책은 최단 AS-PATH나 뜨거운 감자 라우팅 같은 다른 모든 고려사항보다 우선시된다.

 

5.5 소프트웨어 정의 네트워크(SDN) 제어평면

sdn 구성요소

SDN 구조의 특징

1. 플로우 기반 포워딩 : SDN으로 제어되는 스위치들에서의 패킷 포워딩은 전송 계층, 네트워크 계층, 또는 링크 계층 헤더의 어떤 값들을 기반으로도 이루어질 수 있다.

<-> IP 데이터그램의 포워딩이 온전히 목적지 주소만으로 이뤄지는 전통적 라우터 기반과는 매우 대조적

 

2. 데이터 평면과 제어 평면의 분리 : 데이터 평면은 네트워크 스위치로 구성. 이들은 자신의 플로우 테이블의 내용을 기반으로 비교와 실행을 수행. 제어 평면은 서버와 스위치의 플로우 테이블을 결정, 관리하는 소프트웨어로 이뤄진다.

 

3. 네트워크 제어기능이 데이터 평면 스위치 외부에 존재

 

4. 프로그램이 가능한 네트워크 : 제어 평면에서 수행중인 네트워크 제어 응용을 통해 네트워크를 프로그램 할 수 있다.

 

SDN의 네트워크 기능들의 획기적인 "분리"를 의미

 

5.5.1 SDN 제어 평면: SDN 컨트롤러와 SDN 네트워크 제어 응용들

SDN 제어 평면은 크게 SDN 컨트롤러와 SDN 네트워크 제어 응용들이라는 두 가지 구성요소로 나뉜다.

- 컨트롤러 구성

1. 통신 계층 : SDN 컨트롤러와 제어받는 네트워크 장치들 사이의 통신

컨트롤러와 장치들 사이에 정보를 전달하는 프로토콜

사우스바운드(south bound)라는 컨트롤러 인터페이스(API)를 넘나든다.

관찰한 이벤트들을 컨트롤러에 알리는 기능

 

2. 네트워크 전역 상태 관리 계층 : SDN 제어 평면의 궁극적인 제어 결정

제어 장치들의 플로우 테이블을 결정

 

3. 네트워크 제어 응용 계층과의 인터페이스 : 컨트롤러와 네트워크 제어 응용들과의 상호작용 노스바운드(north bound)라는 인터페이스를 통해 네트워크 제어 응용들이 네트워크 상태 정보와 플로우 테이블을 읽도록 한다.

 

=> 논리적으로는 중앙 집중화된 것으로 보이지만, 실제로는 분산된 서버의 집합으로 구현된다.

 

5.5.2 오픈 플로우(OpenFlow) 프로토콜

오픈플로우 프로토콜이란?

통신계층에서 동작하는 프로토콜로서 컨트롤러와 스위치(혹인 오픈플로우 API를 구현한 다른 장치)와의 사이에서 동작하며 tcp 상에서 포트번호 6653번 사용한다.

 

오픈플로우에서 자주 사용되는 메시지

- 컨트롤러 -----> 스위치 로 전달되는 메시지

설정 : 스위치의 설정 파라미터를 문의하거나 설정

상태 수정 : 스위치 플로우 테이블의 엔트리를 추가, 제어, 수정하거나 스위치 포트의 특성을 설정

상태 읽기 : 스위치 플로우 테이블의 포트로부터 통계 정보와 카운터값을 요청

패킷 전송 : 스위치의 지정된 포트에서 특정 패킷을 내보내기 위해 사용

 

- 스위치 -----> 컨트롤러로 전달되는 메시지

플로우 제거 : 어떤 플로우 테이블 엔트리가 시간이 만료되었거나, 상태 수정 메시지에 대한 결과로 삭제됨을 알림

포트 상태 : 포트의 상태 변화를 알리기 위해 사용

패킷 전달 : 플로우 테이브의 어떤 엔트리와도 일치하지 않은 패킷이나, 작업을 위해 컨트롤러로 패킷을 전달

 

5.5.3 데이터 평면과 제어 평면의 상호작용 : 예제

라우터별 제어 시나리오는 두 가지 차이점을 가진다.

1. 다익스트라 알고리즘이 패킷 스위치 외부에서 별도의 어플리케이션으로 실행

2. 링크 업데이트 정보를 서로 간이 아닌 SDN 컨트롤러에게 전송한다.

위의 예시에서 s1, s2 사이의 링크가 단절되어 플로우 테이블을 수정해야 하는 상황이다.

 

1. 링크 단절을 감지한 s1이 오픈 플로우의 포트 상태 메시지를 통해 SDN 컨트롤러에 링크 상태 변화를 알린다.

 

2. SDN 컨트롤러는 링크 상태 관리자에게 알려 링크 상태 데이터베이스를 갱신한다.

 

3. 다익스트라 링크 상태 라우터를 당당하는 네트워크 제어 응용은 링크 상태 변화가 있을 경우 알려받도록 이전에 등록해두었다. 이 용은 링크 상태의 변화를 알게 된다.

 

4. 링크 상태 라우팅 응용이 링크 상태 관리자와 접촉해 갱신된 링크 상태를 가져와 새로운 최소 비용 경로를 계산한다.

 

5. 링크 상태 라우팅 응용은 갱신되어야 할 플로우 테이블을 결정하는 플로우 테이블 관리자와 접촉한다.

 

6. 컨트롤러의 플로우 테이블 관리자가 오픈플로우 프로토콜을 사용해 링크 상태 변화에 영향을 받는 스위치들의 플로우 테이블을 갱신한다.

 

5.6 인터넷 제어 메시지 프로토콜 (ICMP)

인터넷 제어 메시지 프로토콜 (Internet Contro, Message Protocol) 이란?

호스트와 라우터가 서로 간에 네트워크 계층 정보를 주고받기 위해 사용되는 프로토콜로써 가장 전형적인 사용 형태로 오류 보고가 있다.

 

TCP나 UDP 세그먼트가 IP 페이로드로 전송된느 것처럼 ICMP 메시지도 IP 페이로드에 전송된다.

 

ICMP 메시지에는 타입과 코드 필드가 있고, ICMP 메시지가 처음 생성되도록 한 IP 데이터그램의 헤더와 첫 8바이트를 가진다. (송신자가 오류를 발생시킨 패킷을 식별 할 수 있도록 하기 위해서)

 

ICMP message type & code example

5.7 네트워크 관리와 SNMP

"네트워크 관리는 적정한 비용으로 실시간, 운용성능, 서비스 품질 등의 요구사항을 만족시키기 위하여 네트워크와 구성요소 자원들을 감시, 테스트, 폴링, 설정, 분석, 평가, 제어하는 하드웨어, 소프트웨어, 인간요소 등을 베치하고, 통합, 조정하는 것이다."

5.7.1 네트워크 관리 프레임워크

- 관리 서버 (managing server) : 일반적으로 사람과 상호 작용하며 네트워크 관리 정보와 수집, 처리, 분석, 게시를 제어하는 관리 활동을 수행하며 일어나는 장소이다.

 

- 피관리 장치 (managed device) : 관리 대상 네트워크에 존재하는 네트워크 장비(소프트웨어 포함)이다. 피관리 장치 내부에는 소위 피관리 객체 (managed object)라고 불리는 것들이다. 있다. 피관리 객체는 피관리 장치 내부의 실제 하드웨어 일부, 그리고 이러한 하드웨어와 소프트웨어 요소에 대한 설정 매개변수들이다.

 

- MIB (Management Information Base) : 피관리 장치 내의 피관리 객체들에 관련된 정보를 저장한 장소

 

- 네트워크 관리 에이전트 (network management agent) : 관리 서버와 통신하면서 관리 서버의 명령과 제어에 따라 피관리 장치에 국지적인(한정적인) 행동을 취하는, 피관리 장치 상의 프로세스

 

- 네트워크 관리 프로토콜 (network management protocol) : 관리 서버와 피관리 장치들 사이에서 동작하면서 관리 서버가 피관리 장치의 상태에 대해 질의하고 에이전트를 통새 간접적으로 피관리 장치에 행동을 취할 수 있도록 해주는 역할을 수행한다.

 

5.7.2 Simple Network Management Protocol, SNMP

관리 서버와 그 관리 서버를 대표하여 실행되고 있는 에이전트 사이에서 네트워크 관리 제어 및 정보 메시지를 전달하기 위해 사용된다.

 

SNMP 사용 CASE

1. 요청 응답 모드 (requeset - response mode)

SNMP 관리 서버는 에이전트에게 요청을 송신하고 이를 받은 SNMP 에이전트는 이를 수행한 후 요청에 대한 응답을 보낸다. 일반적으로 요청은 피관리 장치와 관련된 MIB 객체 값들을 질의(검색) 또는 수정하기 위해 이용된다.

 

2. Trap Message

에이전트가 요구받지 않았더라도 트랩 메시지라는 이름의 메시지를 관리 서버에게 전송하는 것이다. 트랩 메시지들은 관리 서버들에게 MIB 객체 값들의 변화시킨 예외 상황의 발생을 통지하기 위해 이용