DMVPN Phase 2
핵심 요약
- Phase 1과 차이: 스포크에서
tunnel mode gre multipoint사용 +tunnel destination제거 (2가지 변경).- 스포크 간 직접 통신 가능: NHRP resolution request/reply를 통해 상대 스포크의 공인 IP(NBMA 주소)를 확인한다.
- 라우팅 제약: 허브에서 요약 라우트(summary route) 사용 시 spoke-to-spoke 통신 불가 — **구체적 라우트(specific route)**가 필요하다.
- EIGRP: hub에서
no ip next-hop-self eigrp설정 필요 (next-hop 변경 방지).- BGP: next-hop 보존 필요 (
next-hop-unchanged또는route-map으로 처리).
Phase 2에서는 스포크 라우터도 mGRE(multipoint GRE)를 사용하여 스포크 간 직접 터널이 가능하다. Phase 1에서는 스포크가 P2P GRE 터널만 사용했으므로 모든 트래픽이 허브를 경유해야 했지만, Phase 2에서는 스포크가 NHRP를 통해 상대 스포크의 NBMA 주소를 학습하고 직접 GRE 터널을 수립한다.
1. Phase 1 대비 변경점
| 항목 | Phase 1 | Phase 2 |
|---|---|---|
| Spoke 터널 모드 | tunnel mode gre point-to-point | tunnel mode gre multipoint |
| Spoke에서 tunnel destination | 필요 | 불필요 (제거) |
| Spoke-to-Spoke 직접 통신 | 불가 (허브 경유) | 가능 |
| 허브에서 요약 라우트 | 가능 | 불가 (구체적 라우트 필요) |
2. 토폴로지 및 기본 설정
토폴로지
Hub 설정 (Phase 1과 동일)
Hub(config)#interface Tunnel0
Hub(config-if)#ip address 172.16.123.1 255.255.255.0
Hub(config-if)#ip nhrp authentication DMVPN
Hub(config-if)#ip nhrp map multicast dynamic
Hub(config-if)#ip nhrp network-id 1
Hub(config-if)#tunnel source GigabitEthernet0/1
Hub(config-if)#tunnel mode gre multipointSpoke 설정 (Phase 1과 차이점 2개)
Spoke1(config)#interface Tunnel0
Spoke1(config-if)#ip address 172.16.123.2 255.255.255.0
Spoke1(config-if)#ip nhrp authentication DMVPN
Spoke1(config-if)#ip nhrp map 172.16.123.1 192.168.123.1
Spoke1(config-if)#ip nhrp map multicast 192.168.123.1
Spoke1(config-if)#ip nhrp network-id 1
Spoke1(config-if)#ip nhrp nhs 172.16.123.1
Spoke1(config-if)#tunnel source GigabitEthernet0/1
Spoke1(config-if)#tunnel mode gre multipoint ← Phase 2 변경점
! tunnel destination 명령 없음 ← Phase 2 변경점핵심 포인트: Phase 1에서는 스포크가
tunnel mode gre point-to-point+tunnel destination으로 허브만 바라봤지만, Phase 2에서는tunnel mode gre multipoint로 변경하고tunnel destination을 제거하여 여러 피어와 동적으로 터널을 맺을 수 있다.
3. Spoke-to-Spoke 통신 흐름
Phase 2에서 스포크 간 직접 통신이 이루어지는 과정은 다음과 같다.
[Spoke1] ---(1) NHRP Resolution Request --→ [Hub]
[Hub] ---(2) NHRP Resolution Reply ---→ [Spoke1] (Spoke2의 NBMA 주소 전달)
[Spoke1] ---(3) 직접 GRE 터널 수립 ------→ [Spoke2]- Spoke1이 Spoke2의 내부 네트워크로 트래픽을 보내면, 라우팅 테이블의 next-hop이 Spoke2의 터널 IP이다.
- Spoke1은 Hub(NHS)에게 NHRP Resolution Request를 보내 Spoke2의 NBMA(공인) 주소를 요청한다.
- Hub은 NHRP 캐시에서 Spoke2의 NBMA 주소를 찾아 NHRP Resolution Reply로 응답한다.
- Spoke1은 학습한 NBMA 주소로 Spoke2에 직접 GRE 터널을 수립하고 트래픽을 전송한다.
참고: NHRP 해석(resolution) 중에도 트래픽은 허브를 경유하여 전달되므로 패킷 손실은 발생하지 않는다.
4. 라우팅 프로토콜 설정
라우팅의 핵심 제약: Next-Hop 보존
Phase 2에서 spoke-to-spoke 통신이 동작하려면, 스포크가 상대 스포크의 터널 IP를 next-hop으로 알고 있어야 한다. 허브에서 next-hop을 자기 자신으로 변경하면 스포크는 NHRP resolution을 시도할 수 없게 된다.
또한, 허브에서 요약 라우트(summary route)를 사용하면 개별 스포크의 네트워크 정보가 손실되어 spoke-to-spoke 통신이 불가능해진다.
4.1. EIGRP 설정
EIGRP는 기본적으로 허브에서 next-hop을 자기 자신으로 변경한다. 이를 방지해야 한다.
Hub 설정
Hub(config)#router eigrp 1
Hub(config-router)#network 172.16.123.0 0.0.0.255
Hub(config-router)#network 10.0.0.0 0.0.0.255
Hub(config)#interface Tunnel0
Hub(config-if)#no ip split-horizon eigrp 1
Hub(config-if)#no ip next-hop-self eigrp 1 ← Phase 2 핵심 설정| 명령 | 설명 |
|---|---|
no ip split-horizon eigrp 1 | 허브가 스포크에서 학습한 경로를 다른 스포크에 광고 (Phase 1에서도 필요) |
no ip next-hop-self eigrp 1 | Phase 2 핵심 — 허브가 next-hop을 변경하지 않고 원래 스포크의 터널 IP 유지 |
Spoke 설정
Spoke1(config)#router eigrp 1
Spoke1(config-router)#network 172.16.123.0 0.0.0.255
Spoke1(config-router)#network 192.168.1.0 0.0.0.255핵심 포인트:
no ip next-hop-self eigrp 1이 없으면 허브가 모든 경로의 next-hop을 자기 자신(172.16.123.1)으로 변경한다. 이 경우 Spoke1이 Spoke2의 네트워크로 향하는 트래픽의 next-hop이 허브가 되어 NHRP resolution이 발생하지 않고, spoke-to-spoke 직접 터널도 만들어지지 않는다.
4.2. BGP 설정
BGP에서도 next-hop 보존이 핵심이다. iBGP 환경에서 route-reflector를 사용하는 경우가 일반적이다.
Hub 설정 (Route-Reflector)
Hub(config)#router bgp 1
Hub(config-router)#neighbor 172.16.123.2 remote-as 1
Hub(config-router)#neighbor 172.16.123.3 remote-as 1
Hub(config-router)#neighbor 172.16.123.2 route-reflector-client
Hub(config-router)#neighbor 172.16.123.3 route-reflector-client
Hub(config-router)#neighbor 172.16.123.2 next-hop-unchanged ← next-hop 보존
Hub(config-router)#neighbor 172.16.123.3 next-hop-unchanged ← next-hop 보존
Hub(config-router)#network 10.0.0.0 mask 255.255.255.0
Spoke 설정
Spoke1(config)#router bgp 1
Spoke1(config-router)#neighbor 172.16.123.1 remote-as 1
Spoke1(config-router)#network 192.168.1.0 mask 255.255.255.0
핵심 포인트: BGP에서
next-hop-unchanged명령이 없으면, route-reflector인 허브가 경로를 반사(reflect)할 때 next-hop을 자기 자신으로 변경한다. 이 경우 EIGRP와 마찬가지로 spoke-to-spoke 직접 통신이 불가능해진다.
5. Phase 2의 한계
| 한계점 | 설명 |
|---|---|
| 요약 라우트 사용 불가 | 허브에서 요약 라우트 사용 시 개별 스포크의 next-hop 정보가 손실됨 |
| 라우팅 테이블 비대 | 모든 스포크의 구체적 경로를 유지해야 하므로 스포크 수가 많으면 라우팅 테이블이 커짐 |
| 확장성 제약 | 스포크 수가 많아질수록 라우팅 오버헤드 증가 |
실무 권장: Phase 2의 한계를 해결한 것이 Phase 3이다. Phase 3에서는 NHRP shortcut과 redirect를 사용하여 요약 라우트만으로도 spoke-to-spoke 통신이 가능하다. 대부분의 환경에서 Phase 3 사용을 권장한다.
관련 문서
- [[03_DMVPN 소개 및 Phase 1]] - DMVPN 개요 및 Phase 1 설정
- [[05_DMVPN Phase 3]] - Phase 3 설정 및 라우팅
- [[06_DMVPN Phase 비교 및 요약]] - Phase 간 비교
- 원본:
04_VPN/원본/12_DMVPN Phase 2 Basic Configuration.pdf - 원본:
04_VPN/원본/13_DMVPN Phase 2 EIGRP Routing.pdf - 원본:
04_VPN/원본/14_DMVPN Phase 2 BGP Routing.pdf