MPLS-VPN简介
MPLS-VPN在大型企业和运营商内部的应用非常广泛,是MPLS技术与VPN的结合。MPLS的精华在于快速标签交换,通过将查找标签列表替换传统的路由表递归查询,从而大大加速了数据包传输。在需要处理巨大数据量的运营商网络内部使用MPLS是一个理想的选择,而运营商通常需要保证客户数据的隐秘性(跨国公司有时也需要保证分公司网络之间的隔离)MPLS-VPN因运而生。
MPLS-VPN包括很多优化服务,如:路由反射器,负载均衡,环路避免,流量工程等。本文只能实现客户跨MPLS网络最简单的通信。关于更多优化服务的文章笔者会在不久后发出。
MPLS-VPN使用到的一些名词:
PE:运营商网络的边界路由器
P:运营商内部的路由器
CE:客户网络的边界路由器
VRF:运营商为确保客户信息的安全性为每个VPN用户单独分配一个路由表,即VRF
RD:VPN网络在运营商网络内传输时如何辨别该路由属于哪个VPN?使用RD在每个IP报文头部加上一个64比特的标识,该标识即RD,通常RD的表示格式为X:X,对于每个VRF而言,RD是唯一的
VPNV4:很显然,在CE-PE间数据包的格式为IP报文,然而在PE间(即运营商网络内)传输的报文头部已经被加上了RD,这样的报文我们称之为VPN报文,由IPV4、IPV6衍生出VPNV4、VPNV6报文
RT:出站PE需要知道将把报文转发到哪个VRF,要实现这个功能就需要知道收到的VPNV4报文属于哪个VRF,显然,是可以通过入站PE设置的 RD来识别的。试想,如果要允许来自多个VPN的报文进入同一个VRF如何实现?这时我们需要一个机制来识别这些VPNV4报文并注入VRF,RT应运而生。RT的作用就是控制报文的的传输方向。RD只能有一个,而RT可以是多个。
MP-BGP:普通的IGP协议只能承载IPV4报文,显然这是不够的,因为我们已经知道了需要一种协议来承载VPN报文,也许在其他范畴内还需要承载IPV6报文,MP-BGP报文的诞生就是为了解决这个问题。它用来承载在运营商网络中传输的VPN报文,并携带一些需要的扩展属性,如RT。
配置简介
1、首先,MPLS-VPN的标签交换只能基于OSPF,所以PE间所有路由器必须首先建立OSPF邻居关系,以及LDP邻居关系
2、PE路由器之间必须建立BGP邻居关系来承载VPN报文,并进入VPN地址族激活该邻居
3、PE路由器需要为每个VPN用户分配独立的VRF路由表,首先需要建立VRF,指定RD和RT,并将连接CE的接口分配到对应的VRF中
4、PE需要与CE建立IGP邻居关系(也可以建立EBGP关系,但思科设备目前不支持在PE-CE间建立IBGP邻居),针对不同的IGP协议,需要用不同的方式于CE建立邻居关系。①OSPF,(config)#routerospf2vrfdevilman②EIGRP,(config- router)#address-familyipv4vrfdevilman,进入ipv4地址族。另外,EIGRP必须给每一个VRF指定一个自治系统号(一台PE可能维护着多个VRF,与对端CE建立邻居关系时必须在相应的VRF中为EIGRP分配与对端CE相同的AS号)③RIP于EIGRP相同,进入地址族中建立邻居关系,不同的是,RIP不需要AS号,RIP必须指定默认度量值,否则无法将BGP重发布进RIP。
5、我们已经知道PE设备的VRF表里包含,PE-CE间路由协议。也同样需要包含MP-BGP路由,这是通过在BGP的ipv4地址族下重分布PE-CE间路由协议来完成的。
6、现在我们需要配置重发布让CE能够发现远端CE设备。首先我们需要明确一点,PE间必须交换VRF路由表,这个工作是由MP-BGP来完成的,所以需要在PE上将PE-CE间IGP重分布进MP-BGP,再将BGP重分布到IGP中。(重分布的顺序随意)
MPLS-VPN配置步骤
PE-CE间IGP
骨干IGP
PE间BGP
PE间M-BGP
PE-CE间IGP重分布到BGP
BGP重分布到PE-CE间IGP