HCIP-17.2.6 MPLS VPN原理(上)
解决地址空间重叠问题的讨论
- PE设备怎么区分不同VPN客户的相同路由?
- 冲突路由在公网传播时,接收PE如何正确导入VPN客户路由?
- PE设备收到IP数据包后,如何正确发送给目的VPN客户?
解决VPN客户地址重叠问题需要解决上述三个问题
-
由于BGP的诸多优点对技术难点的解决提供了思路:
-
公共网络上的VPN路由数量庞大,BGP是唯一支持大量路由的协议;
-
BGP的报文基于TLV的结构,便于扩展;
-
BGP可以承载附加在路由后面的任何信息,并作为可选属性传递给其他邻居。
-
- 上面提到的3个技术难点迎刃而解:
- 本地路由冲突的问题:可以通过在同一台PE设备上为不同的VPN建立单独的路由C这样冲突的的路由就被隔离开来;
- 在路由传递过程中,为不同的VPN路由添加不同的标识,以示区别。这些标识可以作为BGP属性进行传递;
- 由于IP报文不可更改,可以在IP报文头前加一些信息。由始发路由器打上标记,接收路由器在收到带标记的的数据包时,根据标记转发给正确的VPN。
下面针对上述三个技术难点,逐一进行解决方案介绍:
如何在网络传递过程中区分冲突路由
(1)共享PE设备上实现重叠路由的隔离就是在PE设备上将来自每个VPN的路由放入自己对应的VPN Routing Table中,每个VPN Routing Table只记录对应VPN中学来的路由,就像是专用PE一样,这个VPN Routing Table成为VRF(VPN Routing and Forwarding Table),即VPN路由转发表。
(2)每一个VRF都需要对应一个VPN Instance,VPN用户对应的接口绑定到VPN Instance中。
(3)RD即VPN路由标识符,由8字节组成,配置时同一PE设备上分配给每个VPN的RD必须唯一。
(4)RD用于区分使用相同地址空间的IPv4地址前缀,增加了RD的IPv4地址称为VPN-IPv4,即VPNv4地址。
(5)运营商设备采用BGP协议作为承载VPN路由的协议,并将BGP协议进行了扩展,称为MP-BGP(Multi-Protocol Externsions for BGP-4),PE从CE接收到客户的IPv4私网路由后,将客户的私网路由添加各种标识信息后,变成VPNv4路由放入MP-BGP路由表中,并通过MP-BGP协议在公网上传递。
RD值—-VPN实例名称—-Site,一一对应
RD值作用:在一台路由器上创建多个路由表来隔离路由,每个路由表就是对于一个VPN实例,对应一个站点,MP-BGP路由Update报文中每个路由条目都携带一个RD值。
Hub-Spoke场景中VPN路由的引入问题
如图所示,某公司分部1与分部2存在172.16.1.1/32与172.16.2.1/32的私网地址,公司希望实现各分部只能与总部通信,分部之间不能相互通信。分配给分部1的VPN RD为1:1,分配给分部2的RD为2:2。如果要使用RD解决路由引入VPN的问题,总部与分部1通信,则RD值需要配置成1:1,总部与分部2通信,则RD值需要配置成2:2,但RD的值在本地PE上是唯一的,并且只能配置一个,因此不能用RD来解决路由正确引入的问题。
Hub-Spoke场景中路由引入问题的解决
RT(Route Target)封装在BGP的扩展Community属性中,在 传递路由时作为可选属性进行传递。
RT的本质是每个VRF表达自己的路由取舍及喜好的属性,有两类VPN Target属性:
- Export Target:本端的路由器在导出VRF转变为VPNv4的路由时标记给属性。
- Import Target:对端收到路由时,检查其Export Target属性,当此属性与PE上某个VPN实例的Import Target匹配时,PE就把路由加入到该VPN实例中。
Hub-Spoke场景中路由引入问题的优化
如何不让分部之间互通,即只让分部和总部互通
如图,分配给所有分部:Import Target为3:12,Export Target为12:3,总部 Import Target为12:3,Export Target为3:12,实现分部只能与总部通信的需求。