BGP 프로토콜(개념 및 기본설정)

넥떡-쟁이·2025년 11월 10일

BGP

목록 보기
1/10

BGP 프로토콜이란 ?

BGP
서로 다른 AS(그룹)사이에서 사용되는 라우팅 프로토콜
일반 네트워크를 두 개 이상의 ISP와 동시에 접속 할때 BGP사용
멀티캐스트 방식 IGP와 달리 BGP는 유니캐스트 방식으로 라우팅 정보를 전송한다
또한 기존 라우팅과 달리 TCP 179번이며 TCP세션을 이용하여 BGP정보를 업데이트를 진행한다
인접한 장비가 아니여도 TCP세션만 주고 받을 수 있는 환경이라며 BGP라우팅을 사용할수 있다

기존 라우팅과의 차이점

  1. IGP는 하나의 조직이 (자신의 IGP) 전체를 관리한다.
    따라서 라우팅 정책을 다른 조직에 구애받지 않고 자유롭게 설정할수 있다.

  2. BGP는 수많은 AS로 구성되어 있고, 그 중의 하나인 해당 조직의 AS에서 라우팅 정책을 설정하여
    라우팅이 이루어지게 해야 한다

  3. EBGP
    인접한 BGP 라우터들 BGP 피어 또는 네이버라고 한다
    다른 AS에 속한 네이버를 EBGP라고 한다

  4. IBGP
    동일한 AS에 속하는 네이버를 IBGP 네이버 또는 IBGP피어라고 한다

기본 BGP 설정

테스트 구성도

#### EBGP 설정
R1설정
!
router bgp 1 //BGP AS번호

bgp router-id 7.7.1.1 //BGP-라우터 ID

bgp log-neighbor-changes


network 7.7.1.0 mask 255.255.255.0 //BGP를 통해 다른 라우터에게 전송할 네트워크 지정
				    //서브넷 되지 않은 네트워크 지정 시 MASK 옵션을 사용 할 필요 없음
                                    //BGP로 설정 할 네트워크 주는 반드시 해당 장비 라우팅 테이블에는 있어야 된다 

				    
neighbor 7.7.12.2 remote-as 234 EBGP  //네이버의 IP 주소와 해당 네이버의 AS번호를 지정
				      //EBGP 네이버 지정할때 사용하는 IP주소는 특별한 경우가 아니고는 
                                      //네이버와 직접 연결된 넥스트 홉 IP주소를 사용한다.				    
				      //IGP랑 달리 BGP 반드시 네이버를 수동으로 지정해줘야된다.     
				                                  
!

R2 라우티 테이블

R1과 BGP 네이버 관계를 맺어 R1의 루프백 IP주소를 BGP라우팅으로 업로드 되는 부분을 확인할수 있다.

IBGP 설정
#### R2설정
!
router bgp 234
 bgp router-id 7.7.2.2
 bgp log-neighbor-changes
 network 7.7.2.0 mask 255.255.255.0 //IBGP 네이버를 지정할때는 보통 루프백 주소를 사용한다(사용이유:네이버 이중화 위해)
 neighbor 7.7.3.3 remote-as 234
 neighbor 7.7.3.3 update-source Loopback0 //상대 라우터와 네이버를 맺기 위하여 전송하는 메세지에 현재 라우터의 주소로 Lo0인터페이스 주소를 사용하게 한다
 neighbor 7.7.4.4 remote-as 234
 neighbor 7.7.4.4 update-source Loopback0
 neighbor 7.7.12.1 remote-as 1
!

#### R3설정
router bgp 234
 bgp router-id 7.7.3.3
 bgp log-neighbor-changes
 network 7.7.3.0 mask 255.255.255.0
 neighbor 7.7.2.2 remote-as 234
 neighbor 7.7.2.2 update-source Loopback0
 neighbor 7.7.4.4 remote-as 234
 neighbor 7.7.4.4 update-source Loopback0
!

#### R4설정
router bgp 234
 bgp router-id 7.7.4.4
 bgp log-neighbor-changes
 neighbor 7.7.2.2 remote-as 234
 neighbor 7.7.2.2 update-source Loopback0
 neighbor 7.7.3.3 remote-as 234
 neighbor 7.7.3.3 update-source Loopback0
!

R2에서 R3, R4
R3에서 R2, R4
R4에서 R2, R3
IBGP 네이버로 지정하였다.
동일 AS에 모든 BGP라우터 IBGP로 지정하는 것은 완전 메시 방식이라고 한다.

R1라우팅 테이블

R3라우팅 테이블

R4라우팅 테이블


루프백 인터페이스 네이버 IP로 사용시 강점

물리 인터페이스의 IP로 네이버 관계를 진행할 수 있지만 해당 인터페이스가 다운시 네트워크가 끊겨지는 문제가 생겨
이에 해당 경우를 방비하기 위해 루프백 인터페이스를 사용한다 그러면 위처럼 네이버 이중화 구성하여 한쪽 네트워크가 끊겨도 문제 없이 네트워크 통신을 할 수 있다.

BGP 테이블

OSPF 및 EIGRP 토폴로지 데이터베이스 같은 BGP 테이블을 유지한다.
1.네이버로부터 BGP라우팅 정보를 수신
2.수신 후 입력 정책 적용
3.적용 후 BGP 테이블에 저장
4.저장 후 BGP 테이블에 저장된 경로 중 최적의 경로를 선택
5.경로 선택 후 다른 라우팅 프로토콜과 AD 값을 비교 후 테이블에 반영
6.BGP 테이블에 있는 네트워크에 출력 정책을 적용
7.출력 정책 적용 후 인접 라우티에게 라우팅 정보를 전송한다

R2#show ip bgp 
BGP table version is 7, local router ID is 7.7.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, 
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
              x best-external, a additional-path, c RIB-compressed, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  7.7.1.0/24       7.7.12.1                 0             0 1 i
 *>  7.7.2.0/24       0.0.0.0                  0         32768 i
 r>i 7.7.3.0/24       7.7.3.3                  0    100      0 i
 r>i 7.7.4.0/24       7.7.4.4                  0    100      0 i
 table version is 5 : 소규모망에서 버전이 높을수록 네트워크가 불안정하다는 의미
*>(최적의 경로)
r>i(최적의 경로이나 다른 라우팅프로토콜에 우선순위 뺏김)
#IGP들은 AD경쟁에서 탈락하여 본인들 라우팅 프로토콜 인스톨시키지 못하면
   인접 라우터에게 광고하지 않는다
r>i(i는=IBGP를 의미한다)

BGP 동기 (IBGP를 구성하는 장비들 알아야 한다.)

기본적으로 BGP가 동작할려면
1. BGP와 IGP의 동기화 넥스트 홉 통신 및 스플릿 호라이즌 문제가 해결되어야 한다
2. BGP 동기화란 BGP가 알고 있는 네트워크를 IGP도 알고 있어야 한다
3. IBGP로 광고받은 네트워크는 IGP(그룹 장비들)가 확인해줘야지 사용(라우팅 테이블 저장 및 네이버에게 정보를 보냄)할수 있다.
(IGP 그룹간에 장비들에게 BGP라우팅 테이블이 있어야 한다)
4. 인접 라우터간에 동일한 프로토콜이 동작하는 IGP와는 달리 BGP는 인접 라우터에 설정하지 않을때도 많다

특정 라우터에서 BGP를 동작시키지 않을 겨우

R1---->R2---->R3---->R4
포트IP=7.7.12.1
루프백IP=7.7.1.1

BGP 프토토콜 활성화:R1,R2,R4

1.R1이 7.7.1.0/24 네트워크에 대한 정보를 R2에게 전송 R2는 이것을 R4로 IBGP로 전송한다

2.R3은 패킷의 목적지인 R4로 라우팅만 시킨다.

3.R4는 7.7.1.0/24 네트워크의 넥스트 홉은 7.7.12.1로 전달 받음

4.하지만 앞단에 R3가 BGP를 참여하지 않아 7.7.1.0/24네트워크 및 해당 넥스트홉이 7.7.12.1 몰라서 통신이 안된다.
앞단 인접 장비가 7.7.1.0/24에 대한 네트워크 경로가 없어 해당 라우팅은 폐기처리가 된다
(IGP 장비들은 어떻게든 경계 EBGP L3급 이상 장비까지 도달을 해야지 통신을 진행할수 있다.)


BGP 동기화 해결 방법

3가지 방법

  1. no sync 명령어 사용
  2. BGP를 IGP에게 재분배
  3. 컨퍼레이션 사용

1. no sync 명령어

BGP로 동작하는 라우터가 연속되어 있다면 BGP 동기 법칙을 적용하지 않아도 된다
모든 라우터가 BGP 동작함으로 특정 네트워크에 대한 정보를 모르는 경우가 없을 것이다
no synchronization 명령어를 사용하여 BGP 동기 법칙을 적용시키지 않을 수 있다.

2. BGP를 IGP에게 재분배

BGP 동기화 법칙이 문제가 되는 네트워크는 주로 외부 AS에서 광고받은 것들이다.
IBGP로 광고받은 네트워크는 IGP가 확인해주어야만 사용할수있다.
BGP동기법칙을 만족시키는 방법 중 하나
외부AS와 연결되는 경계 라우터에서 BGP를 IGP에게 재분배하는 것이다
이렇게되면 외부 AS1에서 광고받은 7.7.1.0/24 네트워크가 EIGRP로 재분배되며
해당 네트워크를 IGP인 EIGRP를 통하여 받을 수 있어 BGP동기 법칙이 만족한다

R3라우팅 테이블

R4라우팅 테이블

3. 컨페더레이션을 이용한 BGP 동기화

  1. 쓰는이유:IBGP+IGP가 서로 동기화를 해야지만 사용할수 있음 동기화 법칙때문에 이러면 AS내부 관리가 힘들어짐 변화하는 넥스트홉 등등)

  2. 컨페더레이션 하나의 AS를 다시 서브 AS로 분할하여 설정하는 것
    (하나의 AS안에서 다시 여러개의 AS로 쪼개는 것이다)
    이때 BGP 동기 법칙은 적용이 안된다
    왜냐 IBGP 네이버가 EBGP네이버로 변경되기 때문이다
    AS내에서 EBGP사용할수 있는 라우팅 정책을 적용할수 있어 컨페더레이션을 사용한다

  3. 외부 AS에서는 컨페더레이션의 존재를 알지 못함(하나의 AS로 보여짐)
    컨페더레이션 내부 AS안에서 EBGP로 연결이 된다

  4. 컨페더레이션 외부에서 광고받은 네트워크의 넥스트 홉은 전체 컨페더레이션을
    통과할 동안 바뀌지 않는다. 즉, 서브 AS간에서는 변경되지 않는다.

설정 명령어


router bgp 65002 //사설BGP 서브 AS 외부로 전달안됨
 bgp router-id 7.7.2.2 //라우터-ID
 bgp log-neighbor-changes
 bgp confederation identifier 234 //원래 AS번호 지정한다
 bgp confederation peers 65003 //인접 한 AS번호 입력 또는 여러개의 서브 AS입력(인접한)
 network 7.7.2.0 mask 255.255.255.0 
 neighbor 7.7.3.3 remote-as 65003//인접한 서브AS와 네이버 설정할때 사용
 neighbor 7.7.3.3 ebgp-multihop 2//서브AS간에도 EBGP로 동작하기때문에 루프백 주소를 사용
 								/ebgp-multihop 루프백 또는 인접하지 장비랑 EBGP세션 맺을때 사용
                                /넥스홉 장비 수대로 입력
 neighbor 7.7.3.3 update-source Loopback0
 neighbor 7.7.12.1 remote-as 1 //외부AS 네이버 지정
!

R2설정

R3설정

R4설정

R3 BGP테이블 및 라우팅 테이블


BGP테이블에서 7.7.1.0/24 네트워크가 베스트 경로 잡혀있다.
동기화 법칙이 만족했다.

R1 라우팅 테이블


R1 외부 BGP AS1 장비인 R1에서 라우팅 테이블을 확인해보면 IBGP 서브 AS번호가 보이지 않는다.

루프백 주소를 24비트로 전송해야 하는 이유

BGP는 본인 라우팅 테이블에 있는 네트워크에 대해서만 라우팅 정보를 전송할 수 있다.
BGP모드에서 netwok 명령어를 이용하여 네트워크를 지정해두 안됨
무조건 라우팅테이블에 그 네트워크 존재하지 않는 한 전송이 안됨
아래 라우팅 테이블을 보자
7.7.3.3/32
7.7.4.4/32
OSPF IGP라우팅 프로토콜에서는 /32로 등록이 되어 있다.
BGP에서 /24홍보를 하고 싶어도 라우팅테이블에 해당 네트워크의 /24가 없어서 죽어도 안된다

위사진처럼 R2의 라우팅 테이블 7.7.3.0/24, 7.7.4.0/24에 대한 IGP라우팅 테이블 정보가 없어서 BGP에서 24비트로 홍보를 하고 싶어도 본인 라우팅 테이블에 존재하지 않아 BGP 홍보가 안된다
이에 OSPF IGP를 사용 시 루프백 인터페이스에다가 ip ospf network point-to-point 명령어를 적용시켜주자!

BGP경로결정 우선 순위

IGP는 광고받은 네트워크중에서 매트릭 값이 작은 경로를 선택하여 라우팅 테이블에 저장
그러나
BGP는 광고받은 광고받은 네트워크들의 속성을 혼합하여 하나의 값으로 변환하여 비교하지 않는다.
대신 속성들을 차례로 비교해 나간다
BGP는 넥스트 홉으로 가는 경로를 알고 있고, 동기 문제가 해결된 네트워크에 대해서만 다음과 같이 속성을 비교하여 결정한다


1)웨이트가 가장 큰 경로
2)로컬 프레퍼런스가 가장 큰 경로
3)현재의 라우터가 BGP에게 포함시킨 경로(network명령어나 redisσibute 명 령 어 를 사용한 경로가 aggregate- address 명령어를 사용한 경로보다 우선한다)
4)AS 경로 길이가 가장 짧은 경로 (bgp bestpath as-path ignore 명령어 를 사용하면 이 단계를 무시 한다)
5)오리진 코드 비교(I>E>?>)순으로
6) MED가 가장 작은 경로
7) eBGP로 받은 경 로
(iBGP 경로보다 우선한다)
8) BGP 넥스트 홉까지 IGP 메트릭이 가장 작은 경로
9) maximum- paths 명령어로 부하 분산을 하도록 설정되어 있으면, 최대 개까지의 경로를 모두 저장
10) 비교 대상 경로가 모두 외부 경로인 경우, 먼저 광고받은 경로
(bgp bestpath compare-routerid 명령어를 사용했거나, 동일한 네이버에게서 수
신한 경로일 때에는 이 과정을 무시한다)
11) 라우터 가 가장 낮은 네이버로부터 수신한 경로
(루트 리플렉터를 사용하는 경우, 라우터 ID 대신 오리지네이터 ID가 가장 낮은 경로)
12) 루트 리플렉터를 사용하는 경우, 클러스터 리스트 길이가 가장 짧은 경로
13) BGP 설정시 neighbor 명령어에서 사용한 네이버 IP 주소가 가장 낮은 경로

profile
겸손, 감사, 사랑, 열정, 즐거움 같이 웃어요

0개의 댓글