BGP 이론 정리
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 세션 연결이 돼야한다.
'Network > Routing & Switching' 카테고리의 다른 글
BGP 재 연결 작업 (0) | 2020.03.04 |
---|---|
OSPF를 공부하고 간략 정리 ( 정리 중) (0) | 2020.01.26 |
BGP 완전 기초 실습 ( 정리가 끝나면 순서 변경할 예정 ) (0) | 2019.12.04 |
다시공부하는 STP(RSTP) - 수정중 (0) | 2019.12.02 |