허브 및 스포크 VPN
허브 및 스포크 VPN 토폴로지 구성: 하나의 인터페이스
단일 인터페이스 구성을 사용하여 허브에서 기본 경로를 보급합니다.
그림 1 은 허브 CE(CE1)와 허브 PE(PE1) 사이에 인터페이스가 하나만 있는 레이어 3 VPN 허브 앤 스포크 애플리케이션을 보여줍니다. 이는 허브 앤 스포크 토폴로지를 구성하는 권장 방법입니다.
이 구성에서는 기본 경로가 허브에서 스포크로 보급됩니다. 스포크 CE 라우터 간에 보다 구체적인 스포크 CE 경로를 교환해야 하는 경우 허브 CE와 허브 PE 간에 두 개의 인터페이스가 필요합니다. 2-인터페이스 예는 허브 및 스포크 VPN 토폴로지 구성: 2개의 인터페이스를 참조하십시오.
이 구성 예에서 스포크 경로 배포는 다음과 같습니다.
-
스포크 CE2는 스포크 PE2에 대한 경로를 광고합니다.
-
스포크 PE2는 CE2의 경로를 VPN 라우팅 및 포워딩(VRF) 테이블에 설치합니다.
-
스포크 PE2는 VRF 내보내기 정책을 확인하고, 경로 대상 커뮤니티를 추가하고, 허브 PE1에 대한 경로를 발표합니다.
-
Hub PE1은 VRF 가져오기 정책을 확인하고 가져오기 정책과 일치하는 경로를 테이블 bgp.l3vpn.0에 설치합니다.
-
허브 PE1은 bgp.l3vpn.0 테이블의 경로를 허브 VRF 테이블로 설치합니다.
-
허브 PE1은 허브 VRF 테이블에서 허브 CE1로의 경로를 발표합니다.
이 구성 예에서 기본 경로 배포는 다음과 같습니다.
-
허브 CE1은 허브 PE1에 대한 기본 경로를 발표합니다.
-
허브 PE1은 허브 VRF 테이블에 기본 경로를 설치합니다.
-
허브 PE1은 VRF 내보내기 정책을 확인하고, 경로 대상 커뮤니티를 추가하고, 스포크 PE2 및 PE3에 대한 기본 경로를 발표합니다.
-
스포크 PE2 및 PE3는 VRF 가져오기 정책을 확인하고 기본 경로를 테이블 bgp.l3vpn.0에 설치합니다.
-
스포크 PE2 및 PE3는 테이블 bgp.l3vpn.0의 경로를 스포크 VRF 테이블에 설치합니다.
-
스포크 PE2 및 PE3는 스포크 VRF 테이블에서 스포크 CE2 및 CE3으로의 기본 경로를 발표합니다.
다음 섹션에서는 그림 1에 나와 있는 토폴로지를 기반으로 하나의 인터페이스로 허브 앤 스포크 토폴로지를 구성하는 방법을 설명합니다.
허브 CE1 구성
다음과 같이 허브 CE1을 구성합니다.
[edit routing-options]
static {
route 0.0.0.0/0 discard;
}
autonomous-system 100;
[edit protocols]
bgp {
group hub {
type external;
export default;
peer-as 200;
neighbor 10.49.4.1;
}
}
[edit policy-options]
policy-statement default {
term 1 {
from {
protocol static;
route-filter 0.0.0.0/0 exact;
}
then accept;
}
term 2 {
then reject;
}
}
허브 PE1 구성
다음과 같이 허브 PE1을 구성합니다.
[edit]
routing-instances {
hub {
instance-type vrf;
interface t3-0/0/0;
route-distinguisher 10.255.14.176:2;
vrf-target {
import target:200:100;
export target:200:101;
}
protocols {
bgp {
group hub {
type external;
peer-as 100;
as-override;
neighbor 10.49.4.2;
}
}
}
}
}
P 라우터 구성하기
다음과 같이 P 라우터를 구성합니다.
[edit]
interfaces {
t3-0/1/1 {
unit 0 {
family inet {
address 10.49.2.1/30;
}
family mpls;
}
}
t3-0/1/3 {
unit 0 {
family inet {
address 10.49.0.2/30;
}
family mpls;
}
}
t1-0/2/0 {
unit 0 {
family inet {
address 10.49.1.2/30;
}
family mpls;
}
}
}
[edit]
protocols {
ospf {
area 0.0.0.0 {
interface t3-0/1/3.0;
interface t1-0/2/0.0;
interface t3-0/1/1.0;
interface lo0.0 {
passive;
}
}
}
ldp {
interface t3-0/1/1.0;
interface t3-0/1/3.0;
interface t1-0/2/0.0;
}
}
스포크 PE2 구성
다음과 같이 스포크 PE2를 구성합니다.
[edit]
interfaces {
t3-0/0/0 {
unit 0 {
family inet {
address 10.49.0.1/30;
}
family mpls;
}
}
t1-0/1/2 {
unit 0 {
family inet {
address 10.49.3.1/30;
}
}
}
}
[edit protocols]
bgp {
group ibgp {
type internal;
local-address 10.255.14.182;
peer-as 200;
neighbor 10.255.14.176 {
family inet-vpn {
unicast;
}
}
}
}
ospf {
area 0.0.0.0 {
interface t3-0/0/0.0;
interface lo0.0 {
passive;
}
}
}
ldp {
interface t3-0/0/0.0;
}
[edit]
routing-instances {
spoke {
instance-type vrf;
interface t1-0/1/2.0;
route-distinguisher 10.255.14.182:20;
vrf-target {
import target:200:101;
export target:200:100;
}
protocols {
bgp {
group spoke {
type external;
peer-as 100;
as-override;
neighbor 10.49.3.2;
}
}
}
}
}
스포크 PE3 구성
다음과 같이 스포크 PE3를 구성하십시오.
[edit]
interfaces {
t3-0/0/0 {
unit 0 {
family inet {
address 10.49.6.1/30;
}
}
}
t3-0/0/1 {
unit 0 {
family inet {
address 10.49.2.2/30;
}
family mpls;
}
}
}
[edit protocols}
bgp {
group ibgp {
type internal;
local-address 10.255.14.178;
peer-as 200;
neighbor 10.255.14.176 {
family inet-vpn {
unicast;
}
}
}
}
ospf {
area 0.0.0.0 {
interface t3-0/0/1.0;
interface lo0.0 {
passive;
}
}
}
ldp {
interface t3-0/0/1.0;
}
[edit]
routing-instances {
spoke {
instance-type vrf;
interface t3-0/0/0.0;
route-distinguisher 10.255.14.178:30;
vrf-target {
import target:200:101;
export target:200:100;
}
protocols {
bgp {
group spoke {
type external;
peer-as 100;
as-override;
neighbor 10.49.6.2;
}
}
}
}
}
스포크 CE2 구성
다음과 같이 스포크 CE2를 구성해 주십시오.
[edit routing-options]
autonomous-system 100;
{edit protocols]
bgp {
group spoke {
type external;
export loopback;
peer-as 200;
neighbor 10.49.3.1;
}
}
스포크 CE3 구성
다음과 같이 스포크 CE3를 구성하십시오.
[edit routing-options]
autonomous-system 100;
[edit protocols]
bgp {
group spoke {
type external;
export loopback;
peer-as 200;
neighbor 10.49.6.1;
}
}
이 구성 예에서 스포크 CE2와 허브 CE1 간의 트래픽 포워딩은 다음과 같습니다.
-
스포크 CE2는 스포크 PE2에서 학습된 기본 경로를 사용하여 BGP를 통해 트래픽을 전달합니다.
0.0.0.0/0 *[BGP/170] 02:24:15, localpref 100 AS path: 200 200 I > to 10.49.3.1 via t1-3/0/1.0 -
스포크 PE2는 스포크 VRF 테이블에서 경로 조회를 수행하고 BGP를 통해 학습된 기본 경로를 사용하여 트래픽을 허브 PE1로 전달합니다(P 라우터를 통해. PE2는 두 개의 레이블을 푸시함).
0.0.0.0/0 *[BGP/170] 01:35:45, localpref 100, from 10.255.14.176 AS path: 100 I > via t3-0/0/1.0, Push 100336, Push 100224(top) -
허브 PE1은 mpls.0 테이블에서 VPN 레이블
100336에 대한 경로 검색을 수행합니다.100336 *[VPN/170] 01:37:03 > to 10.49.4.2 via t3-0/0/0.0, Pop -
허브 PE1은 인터페이스를
t3-0/0/0.0통해 트래픽을 허브 CE1로 전달합니다.
이 구성 예에서 허브 CE1과 스포크 CE2 간의 트래픽 포워딩은 다음과 같습니다.
-
허브 CE1은 BGP를 통해 학습된 경로를 사용하여 트래픽을 허브 PE1로 전달합니다.
10.49.10.250/32 *[BGP/170] 02:28:46, localpref 100 AS path: 200 200 I > to 10.49.4.1 via t3-3/1/0.0 -
허브 PE1은 허브 VRF 테이블에서 경로 검색을 수행하고 트래픽을 스포크 PE2로 전달합니다(P 라우터를 통해—PE1은 두 개의 레이블을 푸시함).
10.49.10.250/32 *[BGP/170] 01:41:05, localpref 100, from 10.255.14.182 AS path: 100 I > via t1-0/1/0.0, Push 100352, Push 100208(top) -
Spoke PE2는 mpls.0 테이블에서 VPN 레이블
100352에 대한 경로 검색을 수행합니다.100352 *[VPN/170] 02:31:39 > to 10.49.3.2 via t1-0/1/2.0, Pop -
스포크 PE2는 인터페이스를
t1-0/1/2.0통해 트래픽을 스포크 CE2로 전달합니다.
이 구성 예에서 스포크 CE2와 스포크 CE3 간의 트래픽 포워딩은 다음과 같습니다.
-
스포크 CE2는 스포크 PE2에서 학습된 기본 경로를 사용하여 BGP를 통해 트래픽을 전달합니다.
0.0.0.0/0 *[BGP/170] 02:24:15, localpref 100 AS path: 200 200 I > to 10.49.3.1 via t1-3/0/1.0 -
스포크 PE2는 스포크 VRF 테이블에서 경로 검색을 수행하고 BGP를 통해 학습된 기본 경로를 사용하여 트래픽을 허브 PE1로 전달합니다(P 라우터를 통해. PE2는 두 개의 레이블을 푸시함).
0.0.0.0/0 *[BGP/170] 01:35:45, localpref 100, from 10.255.14.176 AS path: 100 I > via t3-0/0/1.0, Push 100336, Push 100224(top) -
허브 PE1은 mpls.0 테이블에서 VPN 레이블
100336에 대한 경로 검색을 수행합니다.100336 *[VPN/170] 01:37:03 > to 10.49.4.2 via t3-0/0/0.0, Pop -
허브 PE1은 인터페이스를
t3-0/0/0.0통해 트래픽을 허브 CE1로 전달합니다. -
허브 CE1은 BGP를 통해 학습된 라우터를 사용하여 트래픽을 허브 PE1로 전달합니다.
10.49.10.253/32 *[BGP/170] 02:40:03, localpref 100 AS path: 200 200 I > to 10.49.4.1 via t3-3/1/0.0 -
허브 PE1은 허브 VRF 테이블에서 경로 검색을 수행하고 트래픽을 스포크 PE3로 전달합니다(P 라우터를 통해—PE1은 두 개의 레이블을 푸시함).
10.49.10.253/32 *[BGP/170] 01:41:05, localpref 100, from 10.255.14.178 AS path: 100 I > via t1-0/1/0.0, Push 100128, Push 100192(top) -
Spoke PE3는 mpls.0 테이블에서 VPN 레이블
100128에 대한 경로 검색을 수행합니다.100128 *[VPN/170] 02:41:30 > to 10.49.6.2 via t3-0/0/0.0, Pop -
스포크 PE3는 인터페이스를
t3-0/0/0.0통해 트래픽을 스포크 CE3로 전달합니다.
허브 VRF 라우팅 테이블에서 IP 포워딩 조회가 필요한 허브 PE에서 송신 기능이 필요한 경우 허브 PE 라우터에서 송신 기능 활성화를 참조하십시오.
허브 PE 라우터에서 송신 기능 활성화
이 예는 허브 및 스포크 VPN 토폴로지 구성과 함께 제공됩니다. 하나의 인터페이스. 이 예에서는 그림 1에 설명된 토폴로지도 사용합니다.
허브 VRF 라우팅 테이블에서 IP 포워딩 조회가 필요한 허브 PE에서 송신 기능이 필요한 경우, 허브 및 스포크 VPN 토폴로지 구성 에 자세히 설명된 구성: 하나의 인터페이스는 작동하지 않습니다. 허브 라우팅 인스턴스에 문을 적용 vrf-table-label 하면 원격 스포크 PE의 트래픽이 허브 PE로 전달되고 IP 조회가 강제로 수행됩니다. 특정 스포크 경로가 허브 VRF 테이블에 있기 때문에 트래픽은 허브 CE를 거치지 않고 스포크 PE로 전달됩니다.
허브 PE는 VPN 레이블 1028을 사용하여 다음과 같이 기본 경로를 보급합니다.
hub.inet.0: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden)
* 0.0.0.0/0 (1 entry, 1 announced)
BGP group ibgp type Internal
Route Distinguisher: 10.255.14.176:2
VPN Label: 1028
Nexthop: Self
Localpref: 100
AS path: 100 I
Communities: target:200:101
들어오는 트래픽은 VPN 레이블 1028을 사용하여 전달됩니다. mpls.0 테이블은 hub.inet.0 테이블의 IP 조회가 필요하다는 것을 보여줍니다.
1028 *[VPN/0] 00:00:27
to table hub.inet.0, Pop
그러나 허브 VRF 테이블 hub.inet.0에는 특정 스포크 경로가 포함되어 있습니다.
10.49.10.250/32 *[BGP/170] 00:00:05, localpref 100, from 10.255.14.182
AS path: 100 I
> via t1-0/1/0.0, Push 100352, Push 100208(top)
10.49.10.253/32 *[BGP/170] 00:00:05, localpref 100, from 10.255.14.178
AS path: 100 I
> via t1-0/1/0.0, Push 100128, Push 100192(top)
이 때문에 트래픽은 허브 CE를 거치지 않고 스포크 PE로 직접 전달됩니다. 이를 방지하기 위해 허브 PE1에서 다운스트림 트래픽에 대한 보조 라우팅 인스턴스를 구성해야 합니다.
허브 PE1 구성
다음과 같이 허브 PE1을 구성합니다.
[edit]
routing-instances {
hub {
instance-type vrf;
interface t3-0/0/0.0;
route-distinguisher 10.255.14.176:2;
vrf-target {
import target:200:100;
export target:200:101;
}
no-vrf-advertise;
routing-options {
auto-export;
}
protocols {
bgp {
group hub {
type external;
peer-as 100;
as-override;
neighbor 10.49.4.2;
}
}
}
}
hub-downstream {
instance-type vrf;
route-guisher 10.255.14.176:3;
vrf-target target:200:101;
vrf-table-label;
routing-options {
auto-export;
}
}
}
no-vrf-advertise 문이 계층 수준에서 사용되는 [edit routing-instances hub] 경우 라우팅 테이블 그룹 또는 VRF 내보내기 정책이 필요하지 않습니다. 명령문은 no-vrf-advertise 기본 라우팅 인스턴스hub에서 VPN 경로를 보급하지 않도록 허브 PE를 구성합니다. 대신 이러한 경로는 보조 라우팅 인스턴스hub_downstream에서 보급됩니다. 명령문에 no-vrf-advertise 대한 자세한 내용은 Junos OS 라우팅 프로토콜 라이브러리를 참조하십시오.
계층 수준의 문 [edit routing-instances hub-downstream routing-options] 은 auto-export 각 라우팅 인스턴스에 대해 정의된 경로 대상을 확인하여 허브 인스턴스에서 허브 다운스트림 인스턴스로 내보낸 경로를 식별합니다. 문 사용에 auto-export 대한 자세한 내용은 Junos OS 라우팅 프로토콜 라이브러리를 참조하십시오. 내보내기 정책에 대한 더 많은 예는 자동 경로 내보내기를 사용하여 중복 VPN 구성을 참조하십시오.
허브 PE에서 이 구성을 사용하면 스포크 투 스포크 CE 트래픽이 허브 CE를 통과하고 허브 PE에서 송신 기능(예: 필터링)을 사용하도록 허용합니다.
이 구성 예에서 스포크 CE2와 스포크 CE3 간의 트래픽 포워딩은 다음과 같습니다.
-
스포크 CE2는 스포크 PE2에서 학습된 기본 경로를 사용하여 BGP를 통해 트래픽을 전달합니다.
0.0.0.0/0 *[BGP/170] 02:24:15, localpref 100 AS path: 200 200 I > to 10.49.3.1 via t1-3/0/1.0 -
스포크 PE2는 스포크 VRF 테이블에서 경로 검색을 수행하고 BGP를 통해 학습된 기본 경로를 사용하여 트래픽을 허브 PE1로 전달합니다(P 라우터를 통해. PE2는 두 개의 레이블을 푸시함).
spoke.inet.0: 5 destinations, 5 routes (5 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 0.0.0.0/0 *[BGP/170] 00:00:09, localpref 100, from 10.255.14.176 AS path: 100 I > via t3-0/0/0.0, Push 1029, Push 100224(top) -
허브 PE1은 mpls.0 테이블에서 VPN 레이블
1029에 대한 경로 검색을 수행합니다.mpls.0: 5 destinations, 5 routes (5 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 1029 *[VPN/0] 00:11:49 to table hub_downstream.inet.0, PopVPN 레이블
1029이 광고되는 이유는 다음과 같습니다.-
vrf-table-label명령문은 허브 PE1 구성의[edit routing-instances hub_downsteam]계층 수준에 적용됩니다. -
no-vrf-advertise문은 계층 수준에 적용[edit routing-instances hub]되어 라우터에 보조 테이블의 경로를 알리도록 지시합니다.
따라서 IP 조회는 hub.inet.0 테이블이 아닌 hub_downstream.inet.0 테이블에서 수행됩니다.
show route advertising-protocol허브 PE에서 스포크 PE로 명령을 실행하여 VPN 레이블1029광고를 확인합니다.user@host> show route advertising-protocol hub_downstream.inet.0: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden) * 0.0.0.0/0 (1 entry, 1 announced) BGP group ibgp type Internal Route Distinguisher: 10.255.14.176:3 VPN Label: 1029 Nexthop: Self Localpref: 100 AS path: 100 I Communities: target:200:101 -
-
허브 PE1은 테이블에서
hub_downstream.inet.0IP 조회를 수행하고 트래픽 출력 인터페이스를t3-0/0/0.0허브 CE1로 전달합니다.hub_downstream.inet.0: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden) 0.0.0.0/0 (1 entry, 1 announced) *BGP Preference: 170/-101 Next-hop reference count: 4 Source: 10.49.4.2 Next hop: 10.49.4.2 via t3-0/0/0.0, selected State: <Secondary Active Ext> Peer AS: 100 Age: 3:03 Task: BGP_100.10.49.4.2+1707 Announcement bits (2): 0-KRT 2-BGP.0.0.0.0+179 AS path: 100 I Communities: target:200:101 Localpref: 100 Router ID: 10.49.10.251 Primary Routing Table hub.inet.0기본 라우팅 테이블 은
hub.inet.0(는) 입니다. 이는 계층 수준에서auto-export[edit routing-instances hub-downstream routing-options]명령문이 생성되고 허브 PE1 구성에서 계층 레벨이[edit routing-instances hub]명령문이 생성됨에 따라no-vrf-advertise이 경로가 테이블hub.inet.0에서 hub_downstream.inet.0 테이블로 내보내졌음을 나타냅니다. -
허브 CE1은 BGP를 통해 학습한 라우터를 사용하여 트래픽을 허브 PE1로 다시 전달합니다.
10.49.10.253/32 *[BGP/170] 02:40:03, localpref 100 AS path: 200 200 I > to 10.49.4.1 via t3-3/1/0.0 -
허브 PE1은 허브 VRF 테이블에서 경로 조회를 수행하고 트래픽을 스포크 PE3로 전달합니다(P 라우터를 통해—PE1은 두 개의 레이블을 푸시함).
10.49.10.253/32 *[BGP/170] 01:41:05, localpref 100, from 10.255.14.178 AS path: 100 I > via t1-0/1/0.0, Push 100128, Push 100192(top) -
Spoke PE3는 mpls.0 테이블에서 VPN 레이블
100128에 대한 경로 검색을 수행합니다.100128 *[VPN/170] 02:41:30 > to 10.49.6.2 via t3-0/0/0.0, Pop -
스포크 PE3는 트래픽 출력 인터페이스를
t3-0/0/0.0스포크 CE3로 전달합니다.
허브 및 스포크 VPN 토폴로지 구성: 인터페이스 2개
2-인터페이스 구성을 사용하여 스포크에서 스포크로 경로를 전파합니다.
이 섹션의 예는 다음 구성 요소를 사용하여 두 개의 인터페이스로 허브 앤 스포크 토폴로지를 구성합니다( 그림 2 참조).
-
허브 PE 라우터 1개(라우터 D).
-
허브 PE 라우터에 연결된 허브 CE 라우터 1개. 이 허브 앤 스포크 VPN 토폴로지가 제대로 작동하려면 허브 PE 라우터를 허브 CE 라우터에 연결하는 두 개의 인터페이스가 있어야 하며 각 인터페이스에는 PE 라우터에 고유한 VRF 테이블이 있어야 합니다.
-
첫 번째 인터페이스(여기서는 인터페이스 ge-0/0/0.0)는 허브 CE 라우터에 대한 스포크 경로를 알리는 데 사용됩니다. 이 인터페이스와 연관된 VRF 테이블에는 스포크 PE 라우터가 허브 CE 라우터로 발표하는 경로가 포함되어 있습니다.
-
두 번째 인터페이스(여기서는 인터페이스 ge-0/0/1.0)는 허브 앤 스포크 라우터를 목적지로 하는 허브 CE에서 경로 공지를 수신하는 데 사용됩니다. 이 인터페이스와 연관된 VRF 테이블에는 허브 CE 라우터가 스포크 PE 라우터로 발표한 경로가 포함되어 있습니다. 이 예에서는 두 개의 개별 물리적 인터페이스가 사용됩니다. 또한 허브 PE 라우터와 허브 CE 라우터 간에 동일한 물리적 인터페이스를 공유하는 두 개의 개별 논리적 인터페이스를 구성하는 경우에도 작동합니다.
-
-
2개의 스포크 PE 라우터(라우터 E 및 라우터 F).
-
2개의 스포크 CE 라우터(CE1 및 CE2), 각 스포크 PE 라우터에 1개씩 연결.
-
신호 프로토콜로서의 LDP.
예
이 구성에서 스포크 CE 라우터 CE1의 경로 배포는 다음과 같이 발생합니다.
-
스포크 라우터 CE1이 스포크 PE 라우터 E로의 경로를 발표합니다.
-
라우터 E는 CE1의 경로를 VRF 테이블에 설치합니다.
-
VRF 내보내기 정책을 확인한 후, 라우터 E는 정책을 통과한 라우터 CE1의 경로에 스포크 대상 커뮤니티를 추가하고 허브 PE 라우터인 라우터 D에 알립니다.
-
라우터 D는 인터페이스 ge-0/0/0.0과 연결된 VRF 가져오기 정책을 확인하고 정책과 일치하는 스포크 PE 라우터의 모든 경로를 bgp.l3vpn 라우팅 테이블에 배치합니다. (일치하지 않는 경로는 폐기됩니다.)
-
라우터 D는 인터페이스 ge-0/0/0.0과 연결된 VRF 가져오기 정책을 확인하고 일치하는 모든 경로를 스포크 VRF 테이블에 설치합니다. 경로는 스포크 대상 커뮤니티와 함께 설치됩니다.
-
라우터 D는 인터페이스 ge-0/0/0을 통해 허브 CE에 대한 경로를 발표합니다.
-
허브 CE 라우터는 허브 라우터에 대한 두 번째 인터페이스인 인터페이스 ge-0/0/1을 통해 허브 PE 라우터 D로 돌아가는 경로를 발표합니다.
-
허브 PE 라우터는 허브 CE 라우터에서 학습한 경로를 인터페이스 ge-0/0/1과 연결된 허브 VRF 테이블에 설치합니다.
-
허브 PE 라우터는 인터페이스 ge-0/0/1.0과 연결된 VRF 내보내기 정책을 확인하고 허브 대상 커뮤니티를 추가한 후 모든 스포크와 일치하는 모든 경로를 발표합니다.
그림 3 은 이 스포크 라우터에서 다른 스포크 CE 라우터인 라우터 CE2로 경로가 배포되는 방식을 보여줍니다. 라우터 CE1에서 라우터 CE2로 명령을 실행하는 traceroute 경우 동일한 경로를 따릅니다.
이 예의 마지막 섹션인 라우터별 요약된 허브 앤 스포크 VPN 구성은 그림 2에 표시된 각 서비스 프로바이더 라우터에 대해 VPN 기능을 구성하는 데 필요한 문을 통합합니다.
간의 경로 배포
다음 섹션은 허브 앤 스포크 PE 라우터에서 허브 앤 스포크 토폴로지에 VPN 기능을 구성하는 방법을 설명합니다. CE 라우터에는 VPN에 대한 정보가 없으므로 정상적으로 구성합니다.
- 허브 앤 스포크 PE 라우터에서 IGP 활성화
- 허브 앤 스포크 PE 라우터에서 LDP 구성
- PE 라우터에서 IBGP 구성
- 허브 앤 스포크 PE 라우터에서 VPN 라우팅 인스턴스 구성하기
- PE 라우터에서 VPN 정책 구성
- 라우터별로 요약된 허브 및 스포크 VPN 구성
허브 앤 스포크 PE 라우터에서 IGP 활성화
허브 앤 스포크 PE 라우터가 라우팅 정보를 교환하도록 허용하려면 이러한 모든 라우터에서 IGP를 구성하거나 정적 경로를 구성해야 합니다. IGP는 라우팅 인스턴스 내(즉, 계층 수준이 아님)가 아닌 라우팅 프로토콜 프로세스(rpd)의 기본 인스턴스(즉, [edit protocols] 계층 수준)에서 [edit routing-instances] 구성합니다.
표준 방식으로 IGP를 구성합니다. 이 구성 예에는 구성의 이 부분이 포함되어 있지 않습니다.
허브 앤 스포크 토폴로지의 경로 배포에서 허브 사이트의 CE와 PE 라우터 간에 사용되는 프로토콜이 BGP인 경우, 허브 CE 라우터는 허브 PE 라우터와 스포크 라우터에서 수신한 모든 경로를 허브 PE 라우터와 모든 스포크 라우터로 다시 알립니다. 즉, 허브 앤 스포크 PE 라우터는 AS 번호가 포함된 경로를 수신합니다. 일반적으로 경로에 이 정보가 포함되어 있으면 라우팅 루프가 발생했음을 나타내며 라우터가 경로를 거부합니다. 그러나 VPN 구성이 작동하려면 허브 PE 라우터와 스포크 라우터가 이러한 경로를 허용해야 합니다. 이를 활성화하려면 허브 PE 라우터 및 모든 스포크 라우터의 계층 수준에서 AS [edit routing-options] 를 구성할 때 옵션을 포함합니다loops. 이 구성 예제에서는 1의 값을 지정합니다. 0에서 10 사이의 숫자를 지정할 수 있습니다.
[edit routing-options] autonomous-system as-number loops 1;
허브 앤 스포크 PE 라우터에서 LDP 구성
VPN에 참여하는 허브 앤 스포크 PE 라우터 간의 인터페이스에서 LDP를 구성합니다.
허브 PE 라우터 D에서 LDP를 구성합니다.
[edit protocols]
ldp {
interface so-1/0/0.0;
interface t3-1/1/0.0;
}
스포크 PE 라우터 E에서 LDP를 구성합니다.
[edit protocols]
ldp {
interface fe-0/1/2.0;
}
스포크 PE 라우터 라우터 F에서 LDP를 구성합니다.
[edit protocols]
ldp {
interface fe-1/0/0.0;
}
PE 라우터에서 IBGP 구성
허브 앤 스포크 PE 라우터에서 다음 속성을 가진 IBGP 세션을 구성합니다.
-
VPN family—IBGP 세션이 VPN용임을 나타내려면 문을 포함합니다
family inet-vpn. -
루프백 주소 - 로컬 PE 라우터의 루프백 주소를 지정하는 명령문을 포함합니다
local-address. VPN에 대한 IBGP 세션은 루프백 주소를 통해 실행됩니다. 또한 계층 수준에서 인터페이스를[edit interfaces]구성해야lo0합니다. 이 예는 라우터 구성의 이 부분을 포함하지 않습니다. -
Neighbor address - 문을 포함합니다
neighbor. 허브 라우터에서 각 스포크 PE 라우터의 IP 주소를 지정하고, 스포크 라우터에서 허브 PE 라우터의 주소를 지정합니다.
허브 라우터의 경우, 각 스포크로 IBGP 세션을 구성하고, 각 스포크 라우터에 대해 허브와의 IBGP 세션을 구성합니다. 두 스포크 라우터 사이에는 IBGP 세션이 없습니다.
허브 라우터 D에서 IBGP를 구성합니다. 첫 번째 neighbor 문은 스포크 라우터 E에 대한 IBGP 세션을 구성하고, 두 번째 문은 스포크 라우터 F에 대한 세션을 구성합니다.
[edit protocols]
bgp {
group Hub-to-Spokes {
type internal;
local-address 10.255.14.174;
family inet-vpn {
unicast;
}
neighbor 10.255.14.180;
neighbor 10.255.14.182;
}
}
스포크 라우터 E에서 허브 라우터에 대한 IBGP 세션을 구성합니다.
[edit protocols]
bgp {
group Spoke-E-to-Hub {
type internal;
local-address 10.255.14.180;
neighbor 10.255.14.174 {
family inet-vpn {
unicast;
}
}
}
}
스포크 라우터 F에서 허브 라우터에 대한 IBGP 세션을 구성합니다.
[edit protocols]
bgp {
group Spoke-F-to-Hub {
type internal;
local-address 10.255.14.182;
neighbor 10.255.14.174 {
family inet-vpn {
unicast;
}
}
}
}
허브 앤 스포크 PE 라우터에서 VPN 라우팅 인스턴스 구성하기
허브 PE 라우터가 스포크 PE 라우터로 들어오고 나가는 패킷을 구별할 수 있으려면 두 개의 라우팅 인스턴스로 구성해야 합니다.
-
하나의 라우팅 인스턴스(이 예시에서는)
Spokes-to-Hub-CE는 허브 PE 라우터에서 허브 CE 라우터(이 예시에서 interfacege-0/0/0.0)로 패킷을 전달하는 인터페이스와 연결됩니다. VRF 테이블에는 스포크 PE 라우터와 허브 PE 라우터에서 허브 CE 라우터로 발표되는 경로가 포함되어 있습니다. -
두 번째 라우팅 인스턴스(이 예에서는 )는 허브 CE 라우터에서 허브 PE 라우터(이 예
Hub-CE-to-Spokes시에서 interfacege-0/0/1.0)로 패킷을 전달하는 인터페이스와 연결됩니다. VRF 테이블에는 허브 CE 라우터에서 허브 앤 스포크 PE 라우터까지 발표되는 경로가 포함되어 있습니다.
각 스포크 라우터에서 하나의 라우팅 인스턴스를 구성해야 합니다.
라우팅 인스턴스에서 다음을 정의해야 합니다.
-
경로 구분자 - 한 VPN의 주소를 다른 VPN의 주소와 구별하는 데 사용됩니다.
-
PE 라우터에 VRF 테이블을 생성하는 의 인스턴스 유형
vrf입니다. -
VPN의 일부이며 PE 라우터를 CE 라우터에 연결하는 인터페이스.
-
VRF 가져오기 및 내보내기 정책 두 가져오기 정책 모두 커뮤니티에 대한 참조를 포함해야 합니다. 그렇지 않으면 구성을 커밋하려고 할 때 커밋이 실패합니다. (단, 가져오기 정책에 명령문만
then reject포함된 경우는 예외입니다.) VRF 내보내기 정책에서 스포크 PE 라우터는 스포크 대상 커뮤니티를 연결합니다. -
PE 라우터와 CE 라우터 간의 라우팅은 PE 라우터가 연결된 CE 라우터와 VPN 관련 경로를 배포하는 데 필요합니다. 라우팅 프로토콜(BGP, OSPF 또는 RIP)을 구성하거나 정적 라우팅을 구성할 수 있습니다.
허브 앤 스포크 토폴로지의 경우, 허브 CE 라우터의 각 라우팅 인스턴스에서 서로 다른 정책을 구성해야 합니다. 허브 PE 라우터에서 허브 CE 라우터로 패킷을 전달하는 인터페이스와 연결된 라우팅 인스턴스(이 예에서는 ) Spokes-to-Hub-CE의 경우, 가져오기 정책은 허브 앤 스포크 PE 라우터 간의 IBGP 세션에서 수신된 모든 경로를 허용해야 하며, 내보내기 정책은 허브 CE 라우터에서 수신한 모든 경로를 거부해야 합니다. 허브 CE 라우터에서 허브 PE 라우터(이 예에서는 Hub-CE-to-Spokes)로 패킷을 전달하는 인터페이스와 연결된 라우팅 인스턴스의 경우, 가져오기 정책은 스포크 PE 라우터에서 수신한 모든 경로를 거부해야 하며, 내보내기 정책은 모든 스포크 라우터로 내보내야 합니다.
허브 PE 라우터 D에서 다음 라우팅 인스턴스를 구성합니다. 라우터 D는 최단 경로 우선(OSPF)을 사용하여 허브 CE 라우터에서 경로를 배포합니다.
[edit]
routing-instance {
Spokes-to-Hub-CE {
instance-type vrf;
interface ge-0/0/0.0;
route-distinguisher 10.255.1.174:65535;
vrf-import spoke;
vrf-export null;
protocols {
ospf {
domain-id disable;
export redistribute-vpn;
domain-vpn-tag 0;
area 0.0.0.0 {
interface ge-0/0/0;
}
}
}
}
Hub-CE-to-Spokes {
instance-type vrf;
interface ge-0/0/1.0;
route-distinguisher 10.255.1.174:65534;
vrf-import null;
vrf-export hub;
protocols {
ospf {
export redistribute-vpn;
area 0.0.0.0 {
interface ge-0/0/1.0;
}
}
}
}
}
스포크 PE 라우터 E에서 다음 라우팅 인스턴스를 구성합니다. 라우터 E는 최단 경로 우선(OSPF)을 사용하여 스포크 고객 에지(CE) 라우터 CE1에서 경로를 배포합니다.
[edit]
routing-instance {
Spoke-E-to-Hub {
instance-type vrf;
interface fe-0/1/0.0;
route-distinguisher 10.255.14.80:65035;
vrf-import hub;
vrf-export spoke;
protocols {
ospf {
export redistribute-vpn;
area 0.0.0.0 {
interface fe-0/1/0.0;
}
}
}
}
}
스포크 PE 라우터 F에서 다음 라우팅 인스턴스를 구성합니다. 라우터 F는 최단 경로 우선(OSPF)을 사용하여 스포크 고객 에지(CE) 라우터 CE2와 주고받는 경로를 배포합니다.
[edit]
routing-instance {
Spoke-F-to-Hub {
instance-type vrf;
interface fe-1/0/1.0;
route-distinguisher 10.255.14.182:65135;
vrf-import hub;
vrf-export spoke;
protocols {
ospf {
export redistribute-vpn;
area 0.0.0.0 {
interface fe-1/0/1.0;
}
}
}
}
}
PE 라우터에서 VPN 정책 구성
각 허브 앤 스포크 PE 라우터에서 VPN 가져오기 및 내보내기 정책을 구성하여 각 VPN 내에서 패킷을 포워딩하는 데 사용하는 VRF 테이블에 적절한 경로를 설치해야 합니다.
스포크 라우터에서 허브 라우터와 경로를 교환하는 정책을 정의합니다.
허브 라우터에서 정책을 정의하여 스포크 PE 라우터의 경로를 수락하고 허브 CE 라우터로 배포하며, 그 반대의 경우도 마찬가지입니다. 허브 PE 라우터에는 두 개의 VRF 테이블이 있습니다.
-
Spoke-to-hub VRF 테이블 - 스포크 라우터에서 수신한 경로를 처리하고 이러한 경로를 허브 CE 라우터에 알립니다. 이 VRF 테이블의 경우, 가져오기 정책이 스포크 대상 이름이 존재하고 허브 PE와 스포크 PE 라우터 간의 IBGP 세션에서 경로가 수신되었는지 확인해야 합니다. 이 VRF 테이블은 경로를 내보내서는 안 되므로 내보내기 정책은 모든 경로를 거부해야 합니다.
-
허브-스포크 VRF 테이블 - 허브 CE 라우터에서 수신한 경로를 처리하고 스포크 라우터에 알립니다. 이 VRF 테이블의 경우 내보내기 정책은 허브 대상 커뮤니티를 추가해야 합니다. 이 VRF 테이블은 경로를 가져오지 않아야 하므로 가져오기 정책은 모든 경로를 거부해야 합니다.
VPN 정책에서 VPN 대상 community도 구성합니다.
허브 PE 라우터 D에서 VRF 테이블에 적용할 다음 정책을 구성합니다.
-
spoke- 커뮤니티 대상spoke을 포함하는 스포크 PE 라우터와 IBGP 세션에서 수신된 경로를 수락하고 다른 모든 경로를 거부합니다. -
hub- 커뮤니티 대상 허브를 OSPF에서 수신된 모든 경로(즉, 최단 경로 우선(OSPF)와 허브 CE 라우터 간의 세션에서)에 추가합니다. 다른 모든 경로를 거부합니다. -
null- 모든 경로를 거부합니다. -
redistribute-vpn- OSPF 경로를 라우팅 인스턴스 내의 이웃으로 재배포합니다.[edit] policy-options { policy-statement spoke { term a { from { protocol bgp; community spoke; } then accept; } term b { then reject; } } policy-statement hub { term a { from protocol ospf; then { community add hub; accept; } } term b { then reject; } } policy-statement null { then reject; } policy-statement redistribute-vpn { term a { from protocol bgp; then accept; } term b { then reject; } } community hub members target:65535:1; community spoke members target:65535:2; }
라우터 D에 VRF 정책을 적용하기 위해 라우팅 인스턴스를 구성할 때 및 vrf-import 문을 포함합니다vrf-export.
[edit]
routing-instance {
Spokes-to-Hub-CE {
vrf-import spoke;
vrf-export null;
}
Hub-CE-to-Spokes {
vrf-import null;
vrf-export hub;
}
}
스포크 PE 라우터 E 및 라우터 F에서 VRF 테이블에 적용할 다음 정책을 구성합니다.
-
hub- IBGP 세션에서 수신된 경로와 커뮤니티 대상hub을 포함하는 허브 PE 라우터 간의 경로를 수락하고 다른 모든 경로를 거부합니다. -
spoke- 최단 경로 우선(OSPF)에서 수신한 모든 경로(즉, 최단 경로 우선과 허브 CE 라우터 간의 세션에서)에 커뮤니티 대상 스포크를 추가하고, 다른 모든 경로를 거부합니다. -
redistribute-vpn- OSPF 경로를 라우팅 인스턴스 내의 이웃으로 재배포합니다.
스포크 PE 라우터 E 및 라우터 F에서 다음 VPN 가져오기 및 내보내기 정책을 구성합니다.
[edit]
policy-options {
policy-statement hub {
term a {
from {
protocol bgp;
community hub;
}
then accept;
}
term b {
then reject;
}
}
policy-statement spoke {
term a {
from protocol ospf;
then {
community add spoke;
accept;
}
}
term b {
then reject;
}
}
policy-statement redistribute-vpn {
term a {
from protocol bgp;
then accept;
}
term b {
then reject;
}
}
community hub members target:65535:1;
community spoke members target 65535:2;
}
스포크 라우터에 VRF 정책을 적용하기 위해 라우팅 인스턴스를 구성할 때 및 vrf-import 문을 포함합니다vrf-export.
[edit]
routing-instance {
Spoke-E-to-Hub {
vrf-import hub;
vrf-export spoke;
}
}
[edit]
routing-instance {
Spoke-F-to-Hub {
vrf-import hub;
vrf-export spoke;
}
}
라우터별로 요약된 허브 및 스포크 VPN 구성
라우터 D(허브 PE 라우터)
허브 CE에 스포크 경로를 배포하기 위한 라우팅 인스턴스
Spokes-to-Hub-CE {
instance-type vrf;
interface fe-0/0/0.0;
route-distinguisher 10.255.1.174:65535;
vrf-import spoke;
vrf-export null;
}
인스턴스 라우팅 프로토콜
protocols {
ospf {
domain-id disable;
domain-vpn-tag 0;
export redistribute-vpn;
area 0.0.0.0 {
interface ge-0/0/0.0;
}
}
}
허브 CE 경로를 스포크에 배포하기 위한 라우팅 인스턴스
Hub-CE-to-Spokes {
instance-type vrf;
interface ge-0/0/1.0;
route-distinguisher 10.255.1.174:65534;
vrf-import null;
vrf-export hub;
}
라우팅 인스턴스 라우팅 프로토콜
protocols {
ospf {
export redistribute-vpn;
area 0.0.0.0 {
interface ge-0/0/1.0;
}
}
}
라우팅 옵션(기본 인스턴스)
routing-options {
autonomous-system 1 loops 1;
}
프로토콜(기본 인스턴스)
protocols {
}
LDP 활성화
ldp {
interface so-1/0/0.0;
interface t3-1/1/0.0;
}
IBGP를 구성합니다
bgp {
group Hub-to-Spokes {
type internal;
local-address 10.255.14.174;
family inet-vpn {
unicast;
}
neighbor 10.255.14.180;
neighbor 10.255.14.182;
}
}
VPN 정책 구성
policy-options {
policy-statement spoke {
term a {
from {
protocol bgp;
community spoke;
}
then accept;
}
term b {
then reject;
}
}
policy-statement hub {
term a {
from protocol ospf;
then {
community add hub;
accept;
}
}
term b {
then reject;
}
}
policy-statement null {
then reject;
}
policy-statement redistribute-vpn {
term a {
from protocol bgp;
then accept;
}
term b {
then reject;
}
}
community hub members target:65535:1;
community spoke members target:65535:2;
}
라우터 E (스포크 PE 라우터)
라우팅 인스턴스
routing-instance {
Spoke-E-to-Hub {
instance-type vrf;
interface fe-0/1/0.0;
route-distinguisher 10.255.14.80:65035;
vrf-import hub;
vrf-export spoke;
}
}
인스턴스 라우팅 프로토콜
protocols {
ospf {
export redistribute-vpn;
area 0.0.0.0 {
interface fe-0/1/0.0;
}
}
}
라우팅 옵션(기본 인스턴스)
routing-options {
autonomous-system 1 loops 1;
}
프로토콜(기본 인스턴스)
protocols {
}
LDP 활성화
ldp {
interface fe-0/1/2.0;
}
IBGP를 구성합니다
bgp {
group Spoke-E-to-Hub {
type internal;
local-address 10.255.14.180;
neighbor 10.255.14.174 {
family inet-vpn {
unicast;
}
}
}
}
VPN 정책 구성
policy-options {
policy-statement hub {
term a {
from {
protocol bgp;
community hub;
}
then accept;
}
term b {
then reject;
}
}
policy-statement spoke {
term a {
from protocol ospf;
then {
community add spoke;
accept;
}
}
term b {
then reject;
}
}
policy-statement redistribute-vpn {
term a {
from protocol bgp;
then accept;
}
term b {
then reject;
}
}
community hub members target:65535:1;
community spoke members target:65535:2;
}
라우터 F (스포크 PE 라우터)
라우팅 인스턴스
routing-instance {
Spoke-F-to-Hub {
instance-type vrf;
interface fe-1/0/1.0;
route-distinguisher 10.255.14.182:65135;
vrf-import hub;
vrf-export spoke;
}
}
인스턴스 라우팅 프로토콜
protocols {
ospf {
export redistribute-vpn;
area 0.0.0.0 {
interface fe-1/0/1.0;
}
}
}
라우팅 옵션(기본 인스턴스)
routing-options {
autonomous-system 1 loops 1;
}
프로토콜(기본 인스턴스)
protocols {
}
LDP 활성화
ldp {
interface fe-1/0/0.0;
}
IBGP를 구성합니다
bgp {
group Spoke-F-to-Hub {
type internal;
local-address 10.255.14.182;
neighbor 10.255.14.174 {
family inet-vpn {
unicast;
}
}
}
}
VPN 정책 구성
policy-options {
policy-statement hub {
term a {
from {
protocol bgp;
community hub;
}
then accept;
}
term b {
then reject;
}
}
policy-statement spoke {
term a {
from protocol ospf;
then {
community add spoke;
accept;
}
}
term b {
then reject;
}
}
policy-statement redistribute-vpn {
term a {
from {
protocol bgp;
}
then accept;
}
term b {
then reject;
}
}
community hub members target:65535:1;
community spoke members target:65535:2;
}