본문 바로가기
클라우드

[Calico 01] AS(IRP, ERP)와 BGP란 무엇인가?

by 내기록 2022. 12. 3.
반응형

 

Kubernetes Calico에 대해 알아보던 중 BGP라는 개념이 등장했다. 생소한 개념이었고 네트워크에 대해 간단히 짚고 가야 이해가 가능할 것 같아서 AS와 BGP를 먼저 알아본 후 Calico에 대해 알아보려고 한다.

 

 

들어가기 전에) 라우터란 무엇인가?

라우터는 컴퓨팅 디바이스와 네트워크를 다른 네트워크에 연결하는 네트워킹 디바이스로 주로 3가지 기본 기능을 수행한다.

1) 경로 결정 : 라우터는 source에서 target으로 이동하는 데이터의 경로를 결정한다. 지연, 용량 및 속도와 같은 네트워크 지표를 분석하여 최상의 경로를 찾으려고 시도한다.

2) 데이터 전달 : 라우터는 선택한 경로의 다음 디바이스로 데이터를 전달하여 최종적으로 대상에 도달하도록 합니다. 디바이스와 라우터는 동일한 네트워크에 있거나 서로 다른 네트워크에 있을 수 있다.

3) 로드 밸런싱 : 경우에 따라 라우터가 여러 경로를 사용하여 동일한 데이터 패킷의 여러 사본을 전송할 수도 있습니다. 이 방법을 통해 데이터 손실로 인한 오류를 줄이고 이중화를 구현하고 트래픽 볼륨을 관리한다.

 

 

AS(Autonomous System, 자율 시스템)?

각 기관이나 단체가 독립적으로 운영하는 네트워크를 자율 시스템(AS)라고 부른다.

 

쉽게 말하자면 고유한 라우팅 정책을 가지고 있는 ISP(Internet Service Provider, sk브로드밴드, LG U+, kt 등), 정부(공공)기관, 회사, 단체 등을 지칭한다. AS는 외부 인터넷과 BGP 라우팅 프로토콜을 사용하여 자신들의 network에 대한 연결성을 제공해야 한다.

즉, 작은 사무실이나 PC 방처럼 간단하게 인터넷을 이용하는 기관이 아닌 어느 정도 규모가 되면서 별도의 정책관리자가 고유한 정책을 가지고 인터넷에 연결하는 주체에 대한 정의이다. 현재는 AS는 BGP를 사용해서 외부 네트워크와 연동하도록 되어 있다.

 

<AS의 2가지 특성>

  • AS는 단일 기관이 관리하는 라우터와 네트워크의 집합이다.
  • AS는 동일한 라우팅 프로토콜을 사용해 정보를 교환하는 라우터들의 그룹으로 구성되어 있다.

학교 내 네트워크는 각 건물에 있는 LAN이 라우터에 의해 고속 백본에 연결되는 형태로 하나의 학내망은 하나의 AS라고 할 수 있다.

인터넷은 각 AS들이 복잡하게 연결되어 구성된다.

 

인터넷의 라우팅 프로토콜은 크게 AS 내에서 이뤄지는 프로토콜과 AS들 사이에서 이뤄지는 프로토콜로 나눌 수 있다.

- 하나의 AS 내에 있는 라우터들 간의 라우팅 정보 교환을 위해 사용되는 프로토콜을 IRP(Interior Router Protocol, 내부 라우터 프로토콜) 이라 한다.

- 서로 다른 AS에 속하는 라우터들 간에 라우팅 정보 교환을 위해 사용되는 프로토콜을 ERP(Exterior Router Protocol, 외부 라우터 프로토콜) 이라 한다.

 

하나의 AS 내에서 사용하는 프로토콜은 AS 외부에서는 구현할 필요가 없다. 이러한 유연성으로 IRP는 특정 응용이나 요구사항에 맞게 수정이 가능하다. (내부 프로토콜의 변경사항이 외부에 영향을 끼치지 않음) 

그러나 인터넷은 하나 이상의 AS로 구성될 수 있다. 예를 들면 사무실이나 학교에선 모든 LAN(Local Area Network)들이 라우터들에 의해 연결되어 하나의 AS를 구성할 수 있다. 이 시스템은 다른 AS와 WAN으로 연결될 수 있다. 아래 그림에서 이러한 상황을 보여준다.

이 경우 서로 다른 AS의 라우터가 사용하는 라우팅 알고리즘과 라우팅표들의 정보는 다를 수 있다. (내부 프로토콜이 수정되어서) 그럼에도 불구하고 한 AS의 라우터들은 적어도 시스템 외부에 있는 도달 가능한 네트워크에 대한 최소 수준의 정보를 필요로 한다.(몇 개의 라운터는 ERP도 함께 수행함) 서로 다른 AS에 위치한 라우터들 사이에서 라우팅 정보를 전달하기 위해 사용하는 프로토콜을 ERP라고 한다.

IRP는 한 AS 내의 모든 라우터에서 동작하며, ERP는 AS들이 서로 연결되는 관문 역할을 하는 몇 개의 라우터에서만 동작한다.

 

위와 같은 이유로 ERP는 IRP보다 전송하는 정보가 적다고 예상된다. 아래 예로 살펴보자,

AS의 호스트는 데이터그램을 다른 AS의 호스트로 전송할 때, 목표 AS를 설정하고 그 목표 시스템으로의 경로만 설정한다. 데이터그램이 목표 AS로 전달되면, 시스템의 라우터들의 데이터그램을 내부적으로 배달하기 위해 협력한다. 따라서 ERP는 목표 AS 내에서의 경로에 대한 세부 사항에 대해 알 필요가 없다.

 

자율시스템 네트워크(참고문헌: '데이터통신', 오창환 저, 한국학술정보(주))

 

위 이미지에서 모든 라우터들은 IRP를 수행하며, R1, R5, R8은 AS간의 게이트웨이 역할을 담당하며 IRP, ERP를 함께 수행한다.

IRP의 대표적인 예로 RIP(Routing Information Protocol)와 OSPF(Open Shortest Path First)가 있고 ERP의 대표적인 예로 BGP(Border Gateway Protocol)이 있다.

 

 

BGP(Border Gateway Protocol, 경계 게이트웨이 프로토콜)?

BGP는 TCP/IP 프로토콜을 사용하는 인터넷에서 사용하기 위해 개발됐지만 현재는 다른 인터네트워크에도 적용이 가능하다. BGP는 인터넷에서 선호하는 ERP이다.

 

기능

BGP는 서로 다른 AS의 라우터인 게이트웨이가 라우팅 정보 교환에 협력하도록 설계됐다. 이 프로토콜은 TCP 연결 위에서 전송되는 메시지들을 이용하여 동작한다. 

BGP에는 세 가지 기능적 절차가 있다.

  • 이웃 획득(neighbor acquisition)
  • 이웃 도달 가능성(neighbor reachability)
  • 네트워크 도달 가능성(network reachability)

같은 네트워크에 있는 두 라우터를 이웃이라 한다. 두 라우터가 다른 AS에 위치하지만 서로 라우팅 정보 교환을 할 수 있다.

이웃 획득을 첫 번째로 실행하는 이유는 본질적으로 이웃 획득은 두 이웃 라우터가 라우팅 정보를 주기적으로 교환하는 것에 동의했을 때 일어난다. 일부 라우터는 참여를 원하지 않을 수 있기 때문이다. 예를 들면, 일부 라우터는 할 일이 너무 많아서 시스템 외부에서 들어오는 트래픽에 대한 책임을 원하지 않을 수 있다. 따라서 이웃 획득 과정에서 라우터는 다른 라우터로 요청 메시지를 보내고 이 메시지는 수락 또는 거절될 수 있다.

 

BGP-4 메시지

열기(Open) 다른 라우터와 이웃 관계를 만들기 위해 사용한다.
갱신(Update) 하나의 경로에 대한 정보를 전송하거나, 제거될 다수의 경로를 나열하기 위해 사용한다.
생존(Keepalive) Open메시지를 승인하고, 주기적으로 이웃 관계를 확인하는데 사용한다.
통보(Notification) 오류조건이 검출되었을 때 보낸다.

 

절차

먼저, 이웃 획득 절차로 두 라우터는 TCP 연결이 성립된 다음 열기 메시지를 서로에게 보낸다. 수신 라우터가 요청을 수락하면, 생존 메시지를 응답으로 보낸다.

이웃 관계가 성립되면, 이웃 도달가능성 절차가 관계를 유지하기 위해 사용된다. 파트너가 여전히 존재하고, 이웃 관계를 맺고 있다는 것을 확인하기 위해 두 라우터는 주기적으로 생존 메시지를 서로에게 보낸다.

마지막 절차는 네트워크 도달 가능성이다. 각 라우터는 도달 가능한 네트워크와 그 네트워크로의 선호 경로를 데이터베이스로 유지한다. 데이터베이스에 변화가 생기면 라우터는 갱신 메시지를 BGP를 구현하고 있는 모든 라우터에게 브로드캐스트 한다. 갱신 메시지는 브로드캐스트되기 때문에 모든 BGP 라우터는 자신의 라우팅 정보를 구성하고 유지할 수 있다.

 


BGP 메시지

0) BGP 공통 헤더

 

BGP 라우팅 프로토콜과 관련된 메시지의 헤더로 19바이트 고정 길이의 공통 헤더를 가진다.

공통 헤더 바로 뒤에 각 메시지 종류 별로 다른 내용이 붙는다.

 

각 BGP 메시지는 하나의 패킷에 수납되어 전송되는데, 한 패킷에 여러 메시지를 함께 전송할 수 있다.

표시(Marker) 인증을 위해 사용한다. 송신자는 이 영역에 인증 메커니즘 관련된 값을 넣어 수신자가 송신자의 신분을 식별할 수 있게 한다.
길이(Length) 공통헤더를 포함한 BGP 메시지의 길이
유형(Type) 메시지 종류로 열기, 갱신, 통보, 생존, 재확인 중 하나이다. (재확인 : route-refresh라는 정보 재확인 메시지)

 

http://www.ktword.co.kr/test/view/view.php?no=2067

 

1) 열기 메시지

 

http://www.ktword.co.kr/test/view/view.php?no=2186

TCP 연결이 된 BGP Peer간에 최초로 주고받는 메시지로 자신의 신상정보를 알려서 BGP 이웃을 협상하기 위함이다.

자신의 AS번호, BGP 라우터 ID, 홀드 타입 협상 등의 정보를 가진다.

 

- Version : BGP 버전으로 현재는 4버전을 사용한다. (BGP-4)

- ASN(Autonomous System Number) : 16비트 길이로 송신자가 자신이 속한 AS 번호를 나타낸다.

- Hold Time : 성공적인 keepalive, update 메시지 수신 후에 후속 메시지를 수신할 때까지 허용되는 최대 시간이다.

두 라우터 간에 설정된 값을 비교하여 가장 작은 값으로 유지한다. 시간 초과 이후에도 메시지를 보내지 않으면 라우터가 다운된 것으로 간주한다.

- BGP Identifier (Router ID) : 이 Open 메시지를 송신하는 라우터의 IP 주소이다.

- 옵션 파라미터 길이 : 옵션 영역의 길이로 0이면 아무런 옵션이 없음을 의미한다.

- 옵션 파라미터 영역 (추가적인 옵션 영역) : 가변 길이로 BGP 이웃 협상을 위한 각종 매개변수들이 들어있다.

 

 

 

2) 갱신 메시지

 

BGP 프로토콜의 중심으로 이미 이웃 관계가 성립된 Peer Router간에 새로운 정보를 알리거나, 이전에 알려진 경로를 취소하는데 사용된다. 만일 여러가지 정보가 변경되는 경우에는 그 수만큼 update 메시지를 교환해야 한다.

http://www.ktword.co.kr/test/view/view.php?m_temp1=1906

- Unreachable Route (도달 불가능) 영역 

withdrawn routes : 취소 경로로 이전에 advertise된 경로 목록 중에서 삭제되어야 하는 모든 경로를 나열한다.

- path Attributes (경로 속성) 영역 

Path attribute : 도달 가능한 네트워크에 대한 Path 정보이다.

- NLRI(Network Layer Reachability Information) 영역

도달 가능한 망들에 대한 주소들로 새로운 네트워크 정보들을 포함한다.

 

 

 

3) 생존 메시지

메시지 구성은 BGP Header 뿐이고 내용은 없다.

BGP Open Message에 대한 응답으로 상대(Peer Router)에게 자신이 살아있음을 알리기 위해 주기적으로 보내는 19바이트 BGP 메시지이다.

앞서 주고받은 Open Message에 대한 확인으로 보내거나 Hold Time이 만료되기 전에 자신이 살아있음을 알리기 위해 사용된다.

 

http://www.ktword.co.kr/test/view/view.php?no=1013

메시지 구성은 BGP Header 뿐이며 별도 내용은 없다.

보내는 주기는 BGP Open Message에서 설정된 최소 Hold Time이 만료되기 전으로 설정해야 하며 권장 값은 Hold Time의 1/3이다.

 

 

4) 통보 메시지

http://www.ktword.co.kr/test/view/view.php?no=2407

에러가 발생했거나 연결을 닫고자 할 때 보내는 BGP 메시지로 이 메시지가 보내진 후 연결 세션은 끊어진다.

 

 

Route Reflector

https://code2501.tistory.com/47

별도 설정이 없다면 위 예제는 인접한 peer의 BGP 정보만 받게 된다. (R1은 R2의 네트워크만 받을 수 있음)

Route Reflector를 설정하면 R2는 R1<->R3 통신이 가능하고 R4는 R3<->R5를 중계한다. 만약 R3를 루트 리플렉터로 설정하지 않으면 R1-R2의 정보가 R4-R5로 전달되지 못한다.

 

 

 

References

Data&Computer Communication 10판, William Stalling

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=cni1577&logNo=221559412098 

https://2infinity-and-beyond.tistory.com/7

http://www.ktword.co.kr/test/view/view.php?no=2067 

http://www.ktword.co.kr/test/view/view.php?no=2186 

https://code2501.tistory.com/47

반응형

댓글