BGP-5 (부하분산)
BGP 부하분산
IGP와 달리 기본적으로 BGP는 동일한 라우터에서 동일한 목적지로 가는 트래픽에 대해서 부하분산을 하지 않는다.
그러나 경로 속성이 모두 동일한 경우 BGP 설정 모드에서 maximum-path 명령어 사용시 최대 32개 경로를 사용하여 부하분산이 가능하다. BGP 부하분산을 위해서는 반드시 경로 속성이 모두 동일해야 한다.
즉, 웨이트,로컬프레퍼런스,AS 경로(AS경로길이 뿐 아니라 경로값들도 동일해야함),오리진,MED,넥스트 홉까지의 IGP 메트릭 값 등이 같아야지만 BGP 부하분산이 일어난다.
BGP 부하분산의 구성방법은 다음과 같다.
- IGP 또는 정적 경로 이용
- maximum-path와 maximum-path ibgp 명령어 이용
- DMZ 링크 대역폭 기능 이용
실습구성
R1
en
conf t
int lo 0
ip add 1.1.1.1 255.255.255.0
int e1/2
ip add 1.1.14.1 255.255.255.0
no shut
int e0/1
ip add 1.1.12.1 255.255.255.0
no shut
int e0/0
ip addd 1.1.21.1 255.255.255.0
no shut
router bgp 1
bgp router-id 1.1.1.1
network 1.1.1.0 mask 255.255.255.0
neighbor 1.1.14.4 remote-as 2
neighbor 1.1.12.2 remote-as 2
neighbor 1.1.21.2 remote-as 2
R2
en
conf t
int lo 0
ip add 1.1.2.2 255.255.255.0
ip ospf network point-to-point
int e0/0
ip add 1.1.21.2 255.255.255.0
no shut
int e0/1
ip add 1.1.12.2 255.255.255.0
no shut
int e1/1
ip add 1.1.23.2 255.255.255.0
no shut
int e1/0
ip addd 1.1.32.2 255.255.255.0
no shut
router ospf 2
router-id 1.1.2.2
network 1.1.2.2 0.0.0.0 area 0
netowrk 1.1.23.2 0.0.0.0 area 0
network 1.1.32.2 0.0.0.0 area 0
passive-interface e0/0
passive-interface e0/1
router bgp 2
bgp router-id 1.1.2.2
network 1.1.2.0 mask 255.255.255.0
neighbor 1.1.12.1 remote-as 1
neighbor 1.1.21.1 remote-as 1
neighbor 1.1.3.3 remote-as 2
neighbor 1.1.3.3 update-source lo 0
neighbor 1.1.3.3 next-hop-self
R3
en
conf t
int lo 0
ip add 1.1.3.3 255.255.255.0
ip ospf network point-to-point
int e1/0
ip add 1.1.32.2 255.255.255.0
no shut
int e1/1
ip add 1.1.23.2 255.255.255.0
no shut
int e1/3
ip add 1.1.34.3 255.255.255.0
no shut
router ospf 3
router-id 1.1.3.3
network 1.1.3.3 0.0.0.0 area 0
network 1.1.23.3 0.0.0.0 area 0
network 1.1.32.3 0.0.0.0 area 0
network 1.1.34.3 0.0.0.0 area 0
router bgp 2
bgp router-id 1.1.3.3
network 1.1.3.0 mask 255.255.255.0
neighbor 1.1.2.2 remote-as 2
neighbor 1.1.2.2 update-source lo 0
neighbor 1.1.2.2 route-reflector-client
neighbor 1.1.4.4 remote-as 2
neighbor 1.1.4.4 update-source lo 0
neighbor 1.1.4.4 route-reflector-client
R4
en
conf t
int lo 0
ip add 1.1.4.4 255.255.255.0
ip ospf network point-to-point
int e1/2
ip add 1.1.14.4 255.255.255.0
no shut
int e1/3
ip add 1.1.34.4 255.255.255.0
no shut
router ospf 4
router-id 1.1.4.4
network 1.1.4.4 0.0.0.0 area 0
network 1.1.14.4 0.0.0.0 area 0
network 1.1.34.4 0.0.0.0 area 0
router bgp 2
bgp router-id 1.1.4.4
network 1.1.4.4 mask 255.255.255.0
neighbor 1.1.14.1 remote-as 1
neighbor 1.1.3.3 remote-as 2
neighbor 1.1.3.3 update-source lo 0
neighbor 1.1.3.3 next-hop-self
명령어 확인
maximum-path를 이용한 부하분산
maximum-paths 3 명령어를 이용하여 BGP 부하분산이 가능하다.
R1
router bgp 1
maximum-paths 3
R2
router bgp 2
maximum-paths 2
결과
R1에서 AS 2로 가는 모든 경로 3개에 대한 부하분산과 R2에서 R1으로가는 경로 2개에 대한 부하분산이 적용되었다.
이외에 R3에서 R2와 R4로 가는 IBGP 경로를 부하분산 시키려면 maximum-paths ibgp 명령어를 사용한다.
R3
router bgp 2
maximum-paths ibgp 2
이와같이 maximum-path 명령어를 사용하여 복수개의 ibgp나 ebgp 경로에 대해서 부하분산이 가능하다.
DMZ 링크 대역폭 기능을 이용한 BGP 부하 분산
서로 다른 AS간을 연결하는 구간은 어느 AS에도 소속되지 않으며 이를 DMZ라고 한다.
DMZ 링크 대역폭 기능이란 DMZ 구간의 대역폭에 비례하여 언이퀄 코스트 부하분산을 구현하는 것을 말한다.
DMZ 링크 대역폭 기능을 이용하면 EBGP 및 IBGP 경로 모두를 언이퀄 코스트 부하 분산시킬 수 있다.
해당 기능이 동작하는 방식은 다음과 같다.
1) 외부 AS와 연결되는 라우터가 DMZ 구간의 대역폭을 확장 커뮤니티를 이용하여 IBGP 네이버에게 광고한다.
2)만약 하나의 경계 라우터에서 외부 AS와 연결되는 복수개의 경로가 존재한다면
경계 라우터 자신은 EBGP 부하분산을 한다.
3)DMZ 구간의 대역폭을 확장 커뮤니티로 수신한 IBGP 라우터들은
경계 라우터까지 이르는 IBGP 구간에 대해 부하분산을 한다.
DMZ 링크 대역폭 기능이 동작하려면 다음 조건을 만족해야 한다.
- DMZ 설정모드에서 maximum-paths나 maximum-paths ibgp 명령어를 사용하여 eBGP 부하분산이나 IBGP 부하 분산 기능이 설정되어 있어야 한다.
- DMZ 링크 대역폭 속성이 광고되는 IBGP 네이버간에 확장 커뮤니티를 전송할 수 있도록 설정되어 있어야 한다.
- 모든 라우터에 CEF나 dCEF 기능이 설정되어 있어야 한다.
- 웨이트,로컬프레퍼런스,AS경로길이,MED,IGP 매트릭이 동일한 복수개의 경로가 존재해야 한다.
R1에 ip cef를 활성화 후 dmzlink-bw를 활성화하여 경로 3개에 대한 부하분산을 수행해보자
R1
ip cef
# CEF 활성화
router bgp 1
bgp dmzlink-bw
neighbor 1.1.12.2 dmzlink-bw
neighbor 1.1.21.2 dmzlink-bw
neighbor 1.1.14.4 dmzlink-bw
maximum-paths 6
결과
R1의 라우팅 테이블에서 다음와 같이 AS 2에서 광고받은 네트워크에 대하여 EBGP 부하분산이 이루어졌다.
이제 R2에서 부하분산을 적용해보자
R2
router bgp 2
bgp dmzlink-bw
neighbor 1.1.12.1 dmzlink-bw
neighbor 1.1.21.1 dmzlink-bw
maximum-paths 6
neighbor 1.1.3.3 send-community both
#DMZ 대역폭 속성을 IBGP 네이버에게 전송할 수 있도록 R3 네이버에 send-community 설정
#만약 표준 커뮤니티도 동시에 전송한다면 both옵션을 확장 커뮤니티만 전송한다면 extended 옵션을 사용한다.
결과
R2의 bgp 테이블에 1.1.1.0/24의 네트워크에 대해 링크별로 대역폭이 할당되었다.
이제 R4에서 R3를 위한 DMZ 링크 대역폭을 설정한다.
R4
router bgp 2
bgp dmzlink-bw
neighbor 1.1.14.1 dmzlink-bw
neighbor 1.1.3.3 send-community both
그리고 R3에 IBGP의 부하 분산 기능을 활성화 시킨다.
router bgp 2
maximum-paths ibgp 6
R3 라우팅 테이블의 1.1.1.0/24 네트워크에 대해서 R2와 R4간에 IBGP 부하분산이 일어남을 확인할 수 있다.
동시에 R2로 전송되는 트래픽은 다시 OSPF에 의해서 부하분산이 일어난다.
이처럼 DMZ 링크 대역폭을 사용하면 EBGP 및 IBGP 네이버 모두가 DMZ의 대역폭에 따라서 언이퀄 코스트 라우팅이 일어난다. 만약 IBGP 간을 연결하는 링크의 속도가 적절히 설정되어 있거나 충분히 빠르다면 DMZ 링크 대역폭 기능은 아주 훌륭한 BGP 부하 분산을 제공한다.
그러나 특정 경로의 IBGP 라우터 간의 속도를 빠르게 하더라도 실제 외부 AS로 라우팅 되는 트래픽은 DMZ 구간의 대역폭에 따라 결정되는 특징이 있다.
소규모 BGP 네트워크에서의 부하 분산
대부분의 소규모 네트워크에서는 AS 내부의 모든 라우터에게서 BGP를 동작할 필요가 없다.
만약 일반 기업체에서 BGP 링크 대역폭 기능을 이용하여 부하 분산을 구현하려면 BGP 부하 분산 트래픽이 분기되는 지점만 BGP설정하고 나머지 라우터들은 BGP를 동작시키지 않고 대신 분기 라우터에만 디폴트 루트등을 생성하여 전달하면 최적 BGP 부하 분산이 구현된다.
ISP로부터의 네트워크 광고 수신 방법
- 모든 네트워크를 다 수신하는 경우(모든 BGP 네트워크의 광고를 수신)
- 일부 상세 경로와 디폴트 루트를 수신하는 경우( 특정 네트워크에 대해서만 외부로 라우팅 되는 경로를 조정할 필요가 있을 때 일부 상세 경로와 디폴트 루트를 수신)
- 디폴트 루트만 수신하는 경우(특정 네트워크에 대해 출력 경로를 조정할 필요가 없는 경우 디폴트 루트만 수신한다.