본문 바로가기
네트워크

[IP Routing 개정 4판] BGP 2번째

by Lauren X Ming 2022. 1. 2.

스플릿 호라이즌(아래 자세한 설명 있음)

- 간단하게 말하면, A 에서 받은 정보를 A 로 광고하지 않는다.

- A는 인터페이스일수도, peer 일수도 있음. 

 

iBGP의 스플릿 호라이즌

  ㅇ IBGP를 통해 습득한 루트는 다른 IBGP Peer Router에게 전달하지 않는다는 규칙

  ㅇ BGP는 Routing Loop를 허용하지 않기 위하여,
     - AS 내부 모든 BGP 라우터가 Full-Mesh(그물망) 형태로 연결됨

참고 : http://www.ktword.co.kr/test/view/view.php?m_temp1=2489 

 

### 스플릿 호라이즌이 필요한 이유?????

참고 : https://url.kr/aof1bn

라우팅 테이블 업데이트

- 받았던 인터페이스로 받은 정보를 다시 줌

링크 다운

- 받았던 인터페이스로 받은 정보를 다시 던짐

- 실제로 가는 길은 없는데, 가는 길이 있다고 생각해서 루핑 발생

이를 해결하기 위해서 스플릿 호라이즌 사용

 

<해결방법>

1. 스플릿 호라이즌

- 받은 정보를 받았던 정보를 받은 인터페이스로 다시 내보내지 않음

2. Poison reverse(Route poisoning)

- 링크가 다운되면 무한 홉(홉 수 : 16)으로 광고함

- 받은 정보를 받은 쪽으로 다시 광고하기는 함

- Poison reverse와 Route poisoning이 다르긴 하는데.... 뚜렷하게 다른 점을 잘 모르겠음..ㅠㅠ

 

iBGP의 스플릿 호라이즌 문제

- R2->R3-X->R4

- iBGP peer에서 받은 정보를 다시 iBGP peer에게 전달하지 못하기 때문에 R4는 R1으로 못감..

 

iBGP의 스플릿 호라이즌 문제 해결하기

1. full mesh

- R2-R4간도 연결해줌

- 라우터가 많아지면 설정이 너무 길어져서 큰 망에서 사용하지 않음..

 

2. Route Reflector(RR)

- IBGP 스플릿 호라이즌 규칙이 적용되지 않는 라우터

- 특정 라우터 RR로 지정

- RR의 neighbor 중 RR client 지정

     -  RR client는 스플릿 호라이즌 적용하지 않음

이건 별표 5개라서 실습...

이전 설정 : https://junior-developer.tistory.com/98?category=831807 

# R2, R3, R4는 bgp 설정 삭제

conf t
no router bgp 234

# R2

!
router bgp 234
   router-id 1.1.2.2
   neighbor 1.1.3.3 remote-as 234
   neighbor 1.1.3.3 next-hop-self
   neighbor 1.1.3.3 update-source Loopback0
   neighbor 1.1.12.1 remote-as 1
   network 1.1.2.0/24
!

- next-hop-self는 eBGP에서 받은 정보를 iBGP로 보내주기 위해서 사용함. 

* next-hop-self 보충 설명

위 사진에서 R2는 R1에서 받은 eBGP 정보를 R3에게 넘김

-> 정보 : 1.1.1.1을 1.1.12.1에서 받았다

-> R3는 1.1.12.1이라는 정보를 모름

-> 그래서 R2는 next hop을 알려줄 때, 자신으로 바꿔서 알려줌!!!!

# R3

!
router bgp 234
   router-id 1.1.3.3
   neighbor 1.1.2.2 remote-as 234
   neighbor 1.1.2.2 update-source Loopback0
   neighbor 1.1.4.4 remote-as 234
   neighbor 1.1.4.4 update-source Loopback0
   network 1.1.3.0/24
!

- show ip bgp 1.1.1.0/24를 하면,R2에서 iBGP로 광고받은 1.1.1.0에 대한 정보가 있음.

   ->  R1에서eBGP로 광고한 정보를, 다시 R2에서 iBGP로 광고

# R4

!
router bgp 234
   router-id 1.1.4.4
   neighbor 1.1.3.3 remote-as 234
   neighbor 1.1.3.3 update-source Loopback0
   network 1.1.4.0/24
!

- R3에서 iBGP로 광고받은 것을 다시 iBGP peer에게 광고하지 않기 때문에 R4에서는 1.1.1.0에 대한 정보가 없음.

이를 해결하기 위해 RR 사용

- R3를 RR로 지정 -> R2, R4를 RR client로 지정

# R3

!
router bgp 234
   neighbor 1.1.2.2 route-reflector-client
   neighbor 1.1.4.4 route-reflector-client
!

- R3에서 route-reflector 설정을 하면, R4에서 R1으로 가는 경로 생김

 

# route reflector 용어 정리

Route Reflector
- BGP split horizon 규칙의 적용을 면제 받은 라우터
- iBGP로 받은 정보를 iBGP로 전송 가능

Route Relector Client
- Route Reflector 의 neighbor 중 route-reflector-client 명령어로 지정된 라우터

nonclient
- Route Reflector 의 neighbor 중 Route Relector Client이 아닌 라우터

cluster
- Route Relector 와 Route Relector Client의 집합

cluster ID
- cluster의 ID
- 복수 개의 Route Reflector를 하나의 클러스터로 묶고 싶으면 bgp cluster-id를 사용하면 됨

cluster list
- 특정 경로가 통과해온 클러스터의 ID 리스트가 클러스터 리스트
- Route Reflector는 iBGP로 수신한 정보를 iBGP 라우팅 정보를 보낼 때 cluster id를 첨부함
- 외부에서 정보를 받았는데 자신이 속한 cluster id가 포함되어있다면, 라우팅 루프가 발생한 것이므로 무시함

 

RR로 인해 라우팅 루프가 발생한다면??

참고 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=kwi3094&logNo=120044825758

Originator ID

- 하나의 cluster에서 루프 방지

1. R1 -> R2로 정보 전달(eBGP)

2. R2 -> R3로 R1의 정보 전달(iBGP)

3. R3 -> R4(R3의 RRC)로 R1의 정보 전달(RR)

4. R4 -> R2(R4의 RRC)로 R1의 정보 전달

5. R2 -> R3(R2의 RR)로 R1의 정보 전달... 계속 반복

-> Originator ID로 구분

(해결방법)

1. R2 : R1의 정보를 eBGP로 받으면 자신의 router id를 originator id로 적어서 R3한테 보냄

2. R3는 자신의 router id와 originator id와 비교해서 다르기 때문에 다른 곳에 전달

3. R4도 R3와 마찬가지

4. R2는 R4에서 받은 정보의 originator id가 자신의 router id이기 때문에 폐기

 

Cluster ID 

- 다수의 cluster에서 루프 방지

 

# route reflector 의 라우팅 정보 수신

1. eBGP neighbor에게 수신한 정보는 자신의 iBGP neighbor에게 전달

2. nonclient에게 전달받은 정보는 자신의 neighbor 중에 client에게만 전달

3. client에게 받은 정보는 자신의 모든 neighbor에게 전달