全网状 VPN
配置简单的全网状 VPN 拓扑
此示例说明如何设置简单的全网状服务提供商 VPN 配置,该配置由以下组件组成(参见 图 1):
两个独立的 VPN(VPN-A 和 VPN-B)
两个提供商边缘 (PE) 路由器,均为 VPN-A 和 VPN-B 提供服务
RSVP 作为信令协议
一个 RSVP 标签交换路径 (LSP),通过一个提供商 (P) 路由器在两个 PE 路由器之间建立隧道
示例
在此配置中,VPN A 中从路由器 VPN-A-Paris 到路由器 VPN-A-Tokyo 的路由分配如下所示:
客户边缘 (CE) 路由器 VPN-A-Paris 通告到 PE 路由器路由器 A 的路由。
路由器 A 将接收到的通告路由安装到其 VPN 路由和转发 (VRF) 表 VPN-A.inet.0 中。
路由器 A 为其与路由器 VPN-A-Paris 之间的接口创建 MPLS 标签。
路由器 A 检查其 VRF 导出策略。
路由器 A 使用其路由识别符将路由器 VPN-A-Paris 的互联网协议版本 4 (IPv4) 路由转换为 VPN IPv4 格式,并通过两个 PE 路由器之间的 IBGP 将这些路由通告到 PE 路由器 C。
路由器 C 检查其 VRF 导入策略,并将所有与该策略匹配的路由安装到其 bgp.l3vpn.0 路由表中。(任何不匹配的路由都将被丢弃。
路由器 C 检查其 VRF 导入策略,并将所有匹配的路由安装到其 VPN-A.inet.0 路由表中。路由以 IPv4 格式安装。
路由器 C 向 CE 路由器 VPN-A-Tokyo 通告其路由,后者将其安装到其主路由表中。(对于运行 Junos OS 的路由平台,主路由表为 inet.0。
路由器 C 使用其与路由器 A 之间的 LSP 路由来自路由器 VPN-A-Tokyo 发往路由器 VPN-A-Paris 的所有数据包。
此示例的最后一部分整合了 在图 1 所示的每台服务 P 路由器上配置 VPN 功能所需的语句。
在此示例中,专用自治系统 (AS) 编号用于路由识别符和路由目标。此数字仅用于说明。配置 VPN 时,应使用分配的 AS 编号。
以下章节介绍如何在 PE 和 P 路由器上配置 VPN 功能。CE 路由器没有关于 VPN 的信息,因此您可以正常配置它们。
- 在 PE 和 P 路由器上启用 IGP
- 在 P 路由器上启用 RSVP 和 MPLS
- 配置 PE 路由器之间的 MPLS LSP 隧道
- 在 PE 路由器上配置 IBGP
- 在 PE 路由器上配置 VPN 的路由实例
- 在 PE 路由器上配置 VPN 策略
- 按路由器汇总的简单 VPN 配置
在 PE 和 P 路由器上启用 IGP
要允许 PE 和 P 路由器在它们之间交换路由信息,必须在所有这些路由器上配置内部网关协议 (IGP),或者必须配置静态路由。您可以在路由协议进程 (rpd) 的主实例上(即在 [edit protocols] 层次结构级别)上配置 IGP,而不在 VPN 路由实例内(即,不在 [edit routing-instances] 层次结构级别上)。
以标准方式配置 IGP。此配置示例不包括此部分配置。
在 P 路由器上启用 RSVP 和 MPLS
在 P 路由器路由器 B 上,您必须配置 RSVP 和 MPLS,因为此路由器位于两个 PE 路由器(路由器 A 和路由器 C)之间的 MPLS LSP 路径上:
[edit]
protocols {
rsvp {
interface so-4/0/0.0;
interface so-6/0/0.0;
}
mpls {
interface so-4/0/0.0;
interface so-6/0/0.0;
}
}
配置 PE 路由器之间的 MPLS LSP 隧道
在此配置示例中,RSVP 用于 VPN 信令。因此,除了配置 RSVP 之外,还必须在 IGP 中启用流量工程支持,并且必须创建 MPLS LSP 以通过隧道传输 VPN 流量。
在 PE 路由器 A 上,启用 RSVP 并配置 MPLS LSP 隧道的一端。在此示例中,为 OSPF 启用了流量工程支持。配置 MPLS LSP 时,请包含 interface 所有参与 MPLS 的接口(包括 PE 和 CE 路由器的接口)的语句。需要 PE 和 CE 路由器之间接口的语句,以便 PE 路由器可以为专用接口创建 MPLS 标签。在此示例中,第一条 interface 语句在连接到 LSP 的接口上配置 MPLS,其余三条语句在将 PE 路由器连接到 CE 路由器的接口上配置 MPLS。
[edit]
protocols {
rsvp {
interface so-3/0/0.0;
}
mpls {
label-switched-path RouterA-to-RouterC {
to 10.255.245.47;
}
interface so-3/0/0.0;
interface so-6/0/0.0;
interface so-6/0/1.0;
interface ge-0/3/0.0;
}
ospf {
traffic-engineering;
area 0.0.0.0 {
interface so-3/0/0.0;
}
}
}
在 PE 路由器 C 上,启用 RSVP 并配置 MPLS LSP 隧道的另一端。同样,会为 OSPF 启用流量工程支持,并且您可以在 LSP 和 CE 路由器的接口上配置 MPLS。
[edit]
protocols {
rsvp {
interface so-2/0/0.0;
}
mpls {
label-switched-path RouterC-to-RouterA {
to 10.255.245.68;
}
interface so-2/0/0.0;
interface ge-1/0/0.0;
interface at-1/2/0.0;
}
ospf {
traffic-engineering;
area 0.0.0.0 {
interface so-2/0/0.0;
}
}
}
在 PE 路由器上配置 IBGP
在 PE 路由器上,使用以下属性配置 IBGP 会话:
VPN 家族 - 要指示 IBGP 会话用于 VPN,请添加
family inet-vpn语句。环路地址 — 包括
local-address语句,用于指定本地 PE 路由器的环路地址。VPN 的 IBGP 会话通过环路地址运行。您还必须在[edit interfaces]层次结构级别配置lo0接口。该示例不包括路由器配置的这一部分。邻接方地址 — 包括
neighbor语句,指定相邻 PE 路由器的 IP 地址,即其环路 (lo0) 地址。
在 PE 路由器 A 上,配置 IBGP:
[edit]
protocols {
bgp {
group PE-RouterA-to-PE-RouterC {
type internal;
local-address 10.255.245.68;
family inet-vpn {
unicast;
}
neighbor 10.255.245.47;
}
}
}
在 PE 路由器 C 上,配置 IBGP:
[edit]
protocols {
bgp {
group PE-RouterC-to-PE-RouterA {
type internal;
local-address 10.255.245.47;
family inet-vpn {
unicast;
}
neighbor 10.255.245.68;
}
}
}
在 PE 路由器上配置 VPN 的路由实例
这两款 PE 路由器都为 VPN-A 和 VPN-B 提供服务,因此您必须在每台路由器上配置两个路由实例,每个 VPN 一个。对于每个 VPN,您必须在路由实例中定义以下内容:
路由识别符,对于 PE 路由器上的每个路由实例,它必须是唯一的。
它用于区分一个 VPN 中的地址和另一个 VPN 中的地址。
的实例类型
vrf,用于在 PE 路由器上创建 VRF 表。连接到 CE 路由器的接口。
VRF 导入和导出策略,在为同一 VPN 提供服务的每台 PE 路由器上,这些策略必须相同。除非导入策略仅
then reject包含语句,否则它必须包含对社区的引用。否则,当您尝试提交配置时,提交将失败。注意:在此示例中,专用 AS 编号用于路由识别符。此数字仅用于说明。配置 VPN 时,应使用分配的 AS 编号。
PE 和 CE 路由器之间的路由,这是 PE 路由器将 VPN 相关路由分发到连接的 CE 路由器和从连接的 CE 路由器分发 VPN 相关路由所必需的。您可以配置路由协议(BGP、OSPF 或 RIP),也可以配置静态路由。
在 PE 路由器 A 上,为 VPN-A 配置以下路由实例。在此示例中,路由器 A 使用静态路由来分配与其连接的两台 CE 路由器之间的路由。
[edit]
routing-instance {
VPN-A-Paris-Munich {
instance-type vrf;
interface so-6/0/0.0;
interface so-6/0/1.0;
route-distinguisher 65535:0;
vrf-import VPN-A-import;
vrf-export VPN-A-export;
routing-options {
static {
route 172.16.0.0/16 next-hop so-6/0/0.0;
route 172.17.0.0/16 next-hop so-6/0/1.0;
}
}
}
}
在 PE 路由器 C 上,为 VPN-A 配置以下路由实例。在此示例中,路由器 C 使用 BGP 分配与其连接的 CE 路由器之间的路由。
[edit]
routing-instance {
VPN-A-Tokyo {
instance-type vrf;
interface ge-1/0/0.0;
route-distinguisher 65535:1;
vrf-import VPN-A-import;
vrf-export VPN-A-export;
protocols {
bgp {
group VPN-A-Site2 {
peer-as 1;
neighbor 10.12.1.2;
}
}
}
}
}
在 PE 路由器 A 上,为 VPN-B 配置以下路由实例。在此示例中,路由器 A 使用 OSPF 分配与其连接的 CE 路由器之间的路由。
[edit]
policy-options {
policy-statement bgp-to-ospf {
from {
protocol bgp;
route-filter 192.168.1.0/24 orlonger;
}
then accept;
}
}
routing-instance {
VPN-B-Madrid {
instance-type vrf;
interface ge-0/3/0.0;
route-distinguisher 65535:2;
vrf-import VPN-B-import;
vrf-export VPN-B-export;
protocols {
ospf {
export bgp-to-ospf;
area 0.0.0.0 {
interface ge-0/3/0;
}
}
}
}
}
在 PE 路由器 C 上,为 VPN-B 配置以下路由实例。在此示例中,路由器 C 使用 RIP 分配与其连接的 CE 路由器之间的路由。
[edit]
policy-options {
policy-statement bgp-to-rip {
from {
protocol bgp;
route-filter 192.168.2.0/24 orlonger;
}
then accept;
}
}
routing-instance {
VPN-B-Osaka {
instance-type vrf;
interface at-1/2/0.0;
route-distinguisher 65535:3;
vrf-import VPN-B-import;
vrf-export VPN-B-export;
protocols {
rip {
group PE-C-to-VPN-B {
export bgp-to-rip;
neighbor at-1/2/0;
}
}
}
}
}
在 PE 路由器上配置 VPN 策略
在每个 PE 路由器上配置 VPN 导入和导出策略,以便在 PE 路由器的 VRF 表中安装相应的路由。VRF 表用于转发 VPN 中的数据包。对于 VPN-A,VRF 表为 VPN-A.inet.0,对于 VPN-B,则为 VPN-B.inet.0。
在 VPN 策略中,您还可以配置 VPN 目标社区。
在以下示例中,专用 AS 编号用于路由目标。此数字仅用于说明。配置 VPN 时,应使用分配的 AS 编号。此示例中显示的策略限定符只是 VPN 正常运行所需的限定符。您可以根据需要为您配置的任何策略配置其他限定符。
在 PE 路由器 A 上,配置以下 VPN 导入和导出策略:
[edit]
policy-options {
policy-statement VPN-A-import {
term a {
from {
protocol bgp;
community VPN-A;
}
then accept;
}
term b {
then reject;
}
}
policy-statement VPN-A-export {
term a {
from protocol static;
then {
community add VPN-A;
accept;
}
}
term b {
then reject;
}
}
policy-statement VPN-B-import {
term a {
from {
protocol bgp;
community VPN-B;
}
then accept;
}
term b {
then reject;
}
}
policy-statement VPN-B-export {
term a {
from protocol ospf;
then {
community add VPN-B;
accept;
}
}
term b {
then reject;
}
}
community VPN-A members target:65535:4;
community VPN-B members target:65535:5;
}
在 PE 路由器 C 上,配置以下 VPN 导入和导出策略:
[edit]
policy-options {
policy-statement VPN-A-import {
term a {
from {
protocol bgp;
community VPN-A;
}
then accept;
}
term b {
then reject;
}
}
policy-statement VPN-A-export {
term a {
from protocol bgp;
then {
community add VPN-A;
accept;
}
}
term b {
then reject;
}
}
policy-statement VPN-B-import {
term a {
from {
protocol bgp;
community VPN-B;
}
then accept;
}
term b {
then reject;
}
}
policy-statement VPN-B-export {
term a {
from protocol rip;
then {
community add VPN-B;
accept;
}
}
term b {
then reject;
}
}
community VPN-A members target:65535:4;
community VPN-B members target:65535:5;
}
要在路由器上应用 VPN 策略,请在配置路由实例时添加 vrf-export 和 vrf-import 语句。对于这两个 VPN,VRF 导入和导出策略处理在 PE 路由器之间运行的 IBGP 会话中的路由分布。
要在 PE 路由器 A 上应用 VPN 策略,请添加以下语句:
[edit]
routing-instance {
VPN-A-Paris-Munich {
vrf-import VPN-A-import;
vrf-export VPN-A-export;
}
VPN-B-Madrid {
vrf-import VPN-B-import;
vrf-export VPN-B-export;
}
}
要在 PE 路由器 C 上应用 VPN 策略,请添加以下语句:
[edit]
routing-instance {
VPN-A-Tokyo {
vrf-import VPN-A-import;
vrf-export VPN-A-export;
}
VPN-B-Osaka {
vrf-import VPN-B-import;
vrf-export VPN-B-export;
}
}
按路由器汇总的简单 VPN 配置
路由器 A(PE 路由器)
VPN-A 的路由实例
routing-instance {
VPN-A-Paris-Munich {
instance-type vrf;
interface so-6/0/0.0;
interface so-6/0/1.0;
route-distinguisher 65535:0;
vrf-import VPN-A-import;
vrf-export VPN-A-export;
}
}
实例路由协议
routing-options {
static {
route 172.16.0.0/16 next-hop so-6/0/0.0;
route 172.17.0.0/16 next-hop so-6/0/1.0;
}
}
VPN-B 的路由实例
routing-instance {
VPN-B-Madrid {
instance-type vrf;
interface ge-0/3/0.0;
route-distinguisher 65535:2;
vrf-import VPN-B-import;
vrf-export VPN-B-export;
}
}
实例路由协议
protocols {
ospf {
area 0.0.0.0 {
interface ge-0/3/0;
}
}
}
主协议实例
protocols {
}
启用 RSVP
rsvp {
interface so-3/0/0.0;
}
配置 MPLS LSP
mpls {
label-switched-path RouterA-to-RouterC {
to 10.255.245.47;
}
interface so-3/0/0.0;
interface so-6/0/0.0;
interface so-6/0/1.0;
interface ge-0/3/0.0;
}
配置 IBGP
bgp {
group PE-RouterA-to-PE-RouterC {
type internal;
local-address 10.255.245.68;
family inet-vpn {
unicast;
}
neighbor 10.255.245.47;
}
}
配置 OSPF 以支持流量工程
ospf {
traffic-engineering;
area 0.0.0.0 {
interface so-3/0/0.0;
}
}
配置 VPN 策略
policy-options {
policy-statement VPN-A-import {
term a {
from {
protocol bgp;
community VPN-A;
}
then accept;
}
term b {
then reject;
}
}
policy-statement VPN-A-export {
term a {
from protocol static;
then {
community add VPN-A;
accept;
}
}
term b {
then reject;
}
}
policy-statement VPN-B-import {
term a {
from {
protocol bgp;
community VPN-B;
}
then accept;
}
term b {
then reject;
}
}
policy-statement VPN-B-export {
term a {
from protocol ospf;
then {
community add VPN-B;
accept;
}
}
term b {
then reject;
}
}
community VPN-A members target:65535:4;
community VPN-B members target:65535:5;
}
路由器 B(P 路由器)
主协议实例
protocols {
}
启用 RSVP
rsvp {
interface so-4/0/0.0;
interface so-6/0/0.0;
}
启用 MPLS
mpls {
interface so-4/0/0.0;
interface so-6/0/0.0;
}
路由器 C(PE 路由器)
VPN-A 的路由实例
routing-instance {
VPN-A-Tokyo {
instance-type vrf;
interface ge-1/0/0.0;
route-distinguisher 65535:1;
vrf-import VPN-A-import;
vrf-export VPN-A-export;
}
}
实例路由协议
protocols {
bgp {
group VPN-A-Site2 {
peer-as 1;
neighbor 10.12.1.2;
}
}
}
VPN-B 的路由实例
VPN-B-Osaka {
instance-type vrf;
interface at-1/2/0.0;
route-distinguisher 65535:3;
vrf-import VPN-B-import;
vrf-export VPN-B-export;
}
实例路由协议
protocols {
rip {
group PE-C-to-VPN-B {
neighbor at-1/2/0;
}
}
}
主协议实例
protocols {
}
启用 RSVP
rsvp {
interface so-2/0/0.0;
}
配置 MPLS LSP
mpls {
label-switched-path RouterC-to-RouterA {
to 10.255.245.68;
}
interface so-2/0/0.0;
interface ge-1/0/0.0;
interface at-1/2/0.0;
}
配置 IBGP
bgp {
group PE-RouterC-to-PE-RouterA {
type internal;
local-address 10.255.245.47;
family inet-vpn {
unicast;
}
neighbor 10.255.245.68;
}
}
配置 OSPF 以支持流量工程
ospf {
traffic-engineering;
area 0.0.0.0 {
interface so-2/0/0.0;
}
}
配置 VPN 策略
policy-options {
policy-statement VPN-A-import {
term a {
from {
protocol bgp;
community VPN-A;
}
then accept;
}
term b {
then reject;
}
}
policy-statement VPN-A-export {
term a {
from protocol bgp;
then {
community add VPN-A;
accept;
}
}
term b {
then reject;
}
}
policy-statement VPN-B-import {
term a {
from {
protocol bgp;
community VPN-B;
}
then accept;
}
term b {
then reject;
}
}
policy-statement VPN-B-export {
term a {
from protocol rip;
then {
community add VPN-B;
accept;
}
}
term b {
then reject;
}
}
community VPN-A members target:65535:4;
community VPN-B members target:65535:5;
}
使用路由反射器配置全网状 VPN 拓扑
此示例是全网状 VPN 拓扑示例(在 配置简单全网状 VPN 拓扑中介绍)的变体,其中其中一个 PE 路由器是 BGP 路由反射器。在此变体中, 配置简单全网状 VPN 拓扑 中的路由器 C 是路由反射器。对其配置的唯一更改是,在配置 BGP 组时需要包含语 cluster 句:
[edit]
protocols {
bgp {
group PE-RouterC-to-PE-RouterA {
type internal;
local-address 10.255.245.47;
family inet-vpn {
unicast;
}
neighbor 10.255.245.68;
cluster 4.3.2.1;
}
}
}