最初为了实现两个站点之间跨越公网通信,并保护私网的安全,人们通常采用专线来实现私网之间的连接。由于专线固有缺陷的存在,随着复用技术的出现,一些新的共享带宽技术铸件代替了专线。
新的共享带宽的技术有帧中继、X.25等 ,这些技术其实是一种逻辑的隔离技术,就好像在两个站点之间跨越公共网络建立了专用的隧道,站点通过隧道实现通信。
VPN网络特点:
- 使用共享的公共网络环境实现各私网的连接
- 不同私有网络之间互相不可见
Overlay VPN可以在CE设备上建立隧道,也可以在PE设备上建立隧道
在CE与CE之间建立隧道,并直接传递路由信息,路由协议数据总是在客户设备之间交换,运营商对客户网络结构一无所知。
在PE上为每一个VPN用户建立相应的隧道,路由信息在PE与PE之间传递,公网中的P设备不知道私网的路由信息。
1.共享PE的接入方式
所有VPN用户的CE设备都连到同一台PE上, PE与不同的CE之间运行不同的路由协议(或者是相同路由协议的不同进程)。由始发PE将路由发布到公网上,在接收端的PE上将路由过滤后再发给相应的CE设备。
三个问题:
1.PE设备怎么区分不同VPN客户端的相同路由?
2.冲突路由在公网传播时,接收端PE如何正确导入VPN客户路由?
3.PE设备收到IP数据包后,如何正确发送给目的VPN客户端?
本地路由冲突的问题:可以通过在同一台PE设备上为不同的VPN建立单独的路由,这样冲突的的路由就被隔离开来;
在路由传递过程中,为不同的VPN路由添加不同的标识,以示区别。这些标识可以作为BGP属性进行传递;
由于IP报文不可更改,可以在IP报文头前加一-些信息。由始发路由器打上标记,接收路由器在收到带标记的的数据包时,根据标记转发给正确的VPN。
PE设备在维护多个VPN Routing Table时,同时还维护一个公网的路由表
RD(Route Distinguish)路由区分符
RD不能解决VPN路由正确引入VPN的问题
问题的解决:
RT(Route Target):
RT的作用类似于BGP中扩展团体属性,用于路由信息的分发。它分成lmport RT和Export RT,分别用于路由信息的导入、导出策略。当从VRF表中导出VPN路由时,要用Export RT对VPN路由进行标记;在往VRF表中导入VPN路由时,只有所带
RT标记与VRF表中任意一个lmport RT相符的路由才会被导入到VRF表中。RT使得PE路由器只包含和其直接相连的VPN的路由,而不是全网所有VPN的路由,从而节省了PE路由器的资源,提高了网络拓展性。RT具有全局唯一性,并且只能被一个VPN使用。通过对Import RT和Export RT的合理配置,运营商可以构建不同拓扑类型的VPN,如重叠式VPN和Hub-and-spoke VPN。
如图所示,希望实现分部只能与总部通信,分部之间不能通信。分配给分部1的ExportTarget为1:1 , Import Target为3:3 ;分配给分部2的Export Target为2:2 , Import Target为3:3 ;分配给总部的Export Target为3:3 , Import Target为1:1 , 2:2 ; PE2上收到对端PE1发送的VPNv4的路由后,检查其Export Target。因为总部的Import Target为1:1,2:2 ,所以值为1:1或2:2的路由被引入总部的VRF。PE1的VPNv4的路由引入各分部VRF的过程类似。
方案:
Outer MPLS Label在MPLS VPN中被称为公网标签,用于MPLS网络中转发数据。一般公网标签会在到达PE设备时已被倒数第二跳剥掉,漏出Inner Label。Inner MPLS Label在MPLS VPN中被称为私网标签,用于将数据正确发送到相应的VPN中, PE依靠Inner Label区分数据包属于哪个VPN。
两端PE运行MP-BGP ,通过公网将路由传递给对端
[r2]ip -instance a 创建名为a的vrf空间
[r2--instance-a]ipv4-family 进入IPV4的配置模式下
[r2--instance-a-af-ipv4]route-distinguisher 1:1 RD值
[r2--instance-a-af-ipv4]-target 1:1 RT值 必须对端的PE端一致
[r2]interface GigabitEthernet 0/0/0 进入链接CE端的接口
[r2-GigabitEthernet0/0/0]ip binding -instance a 关联到vrf空间
[r2-GigabitEthernet0/0/0]ip address 192.168.2.2 24 配置私有ip地址
注:在关联到vrf空间前不能配置接口ip,否则该地址的直连路由将进入公有路由表;
[r2]display ip routing-table -instance a 查看空间内的私有路由表
[r2]ping --instance a 192.168.2.1 正常测试将在公有路由表中查询记录;该命令为基于VRF空间
a进行路由查询
[r2]bgp 2
[r2-bgp]router-id 2.2.2.2
先和对端建立正常BGP邻居关系,可用于传递正常的公网路由
[r2-bgp]pe 4.4.4.4 as-number 2
[r2-bgp]pe 4.4.4.4 connect-interface LoopBack 0
[r2-bgp]pe 4.4.4.4 next-hop-local
同时还需要再在IPV4的家族模式中,与对端建立一个VPNV4的关系,用于传递VPNV4路由
[r2-bgp]ipv4-family v4
[r2-bgp-af-v4]peer 4.4.4.4 enable
[r2-bgp]display bgp v4 all peer 查看mp-bgp邻居关系
静态:
[r2]ip route-static -instance a 192.168.1.0 24 192.168.2.1
将本地vrf空间内的静态和直连路由重发布到BGP协议传递到对端的PE
[r2]bgp 2
[r2-bgp]ipv4 -instance a
[r2-bgp-a]import-route direct
[r2-bgp-a]import-route static
display bgp v4 -instance a routing-table 查看mp-bpg的BGP表
OSPF:
[r4]ospf 2 -instance a
[r4-ospf-2]area 0
[r4-ospf-2-area-0.0.0.0]network 192.168.3.1 0.0.0.0
之后使用双向重发布,实现路由共享
[r4]bgp 2
[r4-bgp]ipv4-family -instance a
[r4-bgp-a]import-route ospf 2
[r4]ospf 2 -instance a
[r4-ospf-2]import-route bgp
[r4]display mpls lsp -instance a 查看双层标记的内层标签号