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

Jnary·2022년 11월 23일
1

Computer Network

목록 보기
5/9
post-thumbnail
  • 제어 평면(control plane) : 네트워크 전체를 아우르는 구성요소로서, 데이터그램이 출발지 호스트부터 목적지 호스트까지의 경로를 따라 어떻게 전달되어야 하는지뿐만 아니라 네트워크 계층 구성요소와 서비스를 어떻게 설정하고 관리할 지도 제어한다.

5.1 개요

  • 그래프에서 최소 비용 경로를 계산하기 위한 전통적인 라우팅 알고리즘
  • 두 가지 인터넷 라우팅 프로토콜
    - OSPF : 단일 ISP 네트워크 내에서 동작하는 라우팅 프로토콜
    - BGP : 인터넷의 모든 네트워크를 상호연결하는 역할을 하는 라우팅 프로토콜
  • SDN : 데이터 평면과 제어 평면을 명확히 분리, 제어 평면 기능을 자신이 관리하는 라우터의 전달 기능 요소와 분리된 별도의 원격 '컨트롤러'서비스에 구현
  • IP 네트워크 관리의 기본 요소 : ICMP, SNMP
  • 포워딩 테이블이나 플로우 테이블이 생성, 유지, 설치되는 방법
    - 라우터별 제어 : 라우팅 알고리즘이 라우터 각각에서 동작하는 경우 (OSPF, BGP) - 논리적 중앙 집중형 제어 : 컨트롤러가 개별 라우터에게 배포한 경우 (일반화된 매치 플러스 액션 추상화)
    컨트롤러 : 잘 정의된 프로토콜을 통해 각 라우터의 제어 에이전트(CA)와 상호작용하여 라우터의 플로우 테이블을 구성하고 관리함.
    CA : 컨트롤러와 통신, 컨트롤러의 명령을 수행하는 최소한의 기능
    라우팅 알고리즘과 달리 CA는 서로 직접 상호작용X, 포워딩 테이블 계산에 적극 참여 X

5.2 라우팅 알고리즘

  • 목적 : 네트워크의 라우터를 통해서, 송신 호스트에서 수신 호스트까지의 "좋은" 경로를 결정하는 것
    - "좋은" : 최소 비용, 빠른 속도, 최소
  • G = (N, E)
    - Node : 네트워크의 라우터
    - Edge : 링크
    - C(a,b) : a와 b의 연결된 직접적인 링크의 비용
    - C = ∞ : 직접적인 링크가 존재X
    - 네트워크 관리자가 정의하는 비용 : 항상 1로 설정 or 대역폭과 반비례 관계 or 혼잡과 반비례 관계일 수 있다.

[라우팅 알고리즘 분류]

  • global
    - 모든 라우터들이 완벽한 topology를 가짐 -> 모두의 가진 정보가 동일
    - 정보가 모두 브로드캐스팅
    - "link state" 알고리즘 : 네트워크 전체 정보를 이용
  • decentralized
    - 자신의 정보를 가장 가까이에 있는 곳에만 뿌려서 이웃을 통해 다음으로 넘어가게끔 만드는 알고리즘.
    - "distance vector" 알고리즘 : 반복적, 비동기적, 분산적
  • state
    - 라우터가 천천히 변한다.
  • dynamic
    - 라우터가 빠르게 변한다.
    - 주기적 업데이트, 링크 비용 변경에 대한 응답
    - 라우팅 프로토콜 돌렸을 때 자동으로 테이블이 생성

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

  • 중앙 집중형 라우팅 알고리즘
    - 초기화 단계와 반복 부분으로 구성
    - 노드의 개수만큼 반복
    - 네트워크 토폴로지, 모든 노드에 알려진 링크 비용
    - 링크 상태 브로드 캐스트를 통해 달성.
    - 모든 노드가 동일한 정보를 가짐.
  • 다익스트라 알고리즘
    - 하나의 노드에서 네트워크 내 다른 모든 노드로의 최소 비용 경로를 계산
    - D(v) : 알고리즘의 현재 반복 시점에서 출발지 노드부터 목적지 v까지의 최소 비용 경로의 비용
    - p(v) : 출발지에서 v까지의 현재 최소 비용 경로에서 v의 직전 노드
    - N' : 노드의 집합. 출발지에서 v까지의 최소 비용 경로가 명확히 알려져 있다면, v는 N'에 포함.
  • 다익스트라 알고리즘 스도코드
  • 다익스트라 알고리즘 Example
  • 다익스트라 알고리즘 한계
    - 시간 복잡도 : O(n^2)
    - 진동(oscillation) 문제 : 교통량에 따라 링크 비용 변화하는 경우 경로 변동 가능성

5.2.2 거리 벡터(DV) 라우팅 알고리즘

[거리 벡터 알고리즘 특징]

  • 분산적 : 각 노드는 하나 이상의 직접 연결된 이웃으로부터 정보르르 받고 계산을 수행하여 계산된 결과를 다시 그 이웃들에게 배포한다.
  • 반복적 : 이웃끼리 더 이상 정보를 교환하지 않을 때까지 프로세스가 지속된다. (자기 종료)
  • 비동기적 : 톱니바퀴 돌듯이 모든 노드가 서로 정확히 맞물려 동작할 필요가 없다.

[벨만-포드 Bellman-Ford 알고리즘]

  • dx(y) : 노드 x부터 y까지 최소 비용 경로의 비용
  • 이웃간 통신의 형식을 제안.
    - 각 노드는 이웃으로부터의 갱신을 기다림.
    - 업데이트를 수신하면 새로 거리 벡터를 계산.
    - 거리 벡터가 갱신될 경우 이웃 노드에 전파
  • Example

[링크 비용 변경과 링크 고장]

  • 링크 비용 변경 - 자신의 거리 벡터 갱신 후 변화가 있는 경우 이웃에게 새로운 거리 벡터를 전송
    - 비용이 안 좋게 변경될 경우 문제가 발생.
    - Dy(x) = min{60 + 0, 1 + 5} = 6 <Error!>
    - 라우팅 루프 : x로 가기 위해, y는 z로 경로 설정을 하고, z는 y로 경로 설정을 하는 것
    - 무한 계수 문제 (count-to-infinity problem)
  • 포이즌 리버스
    - 라우팅 루프 방지
    - z가 y를 통해 x로 가는 경로 설정을 했을 때, z는 y에게 Dz(x) = ∞ 이라고 알리는 방법. (선의의 거짓말)
    - 직접 이웃한 노드가 3개 이상인 무한 계수 문제는 해결X

[LS와 DV 알고리즘 비교]

  • 메시지 복잡도
    - LS : n개의 라우터, O(n^2)의 메시지
    - DV : 이웃 간의 교환, 수렴 시간 다양
  • 수렴 속도
    - LS : O(n^2) 메시지, 진동 있을 수 있음.
    - DV : 라우팅 루프 있을 수 있음 (무한대 계수 문제)
  • 견고성 : 잘못된 비용을 알려줬을 때 얼마나 큰 영향을 미치니?
    - LS : 각 라우터는 자신의 테이블만 계산
    - DV : 블랙홀링. 네트워크를 통해 오류 전파. 한 노드의 잘못된 계산은 전체로 확산될 수 있다. 취약함.

5.3 인터넷에서의 AS 내부 라우팅: OSPF

  • 네트워크 : 단순히 상호연결된 라우터의 집합
    - 라우터끼리 구별 X
    - 동일한 라우팅 알고리즘을 수행하는 동종의 라우터 집합으로 간주
    -> 지나치게 단순한 관점

[자율 시스템 AS]

  • 라우터들을 AS로 조직화하여 확장, 관리 자율성의 문제를 해결
  • 동일한 관리 제어하에 있는 라우터의 그룹으로 구성
  • AS는 전 세계적으로 고유한 AS번호로 식별
    - ICANN의 지역 등록 기관에 의해 할당됨.
  • 다른 말로는 "도메인"
  • 종류
    1) intra-AS
    - 같은 AS 내에서의 라우팅
    - 같은 AS 내에 있는 라우터들은 동일한 라우팅 알고리즘 사용
    - 상대의 정보 알 수 있음
    - gateway router : AS의 엣지에서 다른 AS로 라우팅하기 위한 링크를 가짐
    - 내부 목적지 서비스
    2) inter-AS
    - 다른 AS 간의 라우팅
    - gateway router는 1), 2) 모두 수행해야함.
    - 외부 목적지 서비스

[intra-AS 라우팅 프로토콜]

  • RIP : Routing Informaion Protocol
    - classic DV
    - 더이상 사용 X
  • EIGRP : Enhanced Interior Gateway Routing Protocol
    - DV based
    - CISCO 전용 라우팅 프로토콜
  • OSPF : Open Shortest Path First [RFC 2328]
    - link-state 라우팅
    - IS-IS 프로토콜 : OSPF와 같지만 ISO 표준 프로토콜

[OSFP 개방형 최단 경로 우선 프로토콜]

  • AS 내부 라우팅 프로토콜
  • open : 퍼블릭하게 사용가능
  • link-state 기반 프로토콜
    - TCP/UDP 사용하지 않고 IP에 직접적으로 쌓여서 지나감
    - 대역폭, 딜레이가 얼만지 고려해서 비용 결정
    - 전체 topology 가지고 있어야함
    - 포워딩 테이블 계산을 위해 다익스트라 알고리즘 사용
  • 보안
    - LS의 견고성
  • Hierarchical OSPF - 두 가지 계층 구조 : local area, backbone
    - backbone : local area의 경계에 있는 것들
    - local area나 backbone 내에서만 브로드캐스트
    - area border routers : 지역 경계, 최종값을 가지고 있음. 정보 주고 받음.
    - local area에서 포워딩된 정보를 border를 통해 외부로

5.4 인터넷 서비스 제공업자(ISP)간의 라우팅: BGP

  • BGP : Border Gateway Protocol
    - inter-AS 라우팅 프로토콜
    - 서로 다른 인터넷을 붙여주는 접착제
    - 인터넷에 있는 수천 개의 ISP들을 연결하는 프로토콜⭐️
    - 분산형 비동기식 프로토콜
    - TCP 연결이 되어야 동작함.

5.4.1 BGP의 역할

  • BGP는 목적지 주소가 아닌, CIDR형식으로 표현된 주소의 프리픽스를 향해 전달된다.
  • (x, I) 형식의 엔트리
    - x : 주소 프리픽스
    - I : 라우터 인터페이스의 인터페이스 번호

[역할]
1. 이웃 AS를 통해 도달 가능한 서브넷 프리픽스 정보를 얻는다.
- 서브넷의 존재를 알림.
2. 서브넷 주소 프리픽스로의 가장 좋은 경로를 결정한다.
- 경로 결정 프로시저

5.4.2 BGP 경로 정보 알리기

[AS에서의 라우터]

  • 게이트웨이 라우터 (ex. 1c)
    - AS 경계에 있는 라우터
    - 다른 AS들에 있는 여러 개의 라우터와 직접 연결된다.
  • 내부 라우터 (ex. 1a, 1b, 1d)
    - 자신의 AS 내에 있는 호스트 및 라우터와만 연결된다.

[BGP 연결]

  • eBGP (external BGP)
    - 2개의 AS를 연결
    - 인접 AS로부터 서브넷 도달 가능성 정보 획득
  • iBGP (internal BGP)
    - 같은 AS 내의 라우터 간 연결
    - 모든 AS 내부 라우터에 도달 가능성 정보 전파

5.4.3 최고의 경로 결정

  • BGP advertisement 브로드캐스트 : 정보 패스로 전달

[BFP advertised route : prefix + attributes]

  • prefix
    - 브로드캐스트 중인 목적지
  • attributes
    - AS-PATH : 프리픽스 advertisement가 통과한 AS 목록
    경로가 여러 개인 경우 정책 기반으로 결정
    - NEXT-HOP : 특정 내부 AS 라우터를 다음 홉 AS로 지시

[BGP messages]

  • OPEN : 원격의 BGP peer와 TCP 연결을 맺고 인증 과정을 거침
  • UPDATE : 새로운 경로 정보 주고 받음.
  • KEEPALIVE : 오랫동안 UPDATE 메세지가 없으면 아직도 살아있다는 정보를 주고 받음.
  • NOTIFICATION : 에러 보고

[뜨거운 감자 라우팅 Hot potato routing]

  • 2d가 외부로 라우팅하고 싶을 때 둘 중 어느 경로로 보낼까?- 최단 경로 우선! 2a, 2c 중 2a로 보낸다.
    - 직접 붙은 두개의 경로 중 짧은 것 선택

5.4.4 IP 애니캐스트

5.4.5 라우팅 정책

[라우팅 정책 중요도 차이]

  • inter-AS
    - 관리자는 트래픽이 라우팅되는 방식, 네트워크를 통해 라우팅 되는 사용자에 대한 제어를 원함.
    - 경로를 결정하는 데 기반이 되는 정책이 중요해짐.
  • intra-AS
    - 단일 관리자
    - 정책이 중요X, 최소비용이 최우선.

[라우팅을 선택적으로 광고하는 기준]

  • 선택적 광고 - B는 C에게 'A, w'의 정보를 전달하지 않는다. (효율적 측면)
  1. 로컬 기본 설정 값 속성 : 정책 결정
  2. 가장 짧은 AS-PATH
  3. 가장 가까운 NEXT-HOP 라우터 : 뜨거운 감자 라우팅
  4. 추가적 기준

5.4.6 조각 맞추기: 인터넷 존재 확인하기

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

  • OSFP, BGP : 목적지 기반 라우팅 프로토콜
  • SDN : 일반화된 포워딩에서 사용하는 포로토콜

5.5.1 SDN 제어평면: SDN 컨트롤러와 SDN 네트워크 제어 애플리케이션

[SDN구조의 특징]

  • 플로우 기반 포워딩
    - 목적지 주소 기반으로 이루어지는 전통적인 라우터 기반 포워딩과는 대조적인 특성
    - SDN의 제어 평면 : 모든 네트워크 스위치의 플로우 테이블 항복들을 계산, 관리, 설치
  • 데이터 평면과 제어 평면의 분리- 매치 플러스 액션 수행
    - 제어 평면 : 서버와 스위치들의 플로우 테이블을 결정, 관리하는 소프트웨어
  • 네트워크 제어 기능이 데이터 평면 스위치 외부에 존재
    - SDN 컨트롤러
    - 논리적 중앙 집중형
    - 협업능력, 확장성, 높은 이용성을 갖도록
  • 프로그램이 가능한 네트워크

  • Data-plane 스위치들
    - 하드웨어에서 일반화된 데이터 플레인 포워딩을 구현하는 빠르고 간단한 범용 스위치
    - 플로우 테이블 계산, 컨트롤러 감독 하에 설치
    - 테이블 기반 스위치 제어용 API : OpenFlow
    - 컨트롤러와 통신하기 위한 프로토콜 : OpenFlow
  • SDN 컨트롤러 (네트워크 OS 부분)
    - 네트워크의 상태 정보 관리
    - southbound API : 스위치 제어
    - northbound API : 애플리케이션에 서비스 제공
    - 분산 시스템으로 구현 : 논리적으론 중앙 집중형
  • 네트워크 컨트롤 애플리케이션
    - 컨트롤의 핵심
    - API 이용해서 원하는 것 구현
    - unbundled : 제3자 개입 용이

5.5.2 OpenFlow 프로토콜

  • SDN 컨트롤러와 SDN으로 제어되는 스위치 또는 OpenFlow API를 구현하는 다른 장치와의 사이에서 동작
  • TCP상에서 디폴트 포트번호 6653으로 동작

[OpenFlow 메시지 클래스]🔺

  • 컨트롤러가 스위치로 전달하는 메시지
    - 스위치의 상태 확인 (features)
    - 스위치 설정 셋팅 (configure)
    - 플로우 테이블 수정 (modify-state)
    - 특정 스위치 포트로 패킷 전공 (packet-out)
  • 스위치가 컨트롤러로 전달하는 메시지
    - 컨트롤러로 패킷 전송 (packet-in)
    - 스위치의 상태 정보 리포트 (port status)
    - 스위치에서 플로우 테이블 삭제 (flow-removed)
  • 동시에
    - 특정 문제 진단
    - 연결 요구

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

1. 스위치 s2의 링크 단절을 감지한 s1은 OpenFlow의 포트 상태 메시지를 사용하여 링크 상태의 변화를 SDN 컨트롤러에게 알린다.
2. 링크 상태 변화를 알리는 OpenFlow 메시지를 받은 SDN 컨트롤러는 링크 상태 관리자에게 알리고, 링크 상태 관리자는 링크 상태 데이터베이스를 갱신한다.
3. 다익스트라 링크 상태 라우팅을 담당하는 네트워크 제어 애플리케이션은 링크 상태의 변화가 있을 경우 알려달라고 이전에 등록해두었다. 이 애플리케이션이 링크 상태의 변화에 대한 알림을 받게 된다.
4. 링크 상태 라우팅 애플리케이션이 링크 상태 관리자에게 요청하여 갱신된 링크 상태를 가져온다. 이 작업은 상태 관리 계층에 있는 다른 구성요소의 도움이 필요할 수도 있다. 그 후 새로운 최소 비용 경로를 계산한다.
5. 링크 상태 라우팅 애플리케이션은 갱신되어야할 플로우 테이블을 결정하는 플로우 테이블 관리자와 접촉한다.
6. 플로우 테이블 관리자는 OpenFlow 프로토콜을 사용하여 링크상태 변화에 영향을 받는 스위치들의 플로우 테이블을 갱신한다.

5.5.4 SDN: 과거와 미래

  • OpenDayLight(ODL) 컨트롤러
  • ONOS 컨트롤러

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

  • 호스트와 라우터가 서로 간에 네트워크 계층 정보를 주고받기 위해 사용된다.
  • 망 자체의 문제가 발생했을 때 알려줌으로써 올바른 대처를 할 수 있도록 만들어주는 프로토콜
  • ICMP 메시지는 네트워크 계층에서 IP 데이터그램에 담겨져 전송됨.

[ICMP 메시지 형식]

  • 타입 + 코드 + IPCM 메시지의 발생 원인이 된 IP 데이터그램의 헤더 첫 8바이트
  • Type = 3 : 도달할 수 없음
  • Type = 11, code = 0 : TTL expired
  • 오류 상태를 알리기 위해서만 사용되는 것은 아님!

[Traceroute와 ICMP]

  • Traceroute 프로그램 : 한 호스트에서부터 세계 어느 호스트로의 경로라도 추적할 수 있는 프로그램.
  • Traceroute도 ICMP 메시지로 구현
  • 과정
    - n번째 데이터그램이 n번째 라우터에 도착하면 해당 라우터는 데이터그램의 TTL이 방금 만료되었음을 알게 됨
    -> 라우터는 데이터그램을 폐기하고 ICMP 경고 메시지를 출발지에 보낸다.(TTL expired)
    -> 이 경고 메시지는 라우터의 이름과 IP 주소를 포함
    -> 출발지는 타이머로부터 왕복 시간(RTTs), ICMP 메시지로부터 n번째 라우터의 주소와 이름을 획득
  • UDP 세그먼트가 최종 목적지 호스트에 도착하는 방법
    - type = 3, code = 3 "목적지 포트 도달 불가능" 리턴

5.7 네트워크 관리와 SNMP, NETCONG/YANG

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

  • SNMP : 네트워크 설정에 최적화된 프로토콜

5.7.2 SNMP와 MIB

5.7.3 네트워크 설정 프로토콜(NETCONF)과 YANG

profile
숭실대학교 컴퓨터학부 21

0개의 댓글