BGP는 어느 라우팅 프로토콜보다 정책적인 측면이 강하다는 것은
여태까지 설명했던 여러 내용을 바탕으로 이해하셨을 것이라 이해합니다.
그렇다면 '정책이 필요할만큼 큰 규모의 네트워크에서 많이 사용한다'라고도 이해할 수 있을 것입니다.
아마도 peer-group을 통해서 일부 Neighbor에 일괄적인 정책을 설정하는것은 많이 해보셨을겁니다.
이것만으로도 BGP section 내에 많은 config가 줄고, 가독성이 좋아졌을거라고 생각합니다.
단지 Peer-group만으로는 일부 기능을 제공하기 어려워 만들어진 template(session, Policy)기능이 있고,
적재적소에 사용한다면, 더욱 가독성있고 유연한 BGP configuration이 가능하지않을까싶어 소개를 하고자 합니다.
그럼 시작하겠습니다.
1. Peer-group의 정의 및 한계
정의를 살펴보자면 동일한 정책을 공유하는 BGP neighbor을 그룹화 할 수 있는것이 Peer-group입니다.
장점으로는 단순화된 구성과 효율적인 업데이트가 가능한데, 이는 업데이트에 생성에 필요한 시스템 리소스(CPU & Memory)의 양을 줄이는 부가적인 효과도 가져올 수 있습니다.
동일한 Peer-group이라면 default-originate 등 Peer 기준으로 처리되는 Config를 제외하고, 동일한 정책을 공유합니다.
그리고 iBGP와 eBGP는 별도의 Peer-group을 분리해야한 합니다.
RR에서 Client에 동일한 정책을 묶거나 Full-mesh 환경의 iBGP에서 연결된 Peer에 똑같은 정책을 적용한다 했을때,
효과적인 설정 방법이라고 생각합니다.
그렇지만 이런 일관된 정책을 가져가는것에도 한계가 있습니다.
이 경우를 생각해보시죠.
우리는 인터넷 서비스 제공자 즉, ISP이고 PE에서 다수의 Customer와 BGP를 연동해야하는 상황이죠.
물론 PE도 P나 RR과 iBGP를 연결해야하는 상황이라면 Peer-group을 통한 Config가 효율적이지만,
PE와 CE간 은 어떨까요?
CE가 가지고 있는 ASN도 모두 다를뿐더러, CE측에서 Password 설정과 같은 인증 Config 등 customizie가 필요한 상황이라면,
Peer-group을 통해 해결이 가능할까요?
아니죠.
Peer-group은 연결된 모든 Peer에 같이 적용되는 설정이라, 적용하는 순간 Peer-group에 속한 모든 Peer 설정이 바뀌면서,
심각한 서비스 다운이 발생할 겁니다.
2. Peer-template
Peer-template 은 위와 같이 Peer-group으로는 해결하지 못하는 상황에서 사용하기 위한 한가지 방법이며,
저는 개인적으로는 '확장판'이라고 생각합니다.
* ACL과 Prefix-list같은 관계라고 생각하면 이해하기 편하실 겁니다.
그 이유는 아래 그림을 보면서 설명하겠습니다.
Template에는 상속(Inherit)의 개념이 적용됩니다.
위 그림상 'iBGP 공통 Config'와 'eBGP 공통 Config'는 '공통 BGP config'를 상속하고 있습니다.
그렇다면 'iBGP 개별 Config' 로 만들어 놓은 Template이 'iBGP 공통 Config'를 상속받는다면,
'공통 BGP config'까지 적용되는겁니다.
*제가 굉장히 간단하게 도식화해서 그려놓았지만 실제 현장에서는 더 세분화해서 적용해놓을겁니다.
만약 사전에 정의해놓은 config를 다른 값으로 변경해야하는 상황이라면, 개별 Config를 적용하는 Template에 특정값을 기입하여,
상속받은 내용을 Overwrite할 수 있기때문에, '공통 BGP Config' template의 내용은 수정할 필요가 없습니다.
예를 들어, 'iBGP 공통 Config'에 timer값을 60 180으로 설정해두었는데,
특정 iBGP peer는 timer값을 줄여 조금 더 민감한 Network 환경을 구성하고 싶다고 가정했을때,
'iBGP 공통 Config' template의 timer값은 60 180일지라도, 'iBGP 개별 Config'에서 timer의 값을 5 15로 변경한다면 반영되는것이죠.
따라서 자주 쓰는 설정들을 모두 반영한 공통 Template을 적용해놓고, Customize한 개별 Template을 설정한다면,
유연하게 peer에 대한 설정을 변경하여 적용할 수 있는것이죠. (ISP 혹은 MPLS 사업자에 최적화된게 아닐까 싶습니다)
*미리 설명을 드렸어야 했는데 이제야 언급을 하네요.
Template은 2 종류로 나뉘어집니다.
-. session-template
-. policy-template
각 항목별 지원 가능한 Command 목록은 아래와 같습니다.
Session Template | Policy Template |
description | advertise-interval |
disable-connected-check | allowas-in |
ebgp-multihop | as-override |
fallover | capability |
local-as | default-originate |
password | distribute-list |
remote-as | dmzlink-bw |
shutdown | filter-list |
timer | maximum-prefix |
translate-update | next-hop-self |
transport | next-hop-unchanged |
ttl-security | prefix-list |
update-source | remove-private-as |
version | route-map |
route-reflector-client | |
send-community | |
send-label | |
soft-reconfiguration | |
soo | |
unsuppress-map | |
weight |
하나씩 살펴보겠습니다.
* session-template
위에 도식화된 그림을 통해 설명했던 내용은 session-template에 대한 내용입니다.
1개의 session-template내에는 1개의 session-template만 상속될 수 있으며,
몇 개까지 상속되는지는 장비 모델이나 OS version에 따라 다를 수 있어, 특정 갯수까지만 상속이 가능하다라고만 하겠습니다.
우리가 흔히 쓰는 파일 시스템을 예로 들어보면, 상속을 따라가다가 나오는 마지막 Template이 Root라고치면,
하위로 하나씩 내려가면서 비어있는 파일은 추가, 이미 있던 파일은 Overwrite되는 방식이죠 .
상단에 예에선 '공통 BGP Config'가 'Root'가 되고, 하나씩 내려오는겁니다. (상속을 거슬러 조상님부터 적용하며, 현재로 내려오는 느낌)
* Policy-template
용어 그대로 Policy(정책)에 대한 Template이고, 이는 session과 유사하지만 조금 다른 부분이 있습니다.
상속이 가능한 부분은 유사하지만, 1개의 Policy-Template내에 여러개의 Policy-Template을 상속받을 수 있습니다.
하나의 Policy-Template 내에 여러개의 Policy-template을 상속받을 때,
어떤 Policy-Template이 먼저 적용이 되고, 어떤 Policy-Template이 나중에 적용되어
기존의 내용을 Overwrite할지 순서가 정해져야만 합니다.
이를 위하여, policy-template에서는 상속받는 policy-template에 Sequence가 붙습니다.
1-65535 사이 값을 지정할 수 있으며, 낮은 값일수록 먼저 적용되고, 높은 번호일수록 뒤에 적용되어 사전에 설정된 내용을 Overwrite할 수 있습니다.
아래와 같이 Policy-template의 그림을 한번 더 그려보았습니다.
대략적으로 그려봤고, 제일 왼쪽에 있는 'BGP 개별 config' 또한 Policy-template입니다.
이제 적용되는 순서를 한번 나열해 보겠습니다.
1. Sequence가 1인 Template을 적용하려고 찾아감
2. Sequence가 1인 Template에서 상속받는 Template이 있어, 다시 찾아가고 Weight 32768을 적용
3. 빠져나오면서 allowas-in 설정 추가 적용
4. Sequence 2번, as-override 설정 추가 적용
5. Sequence 3번, Next-hop-self 설정 추가 적용
6. Sequence 4번, Weight 설정이 이미 32768 적용되어있었지만, Sequence 4번 Template으로 인해 weight 10으로 overwrite
session-template과 마찬가지로, 몇개까지의 policy-template이 적용되는지는 장비 모델별, OS version별로 다를거기 때문에,
사전에 벤더를 통하여 Capacity를 확인해보는것도 좋은 방법입니다.
3. Peer-template의 단점
단점은 당연히 있습니다.
우선 동일한 Config를 설정해야하는 Peer가 지속적으로 추가되는 경우, Peer-group이 더 낫습니다.
동일한 Config인데 굳이 template을 활용하기 보다는 Peer-group으로 일관된 정책을 가져가는것이 훨씬 가독성있고 좋습니다.
예를 들면, RR과 RR-client 사이의 iBGP에서 Peer가 지속적으로 꾸준히 늘고 있는 상황이라 했을때,
굳이 기존의 iBGP peer와 신규로 추가되는 Peer간 설정이 다를 필요가 없습니다.
고로 template을 활용하면 오히려 가독성이 떨어질 수 있습니다.
또한 정밀하게 policy/Session template을 설계하지않는 이상, 기존보다 가독성 및 활용성이 떨어질 수 있습니다.
Session에서는 수직적 구조를, Policy에서는 수직/수평적 구조를 제대로 설계해야만,
추후 신규 Peer 연결 시, 소요되는 Effort를 줄일 수 있다고 생각합니다.
그리고 간단하게 해본 결과, Peer-group과 template은 같이 쓸 수 없었습니다.
두개를 같이쓴다면 더욱 간결하게 Config를 짤 수 있을것 같았는데, Peer-group에는 Template을 적용할 수 없었습니다.
====================================================================================
맺으며.
Template이 복잡하면 복잡할 수록 가독성이 떨어지는건 당연해지는지라,
BGP 내부의 Config을 입력받아, 각 Peer에 설정된 내용을 가독성있게 풀어주고,
어떤 Template이 어떻게 상속되고있는지 설명해주는 프로그램이 있으면 편하겠다 생각했습니다.
이에 한번 틈틈히 만들어 보고 괜찮은게 나오면 공유하도록 하겠습니다.
Template에 대한 LAB은 다음번 포스팅에 진행하도록 하겠습니다 !
'Network 모험기' 카테고리의 다른 글
[#3-10]BGP template 실습편 (0) | 2024.12.17 |
---|---|
[#3-8]BGP의 빠른 Take-over(2/2)+security (1) | 2024.12.15 |
[#3-8]BGP의 빠른 Take-over(1/2) (1) | 2024.12.05 |
[기타]Prefix list와 ACL의 차이 (0) | 2024.12.03 |
[#1] DHCP 가지고 놀기 3탄 (0) | 2024.12.02 |