네트워크 제어 영역

데이터 영역에서는 라우터간의 포워딩을 담당한 영역이었다면, 제어는 라우팅을 담당하는 영역으로 어떤 정책을 이용하여 라우팅 할지를 고민한다.

포워딩 테이블 / 플로우 테이블이 어떻게 만들어지고 유지, 설치하며 최단 경로를 어떻게 정하는 지 정의

라우팅 프로토콜의 목적

출발지부터 목적지 까지 갈 수 있는 최적의 경로를 선택하기 위함

경로는 라우터의 연속으로 라우터들의 순서 or 집합이다.

분류

경로 고정 유/무

  • 정적 프로토콜 : 네트워크 관리자가 링크 비용,라우팅 테이블을 직접 결정하는 것으로 네트워크가 변동되거나 확장될 수 록 관리자의 관리 부담이 증가한다.

  • 동적 프로토콜 : 라우터가 스스로 라우팅 경로를 선정하는 방식으로 네트워크 변화에 빠르게 대응이 가능하나 경로 루프, 경로 진동문제 발생 소지가 있다. (RIP, IGRP, OSPF ...)

같은 네트워크 내부/외부에 존재

  • 내부 게이트웨이 라우팅 프로토콜 : 같은 관리자 하(같은 AS)에 있는 라우터 집합 내부에서 담당 ( RIP, OSPF )

  • 외부 게이트웨이 라우팅 프로토콜 : 기관 외(다른 AS)에 있는 라우터 끼리 라우팅 ( BGP, EGP )

부하에 민감한가

  • 부하에 민감한 라우팅 알고리즘 : 현재 혼잡한 링크에 높은 비용을 부가하여 동적으로 변경하는 알고리즘 ( ARPNet )

  • 부하에 민감하지 않은 라우팅 알고리즘 : 현재 혼잡을 반영하지 않는 알고리즘 ( RIP, OSPF, BGP )

라우팅 테이플을 누가 관리하는가

  • 중앙 집중형 라우팅 알고리즘 (링크 상태 알고리즘) : 중앙 관리자가 연결된 링크 상태들의 정보를 알고 있어 중앙에서 관리 (OSPF)

    • Dijkstra's 알고리즘 이용

    • 목적지까지 가는 경로의 모든 정보를 라우팅 테이블에 기록 ( 네트워크 전체 지도를 알아야 가능 하기 때문에 중앙 집중형 )

    • 네트워크 토폴리지와 비용이 모든 노드에 알려지며, 링크 상태 브로드 캐스트 알고리즘이라고도 한다.

      네트워크 토폴리지란? 네트워크가 연결된 방식

    • 단점 : 양방향으로 트래픽이 몰릴 경우 링크비용이 한쪽방향으로 흐르게 바뀌고, 바뀔때마다 알고리즘이 동작하며 링크방향이 시계/반시계방향으로 계속 바뀌며 흐르는 경로 진동문제 발생

      • 해결 방법 : 트래픽에 의존하지 않고 알고리즘 수행 ( 라우팅 알고리즘 목적에 벗어나는 방식 )

        -> 모든 라우터가 동시에 상태 알고리즘을 수행하지 않게 한다. ( 결국 스스로 동기를 맞추게 된다. Floyd Synchronization )

        -> 랜덤으로 상태 정보 전송 시각을 결정하는 방식 사용

  • 분산 라우팅 알고리즘 (거리 벡터 알고리즘) : 라우터간의 인접한 라우터의 정보만 가지고 반복 계산과 정보 교환으로 경로 선택

    라우팅 테이블에는 목적지까지 가는데 필요한 방향과 거리만 기록 ( RIP, GRP )

    • 정보 교환을 안할때까지 프로세스를 반복하기에 반복적이고 모든 노드가 서로 정확히 맞물려 같은 정보를 갖지 않기 때문에 비동기적이고 계산된 결과를 이웃에게 전달하기 때문에 분산적이다.

    • Bellman-Ford 알고리즘 이용

    • 단점 : 링크 비용 변경시 변경된 노드만 그 상태를 인지하고 다른 노드들은 상태를 알지 못해 나쁜 소식은 느리게 전파되어 경로 루프가 발생하여 무한계수문제가 생긴다.

      무한 계수문제란? 해당 노드까지의 거리값을 변경된 링크비용만큼 도달하는데 1씩 update되며 천천히 증가하며 프로세스를 반복하는 것

      • 해결 방법 : 포이즌 리버스 추가

        포이즌 리버스란?

        route posioning을 받은 인접 라우터는 다운된 네트워크에 연결된 대체 경로가 없을 시 정보를 보낸 라우터에게 Posion Reverse전송으로 Update 시간을 기다릴 필요가 없어 수렴속도 증가와 루프 방지효과 (rout posioning은 특정 네트워크가 다운되면 인접 라우터들에게 매트릭값을 16,무한대를 보내 상태를 알리는 것)

        z->x의 경로 중 y를 경유하는 경로가 있다면, y에게 z->x의 경로비용을 무한대로 알리는 것

        -> 세개 이상의 노드를 포함한 루프는 감지가 불가능 하다.

수렴 시간 : 각 라우터들이 똑같은 테이블을 갖는데 걸리는 시간

  • LS와 DV 비교

    • 메세지 복잡성

      • LS : O(|V||E|)개의 메시지 필요

      • DV : 수렴시간은 다양하다

    • 수렴 속도

      • LS : O(E+VlgV)

      • DV : 천천히 수렴하고 라우팅 루프와 무한계수 문제

    • 강인성(견고한가)

      • LS : 잘못된 링크 비용을 이웃 라우터들에게 broadcast하며 새롭게 계산

      • DV : 잘못된 링크 비용을 모든 라우터들에게 broadcast하며 오류가 네트워크를 타고 전파된다.

지금까지는 이상적인 네트워크, 현실은 많은 라우터들이 존재하고 평면적이 아닌 계층적 구조를 갖는다.

-> AS 등장

AS (Autonomous System, 자율 시스템)

라우터들을 지역별로 묶어 개개인이 관리

나온 배경

  • 확장 : 라우터들 수가 증가함에 따라 위의 알고리즘들은 절때 수렴하지 않고 시간복잡도가 기하급수적으로 증가하며, 모든 목적지를 테이블에 보관이 불가능하다.

    또한, 테이블 교환도 링크 대역폭을 소진하는 것

  • 자율적 관리 : 네트워크는 ISP들로 구성되어 있으며 각 ISP들 관리자는 네트워크 내부 구성을 외부에 감추기를 원하고 자기들만의 정책으로 라우팅 되기를 원한다.

분류

  • AS내의 라우팅 : 내부 게이트웨이 프로토콜로 OSPF, RIP등 존재

    • OSPF 특징

      • 링크 상태 알고리즘

      • 상태 정보를 플러딩한다. (라우터간에 연결 안 된 라우터들에게도 상태를 broadcast한다.)

      • 공개된 프로토콜이다.

      • RIP를 개선

        • 보안 : MD5, 단순 인증을 사용하여 모든 패킷을 인증한다.

        • 복수 동일 비용 경로 : 하나의 목적지에 동일한 비용의 다른경로가 존재하면 이를 사용한다.

        • 유니 캐스트/멀티 캐스트 라우팅의 통합 지원

        • 단일 AS내에서 계층 지원

          • 백본 영역과 지역 영역으로 나눌 수 있으며,백본영역은 AS내 지역 영역간 트래픽을 라우팅하는 영역이고 지역영역은 백본 영역이 아닌 영역들의 그룹이다.

          • 경계라우터 : 다른 AS와 연결되는 라우터

          • 백본라우터 : 이 백본라우터들에서 OSPF 수행

          • 영역 경계라우터 : 백본과 지역영역을 연결하는 라우터

게이트 웨이 : 서로 다른 통신망,프로토콜을 사용하는 네트워크 간 통신을 가능하게 하는 장치나 s/w

  • AS외부 라우팅 : 경계 게이트웨이 프로토콜로 AS끼리 라우팅 프로토콜을 수행 (패킷의 특정한 목적지 주소를 가지고 라우팅수행이 아닌 CIDR형식의 앞쪽 prefix(네트워크 주소)를 향해 포워딩)

    • BGP : 대표적인 AS끼리의 프로토콜

      이웃 AS로부터 도달가능한 서브넷 prefix 정보를 broadcast방법을 이용하여 얻는다.

      포트번호는 179를 사용하며 반영구적인 TCP연결을 통해 라우팅 정보를 교환

      • 종류

        • eBGP : 두개의 AS에 걸친 BGP (외부 BGP 연결)

        • iBGP : AS라우터간 BGP 연결 (내부 BGP 연결)

      • BGP 경로 구조

        NEXT-HOP;AS-PATH;목적지 주소 prefix

        NEXT-HOP : AS-PATH를 시작하는 라우터 인터페이스의 IP주소로 출발지의 AS와 연결된 외부 AS 게이트 웨이 라우터 주소

        AS-PATH : 알림 메시지가 통과하는 AS 리스트 (루프 감지하고 방지하는 효과)

      • 경로 결정 방법

        1. 지역 선호도를 사용하여 결정 ( 지역 선호도는 같은 AS내의 다른 라우터로 부터 학습되거나 설정 된 것)

        2. 지역선호도가 같다면 최단 AS-PATH 경로 선택 -> DV 알고리즘 이용 (이때, 거리는 라우터의 홉수가 아닌 AS의 홉수)

        3. 위의 방법으로 선택된 경로중 같은 비용의 경로가 있다면 뜨거운 감자 라우팅(hot potato routing) 수행

          뜨거운 감자 라우팅?

          목적지까지의 경로중 외부 AS내의 경로 비용을 고려하지 않고 가능한 한 빨리 출발지 AS에서 내보내는 라우터(경로)선택

        4. 그래도 많은 경로가 남았다면 BGP 식별자를 사용하여 경로 선택

      • 애니캐스트(임의 캐스트)서비스 구현에 이용

        • 요청이 들어오면 송신자로부터 경로가 될 수 있는 잠재적인 수신자 그룹 안에서 가장 가까운 노드로 연결 시키는 라우팅 방식 (멀티 캐스트를 더욱 효율적으로 구현)

        • CDN : BGP라우팅이 변경되면 하나의 TCP연결에 속한 패킷들이 웹 서버의 다른 복제본으로 도착 할 수 있기 때문에 사용하지 않는다.

        • DNS : 주로 사용되며 복제된 루트 DNS서버중 가장 가까운 DNS루트 서버로의 질의를 위해 사용

AS내/외부 프로토콜의 차이점

  1. 정책 : AS간의 라우팅은 정책 이슈가 지배한다. (한 AS가 다른 특정 AS를 통과 할 수 없을 수 있다.)

    AS내부의 라우팅은 동일한 관리자 통제하에 있어 정책 문제는 경로 선택에 중요하지 않다.

  2. 확장성 : AS간의 라우팅에서 성능과 확장 문제는 매우 중요하나 같은 AS내의 라우팅에서는 중요하지 않다. (하나의 ISP가 커지면 두개의 AS로 분리할 수 있고, 하나의 AS를 OSPF를 통해 여러개의 영역으로 나눌 수 있기 때문)

  3. 성능 : AS간의 라우팅은 정책 지향형이므로 성능같은 라우터의 품질은 부수적인 관심사이다. (더 경로비용이 크더라도 정책 기준을 만족하는 경로 선택)

    AS내에서는 이러한 정책의 고려가 중요하지 않으므로 경로의 성능 수준에 초점을 두고 라우팅

라우팅 프로토콜은 단순 라우팅 뿐 만 아닌 보안/계층구조 등 많은 것을 정의한 규칙

SDN : Software Defined Network

네트워크 장비를 중앙에서 프로그램 처럼 자유롭게 제어하고 관리

원격에 존재하는 제어장치가 포워딩 테이블을 생성 후 라우터내의 Control Agent와 상호작용

등장 배경

인터넷 초기에는 분산된 라우터단위의 접근 방식으로 일체형 라우터는 전용 OS로 동작,구현 되며 라우터 기업들은 가격이 매우 비싸고 수직적이고 폐쇄적이고 독자적인 소규모의 시장이었다.

이런 분산된 라우팅 프로토콜은 정적 방식으로 로드 밸런싱이 불가능 하다.

특징

  • OpenFlow같이 Flow 기반 포워딩 : 플로우 테이블 항목들을 모두 계산하고 관리,설치가 가능하다.

    Flow : 패킷을 처리해주는 규칙의 단위

    OpenFlow?

    원격 컨트롤러(제어장치)와 라우터(스위치)간의 플로우 테이블을 전달하는 프로토콜

    구성

    • match : 규칙의 조건 같은 것. (일치 할 수 있는 11개의 패킷 헤더 필드와 수신 포트 ID로 구성)

      Ingress Port | Src Mac | Dest Mac | Eth type | VLAN type | VLAN ID | VLAN Pi | IP Src | IP Dest | IP Proto | Tcp/Udp Src Port | TCP/UDP Dest Port

    • action

      • forward : 다른 라우터로 전달

      • drop : 라우터에서 강제로 패킷을 버리는 것

      • Modify field(수정 필드) : IP프로토콜 제외 10개의 헤더 필드 값 수정

    -> 라우터,방화벽,스위치,NAT등 다양한 기능을 S/W적으로 수행 할 수 있게 해준다.

    특징 : TCP를 사용

    제어기 -> 스위치 메시지 종류 : 설정, 상태 수정, 상태 읽기, 패킷 전송

    스위치 -> 제어기 메시지 종류 : 패킷 전송, 포트 상태, 플로우 제거

  • 제어 / 데이터 영역 분리

  • 데이터 영역 외부(라우터)에 네트워크 제어 기능 존재

  • 프로그램이 가능한 네트워크

SDN 상호동작 과정

  1. 라우터는 장애확인 후 제어기에 OpenFlow 포트 상태 메시지 전달

  2. SDN제어기는 OpenFlow 수신 후 링크 상태 정보 수정

  3. 링크 변경시 라우팅 알고리즘이 동작하게 등록 시켜놓고, 링크 상태 정보가 수정된다면 그래프 정보와 링크 상태 정보 이용하여 경로 계산

  4. 새로운 Flwo 테이블을 계산하고 스위치들에게 새로운 테이블 설치

-> 종속적이고, 신뢰성이 높으며, 성능 확장적이면서 안전한 분산 시스템

ICMP

호스트와 라우터간에 네트워크 계층 정보를 주고 받기 위해 사용하는 프로토콜로 주료 오류보고가 목적이다.

IP데이터 그램에 담겨 전송되므로 구조적으로 IP바로위에 존재한다.

구조

  • 타입

  • 코드

  • IP 데이터 그램 처음 8바이트

메세지 종류

TypeCode설명

0

0

Echo Reply (ping)

3

0

Destination Unreachable(네트워크)

3

1

Destination Unreachable(호스트)

3

2

Destination Unreachable(프로토콜)

3

3

Destination Unreachable(포트)

3

6

Destination Unresearched(네트워크)

3

7

Destination Unresearched(호스트)

4

0

Source-Quench(출발지 억제[혼잡제어])

8

0

Echo Request (ping)

9

0

라우터 알림

10

0

라우터 발견

11

0

TTL Expired

12

0

IP헤더 불량

Traceroute 동작 과정

  1. TTL값을 1부터 1씩 증가하는 ICMP Request 전송(8/0)

  2. TTL이 0이 되면 TTL Expired 전송(11/0)

  3. 도착하면 응답 메시지 전송

    1. window : Echo Reply(0/0) 전송

    2. linux : port Unreachable (3/3) 전송

      리눅스에서 tracroute는 udp헤더에 포함되어 전송되며, 안쓸것 같은 port로 request를 보내기 때문에 포트 도달 불가능 메시지가 돌아온다.

-> 윈도우는 ICMP 레벨(네트워크 계층)만 체크하며, 리눅스에서는 전송계층의 UDP레벨까지 체크

네트워크 관리

적절한 비용으로 요구사항을 만족하기 위해 네트워크 구성요소와 자원들을 제어하고 통합 조정하는 것

  • 관리 모듈 : 네트워크 운영센터의 중앙 집중화된 네트워크 관리 스테이션으로 네트워크 관리 정보 수집,처리,분석,게시를 제어

  • 피관리 모듈 : 관리 대상 네트워크에 존재하는 네트워크들 ( 호스트, 라우터, 스위치, 미들박스 등)

    • 구성

      • Agent : 장치의 상태 정보를 수집 후 관리 컴퓨터가 요청시 전달하는 프로그램

      • Data : 장치의 상태 정보이며 MIB에 저장,수집

        Management Inforamtion Base로 일종의 상태 DB

SNMP : Simple Network Management Protocol

Agent와 관리자 사이에서 네트워크 제어, 정보를 전달 하기 위한 프로토콜

MIB 정보 전달하기 위한 2가지 명령어

  • Request/Response : MIB데이터 요청 / 응답

  • Trap : 관리자에게 예외적인 이벤트 발생을 알림

Last updated