BGP 이론 정리

Network/Routing & Switching|2019. 8. 29. 17:50
반응형

 

1차 작성 - 2019-09-03 막 작성하여 나도 보기 힘듦

 

 

 

1. BGP는 Loopback IP로 IBGP연결하는것을 권장 

    -> 이유는 Link가 Down되도 우회 Link만 있으면 장비Down이 아닌한 유지된다. 

    -> Loopback IP사용시 Update Source Interface를 명시해야한다. 

 

2. EBGP는 사업자간 이뤄지며, Peer-to-Peer 구성이 일반적이다. 

 

3. 우회경로가 존재하는것이 아니기 때문에 EBGP구성시 Physical Interface 주소를 사용한다. 

   -> 이 경우 Link Failure / None Failure 의 문제가 있다...는데 무슨말일까? 

 

4. BGP 상태변화는 총 5 + 1 과정이 있다. 

     - Idel : BGP Session 연결 시도 

     - Connect : Open_message 전송 

     - Open_Sent : Open_Message 수신(분석) -> Keep-alive 송신 

     - Open_Confirm : Hold Time 초기화 -> Keep-alive 송신 

     - Establish : BGP Table 버전 검사 / 변경이 있으면 Update -> Keep-alive 송신 

         상태가 숫자로 표시되기 도 함. 

 

     - Active : BGP Session 실패, 이름에 속지말자... 

 

5. Hello / Hold time : 60/180 (Default) --> 변경 가능 

       -> Hold time은 상대방과 동일하게 맞추지 않아도 동작한다. 

 

6. Keep-alive 또는 Update message가 오지 않으면 Neighbor Down으로 간주됨. 

 

 


Best Path 결정 방법

 

 

## Weight 를 이용한 방법 ## 

 

7. show ip bgp로 확인하였을 때, Weight는 라우팅되어 나가는 Out-going Interface를 결정할때 사용된다. 

   Neighbor에게는 전달되지 않는다. 

 

==> show ip bgp su 로 해당 IP가 지나가는 AS번호를 알 수 있다.  

 

8. Weight값은 높을수록 우선되며, Neighbor에서 배운 경로는 0, 자신이 생성한 경로는 32, 768을 갖는다. 

   ==> Default로 사용 할 경우 Local에서 생성한 경로를 더 우선한다. 

 

명령어 : (BGP 모드에서) neighbor [ip] weight [가중치 숫자값] 

 

 

## Preference 를 이용한 방법 ## 

 

9. Default : 100, 높은값을 우선한다. 

 

10. 이 값은 Weight와는 다르게 IBGP간에는 공유가 된다. ( AS 내부에서만 공유 가능 ) 

      --> 설정한 라우터의 Out-going Interface를 설정하는것이 아니라  

(IBGP로) Neighbor 맺은 라우터에게 자신의 우선값을 설정하는 것. 

 

명령어 : (BGP모드에서) bgp default local-preference [숫자] 

 

## AS-Path를 이용한 방법 ## 

 

11. AS-Path는 짧은것을 우선시한다. EBGP에서 라우팅 광고시, AS-Path를 추가하여 광고할 수 있다. 

 

12. 추가하는 AS는 자기 자신의 AS번호만 사용해야 한다!!( 주의! ) 

 

13. EBGP로 광고받은 Neighbor는 더 짧은 AS-Path를 가진 경로를 우선시하여 Routing 한다. 

 

명령어 : (BGP로 이동 후 ) set as-path prepend [AS번호] 

 

 

## Origin 값을 이용한 방법 ## 

 

14. Origin이란? 다양한 라우팅 프로토콜을 뜻하며, 재분배 명령어로 BGP에 경로를 추가할 수 있다. 

 

     - network 명령으로 입력한 정보는 bgp table에서 i(IGP)로 표시되며 가장 높은 Priority(1)을 갖는다. 

     - BGP 외의 EGP로 학습한 경로는 Priority(2)를 갖는데, BGP 외의 EGP는 없으므로 볼 수 가 없다. 

     - 재분배(redistribute)한 경우는 BGP가 OSPF인지 Static에서 배운건지 구별할 수 없어서 ?(Incomplete)로  

       표시되며 Priority(3)을 갖는다 

 

  우선순위 : network(1) > Another EGP(2) > Redistribute(3) 

  표시 : i (없어서 못봄) ?

 

 

 

    ## MED 값을 이용한 방법 ##

 

 

 

15. 보통 BGP Metric이라 하면 MED값을 말한다.

 

16. Local Preference와 달리 작은값을 우선시하며 또, EBGP간 교환된다.

 

17. MED를 수신받은 라우터는 같은 AS의 MED값만 비교한다.   

 

                   ( 강제로 비교하려면 "bgp always-compare-med"를 실행)

 

 

 

  명령어 : (BGP모드 접속 후)set metric [값] (Default : 0 )

 


 

 

     ## 네트워크축약 ##

 

18. EBGP로 수신된 Route정보를 축약할 수 있다.(Aggregation)

 

19. 라우터A에서 Aggregation후 EBGP로 연결된 라우터B로 전달할 경우,

 

     BGP Update의 ATOMIC_AGGREGATE 필드에 표시해줘야 하며 AGGREGATOR 필드에 라우터A를 표시

 

     ==> 이유는, 축약하게되면 축약 전 AS-path는 사라지게

 

 

 

     명령어 : (BGP모드 접속 후) aggragate-address [축약 네트워크] as-set summary-only

 

                                                                                 (필수-아래설명)

 

 

 

     확인 : show ip bgp [IP]

 

 

 

20. 라우터A가 라우터B에게 route정보를 보내주고, 라우터B는 이 정보를 축약하게되고,

 

     이것을 다시 라우터A에게 보내게 된다. 이 경우에 라우터A에 Loop가 발생하게된다.

 

이것을 방지하기위해서 사용하는것이 as-set 명령어이다.

 

 

 

21. as-set 사용시 show ip bgp의 path 항목에 {AS}로 표시가 되며 이것은 라우팅 경로선정에 영향을 주지 않는

 

     확인용으로만 사용된다.

 

     ==> path에 자신과 같은 AS가 표시되어있으면 BGP Table에 올리지 않는다. ==> 축약된 정보를 올리지 않음

 

     ==> Loop가 발생되지 않음 ==> 문제 해결

 

 

 

 

 

 

 

     ## Next-hop ##

 

 

 

22. EBGP Peer에게 NLRI(라우팅정보)를 전달할때 Next-hop에 자신의 Interface address를 써 주지만,

 

 

 

23 IBGP Peer에게 전달할 경우 Next-hop을 변경하지 않고 그대로 보냄.

 

 

 

24. 수신된 BGP 라우팅정보는 Next-hop address가 reachable하여야 유효하다.

 

         ==> Reachable 하지 않으면 Routing Fail 발생으로 이슈임.

 

 

 

25. 모든 Attribute값이 같으면 Next-Hop이 최단거리인 경로를 선택한다.

 

 

 

26. IBGP로 수신받은 경로의 Attribute값이 동일하다면, Next-Hop의 Routing경로가 짧은것을 선택한다.

 

 

 

27. IBGP에서 LoopBackup IP로 Neighbor를 맺고 있다면 NLRI의 Next-hop IP는 Peer의 Loop Back IP로 표시된다.

 

 

 

 

 

 

 

     ## Router-Reflector ##

 

 

 

28. IBGP로 연결된 Router 수가 증가면 논리적링크(IBGP)는 R(R-1)/2의 공식으로 생긴다.

 

                                                            ( 1, 3, 6, 10, 15, 21 로 급격히 증가하게 된다. )

 

 

 

29. 위와같이 급격히 증가되는 IBGP 연결 수를 줄이기 위해서 Router Reflector로 설정하면 현저히 줄어들게 된다.

 

 

 

                명령어 : ( BGP 모드에서 ) neighbor [RID] reoute-reflector-client

 

                             RR의 역할 : Client에게 자신이 알고있는 BGP 경로 정보 전달

 

                             Client 역할 : RR로부터 BGP 경로정보 수신

 

 

 

 

 

     ## Router Reflector Loop 방지 기법 ##

 

 

 

30. RR은 라우터 정보에 자신의 Router ID를 Originator_ID 속성에 추가한다. ( 이 속성은 AS 내부에서만 사용 )

 

 

 

31. RR은 자신의 Originator_ID와 동일한 Route정보를 수신하면 Routing Loop로 간주하여 Drop한다.

 

 

 

 

 

 

 

32. Cluster란 RR 및 그 Client 그룹을 말한다.

 

 

 

33. Cluster ID는 보통 RR의 Router ID로 사용한다. 

 

                        ( 여러개의 RR를 묶어서 하나의 Cluster로 구성가능하다. bgp cluster-id )

 

 

 

34. Cluster list에 cluster_ID를 추가하고, Route 수신시 동일한 ID 수신시 Drop한다.

 

 

 

35. Originator_ID : Cluster 내부 Loop 방지 기술

 

 

 

     Cluster_List : AS내부의 Cluster간 Loop 방지 기술

 

 

 

 

 

 

 

     ## AD값 리스트 ##

 

 

 

  36. Routing 우선순위는 AD & Preference값이 낮을수록 우선된다.

 

 

 

 

 

0 : Connected Interface

 

1 : Static Route

 

5 : EIGRP Summary route

 

20 : EBGP

 

90 : EIGRP(Internal)

 

100 : IGRP (거의 안씀)

 

110 : OSPF

 

115 : IS-IS

 

120 : RIP

 

140 : EGP(거의안씀)

 

160 : On Demand Routing(ODR) - 거의 안씀

 

200 : IBGP

 

255 : Unkown ( 테이블에 등록 안됨 )

 

 

 

 

 

 

 

     ## Synchronization 기능 ##

 

 

37. IBGP로 구성된 Router 사이에 Non-BGP Router가 껴있을경우, Black Holed 이슈가 발생한다. ( 라우팅이 없는 이슈 )

 

 

 

     - R1 에서 R3로 A라는 라우팅 정보 전달

 

     - R3는 내부 라우팅 프로토콜에 의해 A라는 라우팅정보를 R7에게 전달

 

              ( 중간 라우터들은 A라우팅 정보를 저장하지 않는다.)

 

     - R7에서 A 라우팅정보를 수신받은 R8은 A로 향하는 트래픽을 발생시킨다.

 

     - R6은 A에 대한 라우팅정보가 없기 때문에 해당 트래픽을 폐기한다. ( Black Holed )

 

 

 

38. 위의 이슈를 해결하기 위해 사용하는 것이 Synchronization 기능이며, NLRI 정보를 전달하기 전에

 

 

 

     IGP Table을 검사하여 해당 라우팅 정보가 없으면 해당 NLRI를 전파하지 않는다.

 

     (==> Black Holed 는 예방되나 라우팅 이슈는 여전하다. )

 

    

 

     해결방법 : BGP를 재분배한다.

 

 

 

39. 위의 38번 이슈를 해결하기위해서 Non-BGP Router에 BGP를 구성할 수도 있다.

 

     단, Syncronization 기능을 Disable하는것을 권장( IGP Table을 검색하거나 Convergence되는 Delay를 방지 )

 

 

 

40. Router의 오동작으로 인해 Link의 Up/Down이 반복될 경우 EBGP로 연결된 ISP의 Network에 불안정한 상태를

 

     초래할 수 있다.

 

     불안정한 상태를 유발시키는 Router에 Penalty를 주어 Route Advertise를 억제하는것을 Route Dampening.

 

        명령어 : (route-map에서) set damening [Half-time] [reuse-limit] [suppress-limit] [maximum-suppress-time]

        명령어 예시 : set damening 15 1000 2000 60

 

  • Half-time : 설정된 시간(분)마다 누적된 Penalty 값이 1/2로 줄어들음
  • reuse-limit : route가 재사용 될수있는 제한값. 증가됐던 Penalty값이 감소하여 Advertise될 수 있는 기준값
  • suppress-list : 누적된 penalty가 설정된 값에 도달하면 해당 route는 Dampening 됨. Advertise를 못하게 됨.
  • maximum-suppress-time : 아무리 Flap 현상이 지속적이여도 Suppress가 풀리는 시간. 통상 Half-time의 4배

 


여러가지 Filter

                                      

 

   ## Distribute-list ##

 

41. BGP로 연결되어있는 ( 다른 Protocol 도 가능 ) Neighbor에 특정 route가 Advertise되는것을 막기위해 사용하는 방법

42. ACL로 구성되며 ACL 작성 후 BGP( 다른 Protocol 도 가능 )에 적용시키면 된다.

 

  • access-list 100 deny ip 10.0.10.0 0.0.0.0 255.255.255.0 0.0.0.0
  • (BGP 접속 후) neighbor 2.2.2.2 distribute-list 100 out

  해당 ACL을 설정하면 10.0.10.0 에 대한 네트워크는 Advertise되지 않는다.

 

   ## Prefix-list ##

 

43. route 차단 용도로 특화됐으며, ACL보다 더 유연하고 성능이 좋다.

 

  • ip prefix-list test seq 5 deny 10.0.1.0/24
  • ip prefix-list test seq 10 deny 10.0.2.0/24
  • ip prefix-list test seq 15 deny 0.0.0.0/0 le 32
  • (BGP모드 접속 후) neighbor 2.2.2.2 prefix-list test out

 

해당 ACL을 설정하면 10.0.1.0 / 10.0.2.0 에 대한 네트워크는 Advertise되지 않는다.

 

 

 

   ## AS path Acess-list (Filter-List) ##

 

 

44. 특정 AS에서 오는 route 정보를 차단하고 싶을경우 AS-Path를 사용하여 해당 AS가 포함된 경로를 차단할 수 있다.

 

ip as-path access-list 1 deny ^333$

ip as-path access-list 1 permit .*

(BGP모드 접속 후) neighbor 2.2.2.2 filter-list 1 in

 

해당 as-path를 설정하면 설정한 AS번호의 route는 drop한다.  (위의 Advertise하지 않는것과는 다름)

 


   ## Route-Map ##

 

45. Route-map은 위의  여러가지 List를 외에도 다양한 조건을 설정할 수 있다.  ( 1단계 : Match 조건 설정 )

     ( 각종 List 작성 후 route-map에 적용 가능 )

 

46. Match 조건에 부합될 경우 동작 행위 설정 ( 2단계 : Set 설정 )

 

47. 설정한 route-map을 Neighbor에 적용 시키기 ( 3단계 : Neighbor에 적용 )

 

     route-map은 조건문이라고 생각하면 된다.


BGP Convergence

 

     ## Timer 종류 ##

 

48. TCP_179 를 사용하여 통신함

49. Keep-alive time 마다 Message를 보내 연결을 유지함

50. Update-time : 설정된 시간마다 새로운 정보를 전송한다. ( Default : IBGP : 5초/EBGP : 30초 )

51. Scan Time : 정확한 정보 유지 및 전달을 위해 BGP Table, Routing Table, next-hop검사를 진행한다(Default : 60초 )

                     CPU에 부하가 증가할 수 있으니 적절하게 설정해야 한다.

 

52. Hold-Down Timer : 일정시간동안 Keep-alive Message가 오지 않으면 Peer Down으로 판단. 

 

 

 

     ## Graceful Restart ##

 

53. Control Plan을 restart하여도 Data Plan은 영향받지 않고 패킷처리를 계속하는 방식

      BGP Session : Control Plan

      Data Path : Data Plan

 

54. BGP Session은 새로 맺어지지만 패킷처리는 이상없다.

 

관련 명령어

  • enable graceful-restart bgp ( Default : enable )
  • bgp graceful-restart time 100 ( Default : 100s  / Restart 후 세션을 새로 맺을때 까지 peer에서 기다려주는 시간)
  • neighbor 2.2.2.1 capability graceful-restart ( Neighbor에게 Graceful restart 기능을 지원한다는것을 알려줌)

           bgp graceful-restart time 가 지나기 전에 BGP 세션 연결이 돼야한다.

 

 

 

 

 

 

 

 

반응형

댓글()