Layer 3
3.2.c Configure and verify eBGP between directly connected neighbors (best path selection algorithm and neighbor relationships)
BGP(Border Gateway Protocol)이란?
“인터넷에서” 데이터 전송의 최적 경로를 찾는 프로토콜
인터넷은 프로토콜, 디바이스 및 통신 기술을 통해 서로 연결된 수천 개의 프라이빗, 퍼블릭, 기업 및 정부 네트워크로 구성된다.
인터넷을 검색하면 데이터는 목적지에 도달하기 전에 여러 네트워크를 거쳐 이동한다.
BGP의 역할은 데이터가 이동할 수 있는 모든 경로를 살펴보고 최적의 경로를 선택하는 것이다.
예를 들어 미국의 사용자가 유럽의 오리진 서버로 애플리케이션을 로드하면 BGP가 해당 통신을 빠르고 효율적으로 만든다.
(기존의 rip, ospf와 같은 igp 라우팅 기술들은 이를 수행하지 못한다.)

인터넷은 수십만 개의 소규모 네트워크로 이루어져 있다.
각 소규모 네트워크를 자율 시스템이라고 하고, 이들은 인터넷 할당 번호 관리 기관 (IANA) 에서 지정한 고유 번호로 식별한다.
BGP는 TCP 포트 179번을 사용하고 유니캐스트 방식으로 교환한다.
IGP와 다르게 직접 연결되어 있지 않은 장비와 BGP Peer 관계를 수립할 수 있다.
IGP(Interior Gateway Protocol) : 임의의 AS 내부에서 동작하는 프로토콜
AS (Autonomous System) : 하나의 단일 기관 아래에서도 동일한 정책으로 관리되는 네트워크
BGP의 기능
- 네트워크 연결 변경 사항 검색 - 인터넷의 구조는 동적이다. 새로운 자율 시스템이 추가됨에 따라 기존 시스템이 지속적으로 제거된다. 모든 자율 시스템은 새 경로와 이전 경로에 대한 정보를 지속적으로 업데이트해야 한다. BGP는 시스템이 이러한 네트워크 변경 사항을 검색하고 그에 따라 지속적으로 업데이트되도록 한다.
- 네트워크 정책 관리 - 예를 들어 BGP를 실행하는 라우터가 자율 시스템의 내부 및 외부 경로를 구분하도록 구성할 수 있다고 한다. 관리자는 데이터를 내부로 라우팅할지 아니면 외부로 라우팅할지를 결정하는 규칙을 설정할 수 있다. BGP는 자율 시스템 관리자가 자체 라우팅 정책을 구현할 수 있는 유연성을 제공한다.
- 네트워크 보안 계층 추가 - BGP는 네트워크 관리의 보안을 지원한다. 예를 들어 BGP는 사전 구성된 암호를 사용하여 라우터 간에 메시지를 인증할 수 있다고 한다. 관리자는 정상적인 자율 시스템에서 들어오는 BGP 메시지를 확인하고 무단 트래픽을 걸러낼 수 있다.
BGP 작동 원리
BGP는 피어링(peering) : “다운스트림” 사용자 간에 관리상 분리된 인터넷을 트래픽 교환을 위해 자발적으로 상호 연결하는 것이다.
*업스트림 : 클라이언트 → 서버 로 보내는 데이터 *다운스트림 : 서버 → 로컬 기기 데이터 흐름
관리자는 특정 라우터를 BGP 피어 또는 스피커 라우터로 할당한다.
(피어 : 자율 시스템의 엣지 또는 경계에 있는 장치)
- 경로 검색 - NLRI(Network Layer Reachability Information) 및 경로 속성을 통해 인접 BGP 라우터와 라우팅 정보를 교환한다. NLRI에는 인접 피어에 대한 연결 정보(지연 시간, 홉카운트, 전송 비용 등)가 포함된다. 정보 교환 후 각 BGP 피어는 주변 네트워크 연결의 그래프 구성 가능
- 경로 저장 - 위의 검색 프로세스 중 모든 BGP 라우터는 경로 알림 정보를 수집해 라우팅 테이블 형태로 저장한다. 라우팅 테이블을 사용해 경로를 선택하고 주기적으로 업데이트한다. (ex)BGP 라우터는 30초마다 인접 라우터로부터 연결 유지 메시지를 수신하고 그 메시지에 따라 저장된 경로를 업데이트한다.
- 경로 선택 - 저장된 정보를 사용하여 트래픽을 최적으로 라우팅한다.(당연함) 경로 선택의 주된 요소는 저장된 경로 그래프에 의해 결정되는 최단 경로. 여러 경로 선택지가 있을 경우 경로 속성을 순차적으로 비교해서 최상의 대상 선택.

iBGP와 eBGP
BGP session 관계를 맺는 AS 에 따라 타입이 나뉘며 서로 다른 특성을 가진다.
- internal BGP(iBGP) - 같은 AS 번호 아래에 있는 라우터와 BGP 관계를 맺거나 같은 BGP confederation(컨페더레이션)에 참여하고 라우터와 BGP 관계를 맺을 때. iBGP의 AD(Administrative Distance)는 200으로 라우팅 테이블에 표시된다. TTL의 기본값이 255이다. 이웃 관계를 맺을 때 루브팩 인터페이스 주소를 사용한다.
- external BGP(eGBP) - 서로 다른 AS 에 속해 있는 라우터간에 이웃 관계를 맺으면 eBGP가 된다. TTL의 기본값이 1이다. 멀티 홉 eBGP 이웃 관계를 맺기 위해 TTL값을 늘려줘야 한다. eBGP가 경로를 광고하면 local AS 번호가 추가된다. 수신한 경로 정보에 로컬 AS 번호가 포함되어 있으면 라우팅 루프라고 판단해서 해당 경로정보를 버린다. 이웃 관계를 맺을 때는 물리 인터페이스의 주소를 사용한다. AD는 20.

*BGP confederation : AS 내부에 사설 AS인 하위 AS를 생성해서 하위 AS 간에 eBGP 형식으로 연결하는 Fake eBGP로 하나의 공이 AS 를 구성하여 라우팅 루프를 방지한다.
*Administrative Distance : 서로 다른 두 라우팅 프로토콜에서 동일한 대상에 대해 둘 이상의 서로 다른 경로가 있는 경우 라우터가 최상의 경로를 선택하기 위해 사용하는 기능인 관리 거리이며 라우팅 프로토콜을 결정하는 데 사용하는 첫 번째 기준이다. 라우팅 정보 소스의 신뢰성을 측정하는 척도이다. 관리 거리는 로컬에만 해당하며 라우팅 업데이트에서는 알려지지 않는다.
BGP neighbor? network?
BGP를 설정할때 neighbor 와 network 를 지정해 주는데, 개인적으로 두가지가 초반에 헷갈렸다.
Neighbor : BGP neighbor 은 다른 BGP 라우터와의 관계를 나타낸다.
neighbor 관계를 맺은 두 라우터 간에 BGP가 설정되어 있어야 한다.
특정 neighbor 라우터의 IP 주소와 AS 번호를 정의한다. 그외에 BGP 버전, 연결 속성 및 세션 관리 등을 설정할 수 있다.
=> BGP 피어 간의 관계를 설정하고 유지하는 데 사용
Network : 자신의 AS에서 전파하려는 네트워크를 지정한다.
특정 네트워크를 BGP 피어에게 알리도록 하는 역할을 한다. (주로 Loopback 사용)
특정 네트워크와 그 네트워크를 라우팅하기 위한 BGP 정보를 BGP 피어에게 전송한다.
=> BGP가 어떤 네트워크를 전파할지 정의하는 데 사용
BGP Message (헤더)
Message 종류
- Open : BGP 피어 관계를 형성하는 메시지. tcp 포트 179번을 이용한 회선 연결 시도를 위한 메시지. 라우터 간 BGP neighbor 설정을 위해 사용한다.
- Update : 자신의 BGP 정보를 알려주기 위한 메시지. 메시지 하나 당 하나의 경로 정보만 포함한다.
- Notification : 기존에 광고했던 경로 정보에 문제가 발생한 경우 또는 neighbor 관계의 단절을 알려주는 메시지.
- Keepalive : BGP 피어 상태를 확인하기 위한 메시지. Hold-time (180초)동안 이 메시지를 수신하지 못하면 피어 관계를 끊는다. (ospf hello 패킷과 유사)

- Marker : 들어오는 메시지의 인증 및 상대 BGP 피어 간의 동기를 위해 사용한다. BGP Open 메시지이거나, 인증이 아닐 경우 모두 1로 채운다.
- Length : 공통헤더를 포함한 각 BGP 메시지의 길이 (19 ~ 4096 byte)
- Type : 위의 BGP 메시지 유형 중 하나를 표시한다.
BGP 설정하기

- 기본 라우터 설정 (아이피 할당, 포트 설정 등)
- AS 내부에서 IGP 라우팅 설정 (AS 경계의 시리얼 포인트 투 포인트 구간은 어느 AS에도 소속되지 않으며 BGP DMZ라고 한다.)
- BGP DMZ의 두 라우터에 eBGP 설정
- router bgp [AS number]
- bgp router-id [router id]
- neighbor [네이버 라우터의 아이피 주소] remote-as [네이버가 소속된 AS number]
- network [다른 라우터들에게 전송할 네트워크] mask [서브넷마스크]
- 해당 네트워크가 라우터에 접속된 것이 아니라도 network 명령어를 사용할 수 있지만 라우팅 테이블에는 반드시 저장되어있어야 한다.
- 위에서 나온 DMZ 네트워크는 BGP에 포함시키지 않는다.
- DMZ 네트워크의 라우터에 각각 디폴트 루트를 설정해서 설정한 IGP를 통해 내부 네트워크 방향으로 광고하도록 한다.
아래는 eBGP 설정 명령이다. 생각보다 간단하게 이웃을 맺을 수 있다.
<Router 0>
router bgp 300
bgp router-id 10.10.10.1
neighbor 10.10.10.2 remote-as 400
<Router 1>
router bgp 400
bgp router-id 10.10.10.2
neighbor 10.10.10.1 remote-as 300
'네트워크 > 라우터' 카테고리의 다른 글
Frame relay (0) | 2023.11.04 |
---|---|
PPP (Point to Point Protocol) (0) | 2023.11.04 |
CBAC (컨텍스트 기반 액세스 제어) (0) | 2023.08.06 |
Standard ACL, Extended ACL 실습 (0) | 2023.07.30 |
ACL (0) | 2023.07.29 |