[Network] Network Layer(Control Plane) 2 - OSPF와 BGP

chxghee·2024년 11월 28일
post-thumbnail

지난 시간까지는 LS DV를 공부해 보았다.

이 프로토콜은 실제로 사용하지는 않는데 그 이유는 다음과 같다.

  1. LS의 경우 네트워크에 있는 모든 라우터의 정보를 각 라우터가 아는 것은 사실상 불가능 하다.

  2. 각 링크의 토폴로지(cost)가 정해져 고정되는 상황은 실상황에서는 불가능하다.

  3. DV의 경우 라우터들이 수렴을 해야 하는데, 전체 네트워크의 규모가 엄청 크기 때문에 수렴이 사실상 불가능하다.

이러한 이유 때문에 LS, DV같은 클래식한 알고리즘을 실상황에 그대로 적용하기는 어렵다

Autonomous Systems

같은 라우팅 알고리즘을 사용하는 도메인(지역)으로 범위를 나눈다.

네트워크는 하나의 네트워크로 이루어 진것이 아니라
여러개의 ISP가 계층적으로 연결된다.

때문에 네트워크 전체가 아니라 작은 네트워크 즉, autonomous systems단위로 쪼개 라우팅을 지원한다.

as는 같은 라우팅 알고리즘을 사용하는 라우터의 집합 이라고도 할 수 있다.

Intra - AS (intra domain)

같은 AS내에 있는 라우터 들은 같은 라우팅 알고리즘을 사용한다.

네트워크에는 여러개의 AS가 존재하는데, AS 끼리는 라우팅 알고리즘이 다를수 있다.

하지만 같은 AS내에서는 같은 알고리즘을 사용해야 한다.

Inter-AS (inter domin)

서로 다른 AS끼리의 패킷을 전달하기 위한 라우팅 알고리즘.

AS 끼리 패킷을 전달하기 위해 각 AS들은 공통된 하나의 라우팅 알고리즘을 사용한다.(BGP)

공통된 알고리즘을 사용하는 이유는 서로 AS 끼리 통신을 위한 것이므로 통일된 프로토콜을 사용해야하기 때문이다.

AS 끼리의 패킷을 주고받기 위한 라우터가 gateway router라고 한다.

Intra-AS 라우팅 프로토콜

  1. RIP: Routing Information Protocol
    • DV 기반

  2. EIGRP: Enhanced Interior Gateway Routing Protocol
    • DV 기반

  1. OSPF: Open Shortest Path First
    • link-state 기반
    • IS-IS protocol


OSPF (Open Shortest Path First) 라우팅

링크 스테이트 알고리즘을 기반으로 같은 AS끼리 패킷을 주고 받는 프로토콜

  • 같은 AS 라우터 끼리는 정보를 각 라우터에 브로드캐스트하는
    link-state advertisements를 한다.

  • 이때 트랜스포트레이어 메세지가 아닌 IP 메세지를 통해 advertise 한다.
    (IP헤더의 upper Layer필드에 OSPF프로토콜을 사용하는지에 대한 여부를 저장)

  • 각 라우터는 모든 라우터의 정보를 알고 있고, 다익스트라 알고리즘을 통해 포워딩 테이블을 결정한다.

  • 이때 링크 코스트의 기준은 정해진 바가 없고 네트워크 오퍼레이터가 정한 cost를 기준으로 동작하게 된다.

  • 보안: 모든 OSPF메세지들은 인증되어야 한다.
    (공격자가 이상한 cost의 정보를 주는 것을 막기 위함)

계층적 OSPF

각 AS안에서도 local area로 라우터를 나누어
backbone을 통해 각 area끼리의 통신과 다른 AS끼리의 통신을 지원한다.

이때 각 링크 코스트의 정보 및 라우터의 정보는 같은 area끼리만 주고 받으며 해당 area에서 LS 방식를 통해 라우팅 계산을 한다.

  • backbone
    1. backbone 라우터 : 각 area의 area border 라우터를 연결시킨다.
    2. boundary 라우터 : 다른 AS의 게이트웨이라우터와 연결한다.
    (게이트웨이 라우터라고 생각하면 된다.)

  • area border 라우터 : area가 다른 area와 연결될 수 있도록 backbone 라우터에 연결된 라우터



BGP (Border Gateway Protocol)

각 AS사이 패킷을 전달하기 위한 프로토콜로,
자신의 위치(prefix)를 다른 AS에 advertise한다.

두가지의 종류가 존재한다.

  1. eBGP: 자신의 prefix를 외부AS에 알리는 프로토콜
  2. iBGP: 외부로 부터 받는 정보를 내부 라우터에 알리는 프로토콜

예를 들어, 어느 한 라우터 x 가 자신의 위치를 알리고 싶다면
자신에게 도달할 수 있는 경로 정보를 eBGP를 통해 다른 AS에 알리고,
다른 정보를 받은 AS들은 외부로부터 받은 경로 정보를 iBGP를 통해 내부 라우터들에게 전달한다.

BGP에서는 라우팅 성능보다는 policy(정책)을 우선으로 경로를 정한다.

BGP의 동작

  1. BGP 세션
    두 BGP라우터들은 미리 연결된(semi-permanent) TCP 커넥션을 통해 BGP 메세지를 주고 받는다.
  1. BGP advertise route
    BGP 메세지에는 prefix + attribute에 대한 정보가 있다.
  • prefix : advertise되는 서브넷의 prefix(목적지)
  • attribute: AS-PATH 와 NEXT-HOP 으로 구성된다.
    1) AS-PATH : 목적지로 가는데 어떤 AS들을 거쳐 갈 수 있는지에 대한 정보
    2) NEXT-HOP: 광고를 받은 목적지로 가기 위해 데이터를 전달해야 할 첫 번째 라우터의 IP 주소

추후 살며볼 예시에서 AS2,AS3,X와 같이 AS-PATH와 prefix로 이루어진다.

  1. Policy based routing
    라우팅의 성능보다는 각 라우터의 정책에 따라 경로를 결정한다.

예시1. 게이트웨이 라우터가 하나의 path만 받을 떄

예시2. 게이트웨이 라우터가 여러개의 path만 받을 떄

  • 목적지 X로 가는 경로는 다양할 수 있다.
  • AS1의 경우 두가지의 경로 선택지가 있다.
    1. AS3에게 바로 가는 경로
    2. AS2를 지나 가는 경로

이 경로를 선택하는 방법은 성능우선이 아닌, 각 AS의 정책에 따라 결정된다.


BGP 메세지

BGP 메세지는 사전 연결된 TCP의 커넥션을 통해 전달된다.

종류에는 4가지가 있다.

  1. open : 처음에 라우터 사이 TCP연결인증을 하는 메세지이다.

  2. update : 새로운 path를 advertise 시 보내는 메세지.

  3. keepalive : BGP peer끼리 서로 TCP 연결중 임을 확인하는 메세지

  4. notification : 에러 레포팅 및 TCP연결 해제를 위한 메세지.


실제 포워딩 OSPF와 BGP를 통해 테이블을 구성하는 예제

1d 라우터의 포워딩 테이블

  1. 1a 1b 1d는 iBGP를 통해 목적지 x에 가려면 1c를 지나야 한다는걸 알 게 되었다.

  2. 1d에서 OSPF알고리즘을 통해 1c로 가는 least path는 1번 링크로 결정되었다.

  3. 1d는 목적지 x에 가기 위해서는 1번 링크로 가면 된다는 것을 2번 과정을 통해 알게 되어 테이블에 저장하게 된다.

2번과 3번의 과정이 OSFP와 BGP의 연동하는 부분이라고 볼 수 있다.

1a 라우터의 포워딩 테이블

  1. 1a에서 OSPF 알고리즘을 통해 1c에 가려면 1d를 거쳐가는 것을 최소 path로 구하였다. 때문에 2번 링크로 path가 결정 되었다.

  2. 1d는 목적지 x에 가기 위해서는 2번 링크로 가면 된다.


Q. 다른 inter, intra AS 라우팅 프로토콜을 사용하는 이유?

inter 라우팅과 intra 라우팅은 각기 다른 목적과 요구사항에 의해 설계되기 때문이다.

  1. 정책: inter-AS 라우팅에서는 정책적 고려가 우선, intra-AS 라우팅은 성능 중심.
  2. 규모: 계층적 구조로 라우팅 테이블 크기를 줄이고 관리 용이성을 높임.
  3. 성능: intra 라우팅은 성능 중심, inter 라우팅은 정책 중심.

Hot Potato Routing

2d 입장에서는 x로 가는 방법은
1. AS1을 거쳐 가거나
2. AS3을 거쳐가는
두 가지 방법이 있다.

즉 2a로 가느냐 2c로 가느냐의 문제이다.

이때 Hot Potato Routing 프로토콜은 전체 경로의 cost가 아닌,
바로 로컬 NEXT-hop 라우터로 가는 least intra-domain cost를 기준으로 pathf를 정하게 된다.
(로컬 게이트웨이 라우터가 아니라 나와 이웃한 라우터와의 cost가 기준이다.)

즉 그림에서는 2a로 경로를 결정하게 된다.

BGP의 정책

위와 같이 A가 w로 가는 경로를 B와 C에 advertise 하는 상황일때,

만약 B입장에서 "C가 w로 갈때 나를 지나지 않았으면 좋겠어" 라는 정책이 있을 때
B는 C에게 w로 가는 경로를 알려주지 않는다.

➡️ 때문에 C는 w로 가려면 A를 지나는 방법밖에 모르게 된다.

위의 예제도 비슷하다.

x입장에서 B가 C에게 패킷을 보낼 때 x를 거치지 않도록 하려면,
C에 B를 advertise하지 않으면 경로가 끊어지게 되어 B는 C로 바로 전달할 수 있게 된다.

BGP route selection

BGP에서 경로를 선택하게 되는 우선순위는 다음과 같다.

  1. 각 라우터(혹은 AS)의 정책
  2. 짧은 AS-path 우선 (거치는 AS의 개수가 적은것 우선)
  3. 가까운 next-hop 라우터 (hot potato routing)
  4. 그 외 기준

하지만 절대적인 것은 아니며, 네트워크 오퍼레이터에 따라 우선순위가 바뀔 수 있다.

profile
다 같이 화이팅! 🙋‍♂️

0개의 댓글