BGP-01
라우팅 프로토콜 구조
OSPF: eth | ip | OSPF
EIGRP: eth | ip | EIGRP
BGP: eth | ip | tcp[179] | BGP
1. AS 기준
EGP(External Gateway Protocol) : BGP
IGP(Internal Gateway Protocol) : OSPF RIP EIGRP IS-IS
2.알고리즘(경로 결정시 사용되는 알고리즘)
- distance vector RIPv2(hop count)
- link state OSPF IS-IS
- advanced distance vector EIGRP BGP
BGP란?
BGP는 서로 다른 AS 사이에서 사용되는 라우팅 프로토콜이다. TCP 179 port
멀티캐스팅을 통해 라우팅정보를 전송하는 IGP와는 다르게 BGP는 유니캐스트 방식으로 라우팅 정보를 전송한다.
IGP는 각 라우팅 프로토콜이 사용하는 메트릭에 따라 가장 빠른 경로를 최적 경로로 설정하지만
BGP는 라우팅의 성능보다 조직간의 계약된 정책에 따라 최적 경로를 설정한다.
BGP 사용목적
1.정책
2.확장성
BGP 동기법칙
BGP가 동작하기 위해서는 IGP의 동기화 넥스트 홉 까지의 통신 및 스플릿 호라이즌의 문제가 해결되어야 한다.
그중 BGP 동기화란 BGP가 알고있는 네트워크를 IGP도 알고 있어야 한다는 것이다.
IBGP로 광고받은 네트워크는 IGP가 확인해주어야만 사용할 수 있다. 해당 만족 조건은 3가지가 존재한다.
- nc sync 명령어 사용
- BGP를 IGP에 재분배
- 컨페더레이션(conferderation) 사용
1.no sync 명령어 사용
BGP로 동작하는 라우터가 연속한다 가정시 no sync를 사용하여 동기법칙을 적용하지 않으면 라우팅 블랙홀 현상을 방지 가능하다.
*라우팅블랙홀현상: 다른 AS간의 BGP통신시 경로간의 라우터 중 하나가 BGP가 설정되어있지 않으면 시작 AS에서 목적지 까지의 전달은 라우팅 되지만 목적지가 응답을 소스에게 보내는 때 해당 라우터는 BGP가 설정되어 있지 않으므로 상대 AS로 라우팅을 할 수 없어 라우팅 블랙홀 현상이 발생한다.
2.BGP를 IGP에 재분배
재분배를 통해 BGP를 동기시킨다.
대부분의 BGP환경은 네트워크가 많기 때문에 IGP로 재분배시 라우터가 다운될 수 있으며 장애처리가 힘들어 잘 사용되지 않는다.
3.컨데페레이션 사용
하나의 AS를 여러 개의 AS로 분할하여 설정 분할된 서브 AS들은 eBGP로 연결된다. IBGP 네이버가 EBGP로 변경되기 때문에 IBGP가 광고받은 네트워크는 IGP가 확인해야 사용할 수 있다는 동기법칙이 적용되지 않는다.
컨페더레이션 EBGP와 일반 EBGP의 차이점
- 컨페더레이션 외부에서 광고받은 네트워크의 넥스트홉은 전체 컨페더레이션을 통과할 동안 바뀌지 않는다.
- MED도 서브 AS간에서는 변경되지 않는다.
- 컨페더레이션 내의 한 서브 AS 에서 설정된 로컬 프레퍼런스도 전체 컨페더레이션에서 동일한 값을 가진다.
- 서브 AS간에 업데이트될 때마다 서브 AS번호가 추가되지만 컨페더레이션 외부로 광고될 때 서브 AS번호가 제거된다.
- 일반 AS 경로와는 달리 컨페더레이션 내부에서 추가되는 AS 번호는 경로 결정에 사용되지 않고 루프방지용으로만 사용한다. 경로결정시 조건이 동일하다면 일반 EBGP 컨페더레이션 EBGP IBGP순으로 우선순위를 가진다
일반 AS와 마찬가지로 컨페더레이션도 넥스트 홉을 해결하기 위해 IGP를 사용한다.
기본 실습
SW
en
conf
vlan 12
vlan 23
vlan 34
int vlan 34
int vlan 12
no shut
int vlan 23
no shut
int vlan 34
no shut
int range e0/0-3
sw tr en dot1q
sw mo tr
no shut
R1
en
conf t
int lo 0
ip add 1.1.1.1 255.255.255.0
int e0/0
no shut
int e0/0.12
encap dot1q 12
ip add 1.1.12.1 255.255.255.0
router bgp 1
bgp router-id 1.1.1.1
neighbor 1.1.12.2 remote-as 234
network 1.1.1.0 mask 255.255.255.0
R2
en
conf t
int lo 0
ip add 1.1.2.2 255.255.255.0
int e0/0
no shut
int e0/0.12
encap dot1q 12
ip add 1.1.12.2 255.255.255.0
int e0/0.23
encap dot1q 23
ip add 1.1.23.2 255.255.255.0
router bgp 234
bgp router-id 1.1.2.2
neighbor 1.1.12.1 remote-as 1
neighbor 1.1.3.3 remote-as 234
neighbor 1.1.4.4 remote-as 234
neighbor 1.1.3.3 update-source lo 0
neighbor 1.1.4.4 update-source lo 0
network 1.1.2.0 mask 255.255.255.0
R3
int lo 0
ip add 1.1.3.3 255.255.255.0
int e0/0
no shut
int e0/0.23
encap dot1q 23
ip add 1.1.23.3 255.255.255.0
int e0/0.34
encap dot1q 34
ip add 1.1.34.3 255.255.255.0
router bgp 234
bgp router-id 1.1.3.3
neighbor 1.1.2.2 remote-as 234
neighbor 1.1.4.4 remote-as 234
neighbor 1.1.2.2 update-source lo 0
neighbor 1.1.4.4 update-source lo 0
network 1.1.3.0 mask 255.255.255.0
R4
int lo 0
ip add 1.1.4.4 255.255.255.0
int e0/0
no shut
int e0/0.34
encap dot1q 34
ip add 1.1.34.4 255.255.255.0
router bgp 234
bgp router-id 1.1.4.4
neighbor 1.1.2.2 remote-as 234
neighbor 1.1.3.3 remote-as 234
neighbor 1.1.2.2 update-source lo 0
neighbor 1.1.3.3 update-source lo 0
network 1.1.4.0 mask 255.255.255.0
세팅확인
EBGP인 R1만 IBGP의 영역이 조회되고 나머지는 R1의 영역만 조회된다.
컨페데레이션 실습
R2
router bgp 65002
bgp router-id 1.1.2.2
bgp confederation identifier 234 원래의 AS번호 지정
bgo confederation peers 65003 인접한 서브 AS 번호 열거
neighbor 1.1.3.3 remote-as 65003 서브AS라우터와 연결위해 서브AS번호 사용
neighbor 1.1.3.3 update-source lo 0
neighbor 1.1.12.1 remote-as 1 외부 AS 1과 neighbor 연결
neighbor 1.1.3.3 ebgp-multihop 2 인접한 1.1.3.3 라우터와 연결될 때의 홉 수를 입력
network 1.1.2.0 mask 255.255.255.0
R3
router bgp 65003
bgp router-id 1.1.3.3
bgp confederation identifier 234
bgp confederation peers 65002 65004
neighbor 1.1.2.2 remote as 65002
neighbor 1.1.2.2 update-source lo 0
neighbor 1.1.2.2 ebgp-multihop 2
neighbor 1.1.4.4 remote as 65004
neighbor 1.1.4.4 update-source lo 0
neighbor 1.1.4.4 ebgp-multihop 2
network 1.1.3.0 mask 255.255.255.0
R4
router bgp 65004
bgp router-id 1.1.4.4
bgp confederation identifier 234
bgp confederation peers 65003
neighbor 1.1.3.3 remote-as 65003
neighbor 1.1.3.3 update-source lo 0
neighbor 1.1.3.3 ebgp-multihop 2
network 1.1.4.0 mask 255.255.255.0
결과
R3기준 라우팅테이블은 외부 AS인 R1과만 BGP 매칭된다.
외부 영역인 R1의 경우 내부 AS 영역이 confederation이 된 것을 확인할 수 없다.
BGP to OSPF 실습
기존 라우팅 삭제
R1
no router eigrp 1
no router bgp 65002
R2
no router eigrp 1
no router bgp 65003
R3
no router eigrp 1
no router bpg 65004
OSPF 라우터 설정
R2
router ospf 1
router-id 1.1.2.2
network 1.1.2.2 0.0.0.0 area 0
network 1.1.12.2 0.0.0.0 area 0
network 1.1.23.2 0.0.0.0 area 0
R3
router ospf 1
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.34.3 0.0.0.0 area 0
R4
router ospf 1
router-id 1.1.4.4
network 1.1.4.4 0.0.0.0 area 0
network 1.1.34.4 0.0.0.0 area 0
IBGP 설정
R2
router bgp 234
bgp router-id 1.1.2.2
neighbor 1.1.12.1 remote 1
network 1.1.2.0 mask 255.255.255.0
network 1.1.3.0 mask 255.255.255.0
network 1.1.4.0 mask 255.255.255.0
결과
R2의 BGP에 network 1.1.3.0과 1.1.4.0을 정의하였지만, R2는 1.1.3.1/24와 1.1.4.1/24영역을 가지고 있지 않고
대신 ospf에서 서브넷마스크가 다른 1.1.3.1/32와 1.1.4.1/32로 광고되기 때문에 bgp가 매칭되지 않는다.
R2의 라우팅 테이블에 1.1.3.0과 1.1.4.0을 /24로 저장하기 위해 각각의 lo 0에 point-to-point 설정
R3
int lo 0
ip ospf network point-to-point
R4
int lo 0
ip ospf network point-to-point
결과
point-to-point를 통해 /32가 아닌 /24로 광고되므로 bgp와 매칭된다.
BGP 동기화
BGP가 알고있는 네트워크는 IGP도 알고 있어야 한다.
동기화 방식
- no sync 사용
- bgp를 igp에 재분배
- confederation 사용
BGP 기본설정시 해결해야 할 사항
1.next hop
2.split horizon(ibgp로부터 받은 정보를 또다른 ibgp peer에 전달하지 않음)
BGP 넥스트 홉
BGP는 처음 라우팅 정보를 보낸 라우터가 넥스트 홉으로 설정되고 다른 AS를 넘어갈 때마다 그 AS와 연결되는 라우터에 넥스트홉을 갱신한다. 즉, 동일 AS 내부에서는 넥스트 홉을 갱신하지 않는다.
또한 멀티액세스(스위칭 연결)의 경우에도 넥스트 홉 주소가 변경되지 않는다.
BGP에서 넥스트 홉의 IP 주소는 네이버를 설정할 때 사용된 IP를 사용한다. EBGP처럼 인터페이스 IP를 사용한 경우에는 인터페이스 IP 주소가 넥스트홉의 IP 주소가 되고 IBGP처럼 루프백을 사용한 경우에는 루프백이 넥스트홉의 IP주소가 된다.
외부 네트워크에 대한 넥스트 홉 주소는 DMZ 네트워크가 사용된다.
만약 AS234가 AS1으로 가는 아이피가 1.1.12.1일 경우 넥스트홉 주소가 포함된 DMZ인 1.1.12.0 네트워크로 라우팅이 가능해야 한다.
BGP에서 넥스트 홉의 문제를 해결하는 방법은 두가지가 있다.
- DMZ를 IGP에 포함시키기
- next-hop-self 옵션 사용
1.DMZ를 IGP에 포함시키기
R2
router ospf 1
router-id 1.1.2.2
network 1.1.2.2 0.0.0.0 area 0
network 1.1.23.2 0.0.0.0 area 0
R1으로 향하는 ip 영역 미설정
int lo 0
ip ospf network point-to-point
R3
router ospf 1
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.34.3 0.0.0.0 area 0
int lo 0
ip ospf network point-to-point
R4
router ospf 1
router-id 1.1.4.4
network 1.1.4.4 0.0.0.0 area 0
network 1.1.34.4 0.0.0.0 area 0
int lo 0
ip ospf network point-to-point
R1
router bgp 1
bgp router-id 1.1.1.1
neighbor 1.1.12.2 remote-as 234
network 1.1.1.0 mask 255.255.255.0
R2
router bgp 234
bgp router-id 1.1.2.2
neighbor 1.1.12.1 remote-as 1
neighbor 1.1.3.3 remote-as 234
neighbor 1.1.3.3 update-source lo 0
neighbor 1.1.4.4 remote-as 234
neighbor 1.1.4.4 update-source lo 0
network 1.1.2.0 mask 255.255.255.0
R3
router bgp 234
bgp router-id 1.1.3.3
neighbor 1.1.2.2 remote-as 234
neighbor 1.1.2.2 update-source lo 0
neighbor 1.1.4.4 remote-as 234
neighbor 1.1.4.4 update-source lo 0
network 1.1.3.0 mask 255.255.255.0
R4
router bgp 234
bgp router-id 1.1.4.4
neighbor 1.1.2.2 remote-as 234
neighbor 1.1.2.2 update-source lo 0
neighbor 1.1.3.3 remote-as 234
neighbor 1.1.3.3 update-source lo 0
network 1.1.4.0 mask 255.255.255.0
결과
R2의 OSPF에 s0/0.12 인터페이스를 포함하지 않아 R3, R4의 라우팅 테이블에 1.1.12.0 테이블이 존재하지 않는다.
R2
router ospf 1
network 1.1.12.2 0.0.0.0 area 0
passive-interface e0/0.12
해당 설정을 통해 DMZ 네트워크를 OSPF에 포함한다.
DMZ를 영역인 1.1.12.1이 매칭되어 메트릭이 생성됨 (기본 ethernet port의 metric = 10 홉이 2이므로 metric=20)
2.next-hop-self 옵션 사용
경계 라우터인 R2가 네이버를 설정하면서 넥스트홉 IP주소를 R3,R4 라우터가 알고있는 R2 자신의 주소로 변경하여 다른 IGP 라우터가 EBGP와의 통신을 위한 라우팅을 할 수 있게된다.
router ospf 1
no network 1.1.12.2 0.0.0.0 area 0
no passive-interface e0/0.12
router bgp 234
neighbor 1.1.3.3 next-hop-self
neighbor 1.1.4.4 next-hop-self
R2가 R3, R4에게 BGP 경로를 전달할 때 Next-Hop을 자신의 IP(R2)로 변경된다.
R3, R4는 R2를 통해 R1의 네트워크로 갈 수 있으므로 BGP 경로를 정상적으로 사용 가능하다.
BGP 스플릿 호라이즌
BGp도 RIP, EIGRP와 마찬가지로 디스턴스 벡터 라우팅 프로토콜이기 때문에 라우팅 루프를 방지하기 위한 스플릿 호라이즌 룰이 적용된다.
하지만 BGP의 스플릿 호라이즌룰은 IBGP로 광고받지 못한 네트워크는 IBGP로 광고하지 못한다는 다른 특성을 가진다.
R1 (AS 1) > R2 (AS 234) > R3(AS 234) > ! R4 (AS 234) R4로 광고 불가
해당 문제의 해결 방법
- 완전 메시 설정
- 루트 리플렉터
- 컨페더레이션
완전 메시(full mesh) 설정
모든 IBGP 라우터 간에 네이버를 설정한다.
BGP의 수량이 많으면 설정 작업이 많아져서 불편한 문제가 있다.
루트 리플렉터
BGP 스플릿 호라이즌 규칙을 면제받은 라우터이다.
루트 리플렉터는 IBGP로 받은 정보를 IBGP로 전송 가능하므로
IBGP를 완전 매쉬로 사용해야 하는 번거로움을 피할 수 있다.
- 루트 리플렉터 클라이언트 : neighbor route-reflector-client 명령어로 지정된 라우터
- 비 클라이언트 : 루트 리플렉터와 네이버 관계에 있지만 클라이언트가 아닌 라우터
- 클러스터 : 루트 리플렉터와 클라이언트의 집합
- 클러스터 ID : 클러스터의 ID 보통 루트 리플렉터의 라우터 ID가 클러스터 ID로 사용됨 만약 복수개의 루트 리플렉터와 클라이언트를 하나의 클러스터로 묶으려면 bgp cluster-id를 사용하여 지정
- 클러스터 리스트 : 특정 경로가 통과해온 클러스터의 ID 리스트 루트 리플렉터는 IBGP로 수신한 정보를 IBGP 라우팅 정보로 보낼 때는 클러스터 ID를 첨부한다. 만약 클러스터의 외부에서 받은 라우팅 정보에 자신이 속한 클러스터의 ID가 포함된 경우 라우팅 루프가 발생한것으로 판단하여 해당 라우터 정보를 무시한다.
- 오리지네이터 ID : 루트 리플렉터가 만드는 옵셔널 논트랜지티브 속성 현재의 AS에서 특정 경로를 BGP에 포함시킨 라우터의 라우터 ID 이 속성은 해당 AS 내부에서만 사용됨 광고받은 특정 경로의 오리지네이터 ID가 자기 자신이면 라우터는 이를 무시함 클러스터 리스트가 AS 내부에서 루트 리플렉터가 라우팅 루프를 방지할 때 사용하고 오리지내이터 ID는 클러스터 내부에서 오리지내이터가 사용하는 라우팅 루프 방지 대책이다.
루트 리플렉터 동작 방식
1. 라우팅 정보 수신
2.EBPG네이버에게서 수신한 라우팅 정보는 모든 클라이언트와 비 클라이언트에 전송
3.비 클라이언트에게서 수신한 라우팅 정보는 모든 클라이언트에게 전송
4.클라이언트에게서 수신한 정보는 모든 클라이언트와 비 클라이언트에게 전송
RIB(Routing Information Base) = routing table
FIB(Forwarding information base) = CEF(Cisco Express Forwarding) table
실습
R1
en
conf t
int lo 0
ip add 1.1.1.1 255.255.255.0
int e0/0
ip add 1.1.12.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.12.2 remote-as 234
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.12.2 255.255.255.0
no shut
int e0/1
ip add 1.1.23.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
network 1.1.23.2 0.0.0.0 area 0
passive-interface e0/0
router bgp 234
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.3.3 remote-as 234
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 e0/1
ip add 1.1.23.3 255.255.255.0
no shut
int e0/0
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.0 mask 255.255.255.0
network 1.1.34.3 0.0.0.0 area 0
network 1.1.23.3 0.0.0.0 area 0
router bgp 234
bgp router-id 1.1.3.3
network 1.1.3.0 mask 255.255.255.0
neighbor 1.1.2.2 remote-as 234
neighbor 1.1.2.2 update-source lo 0
neighbor 1.1.4.4 remote-as 234
neighbor 1.1.4.4 update-source lo 0
R4
en
conf t
int lo 0
ip add 1.1.4.4 255.255.255.0
ip ospf network point-to-point
int e0/0
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.34.4 0.0.0.0 area 0
router bgp 234
bgp router-id 1.1.4.4
network 1.1.4.0 mask 255.255.255.0
neighbor 1.1.3.3 remote-as 234
neighbor 1.1.3.3 update-source lo 0
설정확인
스플릿 호라이즌의 문제로 R3에서 R1이 광고되지 않는다.
해당 문제를 해결하기 위한 방법은 두 가지가 있는데 모든 라우터 간에 네이버를 설정하는 완전 메쉬 설정과 루트리플렉터 사용 방법이 있다.
먼저 완전매쉬를 적용해보자
R2
router bgp 234
neighbor 1.1.4.4 remote-as 234
neighbor 1.1.4.4 update-source lo 0
neighbor 1.1.4.4 next-hop-self
R4
router bgp 234
neighbor 1.1.2.2 remote-as 234
neighbor 1.1.2.2 update-source lo 0
R2와 R4를 각각 1대1로 네이버하자 R4에서 1.1.1.0/24 영역이 조회된다.
해당 방법은 BGP 라우터가 많아질 경우 관리가 어렵고 비효율적이라는 문제가 있다.
루트 리플렉터
루트 리플렉터를 사옹하면 완전 매쉬에 비해 간편한 관리를 할 수 있다.
R3
router bgp 234
neighbor 1.1.2.2 route-reflector-client
neighbor 1.1.4.4 route-reflector-client
결과
R3를 루트리플렉터 서버로 설정하고 R2 R4를 루트리플렉터 클라이언트로 설정하자 루트리플렉터가 매칭되어
EBGP와 IBGP간의 네트워크가 연결되었다.