ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 네트워크: Network Layer 정리4 (AS routing, OSPF, SDN, ICMP)
    네트워크 2020. 11. 1. 18:40
     

    네트워크: Network layer Routing 알고리즘 공부하기!

    이번 포스팅은 Network layer control plane에서 routing이 어떻게 이루어지는 알아본다. 우선 이에 대해 알아보기전에 간단하게 네트워크 레이어의 구조에 대해 알아보자 네트워크 레이어는 data plane과 co

    seungjuitmemo.tistory.com

     

    이전까지 다루었던 라우팅은 ideal한 모델이였으며  실제로 사용되는 routing은 scaling이 가능해야한다. 

     

    방대한 라우터들의 정보를 모두 가져와 라우팅 테이블을 계산하는 것은

    불가능하기 때문에 이를 관리하는 자치적인 시스템이 필요하다. 

     

    그래서 전체 네트워크를 일련의 영역들로 나눠 각각 영역내 네트워크에서 라우팅을 컨트롤한다. 

     

    이렇게 일련의 영역들을 AS(Autonomous system) 이라 한다. 

     

    AS안에서는 이전 포스팅에서 다루었던 라우팅 알고리즘으로 충분히 통신이 가능하지만 

    외부 AS와 라우팅을 하기 위해서는 다른 알고리즘을 이용해야 한다. 

     

    그래서 이번 포스팅은 AS를 intra-AS routing inter-AS routing으로 나누고 이에 대해 알아본다.  

     

     

     

    <AS routing>

     

    1. intra-AS routing

     

    - 같은 AS network 안에서 존재하는 호스트, 라우터들 사이에서의 라우팅

    - IGP(Interior gateway protocols)이라고도 한다.

    - 같은 intra domain 프로토콜 사용

    - 다른 AS의 라우터와는 다른 intra-domain routing 프로토콜을 사용할 수도 있다. 

    - Gateway router : AS의 끝에 존재해서 다른 AS들의 라우터와 link를 갖는 router

    - RIP, OSPF, IGRP등의 intra-AS routing protocol을 사용한다. 

     

     

    2. inter-AS routing

     

    - AS들 사이에서 라우팅

    - 각 AS의 gateway router가 inter-AS routing을 한다. 

    - BGP(Border Gateway Protocol)을 사용한다. 

     

     

    즉 AS 내부에서의 라우팅은 intra-AS 라우팅만을 사용하고

    다른 AS와의 라우팅이 개입되어야 한다면 inter-AS 라우팅도 사용된다. 

     

     

     

    그런데 여기서 AS의 게이트웨이 라우터는 무엇일까?  

     

    게이트웨이 라우터는 외부 AS로 나갈 수 있는 동시에 경로를 제시해준다.

     

    다음과 같은 경우를 예로 들어보자. 

    AS1의 경우 AS2를 통해서 어떤 라우터로 갈 수 있는지, 

    AS3를 거쳐서 어떤 라우터로 갈 수 있는지에 대해 알아야 한다.

     

    그래서 이러한 정보들을 AS2의 gateway router은 AS1의 gateway router로 보내주고

    AS3의 gateway router는 AS1의 gateway router로 보내준다.  

     

     

     

    < OSPF(Open Shortest Path First) >

     

    - intra AS routing protocol으로 AS내 모든 정보를 교환한다. 

    - link state 알고리즘을 사용한다.

    각각의 노드에 대한 전체 정보를 알고 있어야 하며 

    다익스트라 알고리즘을 사용해서 최적의 경로를 구한다.

     

    - 계층 구조 방식의 통신   

    크게 local area와 backbone으로 나뉘어지며 link state 알고리즘은  local area에서만 사용된다. 

    area border routers는 자신의 Local area 영역의 distance들을 요약해서 주위 라우터에게 전달한다. 

    backbone router는 backbone router들끼리 라우팅을 수행하기 위해서 OSPF를 돌린다. 

    다른 AS로 라우팅 할때는 boundary router를 이용한다. 

     

     

     

     

    < BGP(Border Gateway Protocol) >

     

    - ISP간 라우팅을 하는 프로토콜

    - inter-domain routing protocol으로 외부 AS의 route와도 정보를 공유한다. 

    - reachability info와 policy를 고려하여 좋은 루트를 찾아야한다. 

    - eBGP : 주위의 다른 AS들로부터 subnet reachability info를 얻을때 사용하는 프로토콜

    - iBGP : AS 내부의 라우터들에게 reachability 정보를 알려줄때 사용하는 프로토콜

     

    ※ Policy를 고려한 이동이란 다른사업자의 망을 거쳐서 갈 수도

    있기 때문에 이를 신경써서 좋은 루트를 찾아야 한다

     

     

    BGP는 다음과 같은 과정으로 정보를 알린다. 

     

    예를 들어 AS2의 2d에서 X의 위치를 알고 싶다고 하자 

     

    x는 3a에게 AS3을 통해서 x로 갈 수 있다는 것을 알린다. 

     

    3a는 2c에게 d이 info를 알리고, 2d에게  AS3의 x로 갈 수 있다는 것을 알린다.

     

     

    정보를 알려줄 때 prefix라는 것을 포함해서 다른 라우터에게 알려준다. 

     

    여기서 prefix는 BGP attributes를 포함하는데 다음 과 같은 atribute가 있다. 

     

    1) AS - PATH 

    - x라는 서브넷으로 가기 위해서 어떤 경로를 지나야하는지 리스트

     

    2) NEXT-HOP

    -  다음 AS로 가는 internal-AS라우터가 어디에 있는지 알려준다.

     

     

     

     

    < BGP route 선택하기 > 

     

    라우터는 다음과 같은 기준들로 목적지 AS로 가는 법을 결정한다. 

     

    1. 정책 기반의 결정

    2. 가장 짧은 AS-PATH

    3. closet NEXT-HOP router  - hot potato

    4. 추가적인 기준

     

     

     

     

    < Hot Potato Routing > 

     

    다음은 2d에서 x까지 가야하는 상황이다.

    이 때 2d는 2a를 선택해서 x까지 갈 수 있고, 2c를 선택해서 갈 수 있다 .

     

    이 경우 hot potato routing protocol이 사용되며 local gateway중에 

    내가 원하는 destination까지 가기 위해 최소의 domain cost를 갖는 gateway를 선택하는 방법이다. 

     

     

     

     

     

     

    <Inter-, Inter-AS routing 비교>

     

    inter-AS routing의 경우 policy가 존재하기 때문에 특정한 경로는 가지 못한다.

     

    반면 intra-AS routing의 경우 AS 내부에서의 routing이므로 Policy를 신경쓰지 않는다.

     

    둘의 결합을 통해서 table 크기를 줄이고, update traffic을 줄임으로써 scaling할 수 있다.

     

     

     

     

    < The SDN control plane > 

     

    기존에 사용했던 방식은 distributed, per-router으로 각각의 라우터에 접근해 

    programming하는 방식으로 네트워크 관리에 어려움이 있었다. 

     

    요즘은 SDN 방식을 사용하여 이를 logically centralized함으로써 네트워크 관리를 굉장히 쉽게 만든다. 

     

    table-based forwarding(open flow api)을 이용하여 프로그래밍을 쉽게 한다.

    (기존 방식의 distributed programming은 더욱 어렵다)

     

     

    예를 들어 distributed, per-router 방식은 Traffic engineering 관리, load balancing 관리를 할 수 없었다. 

     

    하지만 이러한 문제는 SDN방식을 이용하면 해결된다. 

     

     

    먼저 구조를 살펴보면 

     

    1) Data plane switches

     

    - controller에 의해 계산된 table이 존재한다. 

     

    2) SDN controller

     

    - 네트워크 상태 정보를 저장

    - 상위의 northbound API와 상호작용

    - 하위의 southbound API와 상호작용

      (openflow api로 통신한다. )

     

    3) Network-control application

     

    - control function을 사용하여 원하는 행동 알고리즘을 시행한다.

     

     

     

     

    < OpenFlow protocol > 

     

    - controller와 switch 사이에서 동작한다.

    - TCP를 이용하며 메시지를 주고 받는다.

     

     

     

     

     

    < OpenFlow messages > 

     

    1) controller-to-switch messages

     

    - features: 스위치의 상태에 대해 알아내는 메시지

    - configure: 스위치의 configuration 세팅에 대해서 알아내는 메시지 

    - modify-state: OpenFlow Table의 entry를 add, delete, modify하는 과정 

    - packet-out:  패킷을 스위치로 보낸다. 

     

    2) switch-to-controller messages

     

    - packet-in: 패킷을 컨트롤러로 보낸다. 

    - flow-removed: flow table에서 지워진 entry를 알려준다. 

    - port status: 연결이 잘 되어 있는지 controller에게 변화를 알려준다. 

     

     

    다음은 스위치간의 연결이 끊어진 예이다. control/dataplane의 상호작용에 대해 알아보자

     

    S1은 라우터간의 연결이 해제된 사실을 controller에게 status message를 보냄으로써 알린다.

    ② controller는 openflow message를 받고 link status를 업데이트한다.

    ③ 이 때 해당되는 액션이 다익스트라 알고리즘 사용으로 등록되어 있으므로 다익스트라가 호출된다.

    ④ 다익스트라 알고리즘이 새로운 루트를 계산한다.

    ⑤ 다익스트라 알고리즘은 SDN controller안의 flow-table computation 구성요소와 상호작용하고 

      새로 필요한 table을 계산한다. 

    ⑥ controller는 업데이트가 필요한 switch에 새로운 table을 보낸다. 

     

     

     

    < ICMP >

    Internet control message protocol로써 호스트와 라우터들이 정보를 주고 받을 때 사용하는 프로토콜이다. 

     

    다음과 Type과 Code에 따라 사용되는 ICMP 유형이 결정된다.

    서버가 살아있는지 판단할때 ping을 사용하는 것이 대표적인 ICMP라고 할 수 있다.  

     

    ※ Traceroute

     

    Traceroute 또한 ICMP를 이용하는데 

    Traceroute는 자신의 시스템으로부터 목적지까지 경유하는 시스템의 정보와 round trip time를 확인하는 프로그램이다. 

     

    다음 그림을 통해 traceroute가 어떤 원리로 경유하는지 알아보자.

     

    우선 source지점부터 destination지점까지 udp 세그먼트를 보낸다. 

    이때 TTL을 통해서 Round trip time을 측정한다. 

     

    첫번째 set에서는 TTL=1인 패킷을 세번 보내 Round trip time의 평균을 측정한다.

    다음 set에서는 TTL=2인 경우를 세번 보내며 destination에 도착할 때까지 이를 반복한다. 

     

    패킷이 destination에 도착했을 때 receiver는 ICMP메시지를 리턴하지 않으므로 

    sender는 receiver가 수용할 수 없게 unlikely port number를 세팅해서 보낸다.

     

    이 포트넘버를 수용하지 못한 receiver는 ICMP 메세지를 sender에게 보내게 된다. 

     

     

     

     

     

     

     

     

     

    ※전공 공부용으로 작성했습니다.

    출처: computer networking a top down approach

     

    반응형

    댓글

Designed by Tistory.