VN网络的特点:
- 使用共享的公共网络环境实现各私网的连接;
- 不同的私有网络之间相互不可见。
使用BGP在服务提供商骨干网络上发布VN路由,使用MPLS在服务提供商骨干网上转发VN报文。
网络结构
BGP/MPLS IP VN模型
- CE(Customer Edge):用户网络边缘设备,有接口直接与服务提供商网络相连。CE可以是路由器或交换机,也可以是一台主机。通常情况下,CE“感知”不到VN的存在,也不需要支持MPLS。
- PE(Provider Edge):服务提供商网络的边缘设备,与CE直接相连。在MPLS网络中,对VN的所有处理都发生在PE上,对PE性能要求较高。
- P(Provider):服务提供商网络中的骨干设备,不与CE直接相连。P设备只需要具备基本MPLS转发能力,不维护VN信息。
地址空间重叠:
VN是一种私有网络,不同的VN独立管理自己的地址范围,也称为地址空间(address space)。不同VN的地址空间可能会在一定范围内重合,例如,VN1和VN2都使用10.110.10.0/24网段地址,这就发生了地址空间的重叠(address spaces overlapping)。
问题讨论:
- PE设备怎么区分不同VN客户的相同路由?
- 冲突路由在公网传播时,接收端PE如何正确导入VN客户路由?
- PE设备收到IP数据包后,如何正确的发送给目的VN客户?
BGP的优点提供了思路:
- 公网的VN路由数量庞大,BGP是唯一支持大量路由的协议
- BGP的报文基于TLV的结构,便于扩展
- BGP可以承载附加在路由后面的任何信息,并作为可选属性传递给其他邻居
难点迎刃而解:
- 本地路由冲突问题:可以通过在同一台PE设备上为不同的VN建立单独的路由,这样冲突的路由就被隔离开来
- 在路由传递过程中,为不同的VN路由添加不同的标识,以示区别。这些标识可作为BGP属性传递
- 由于IP报文不可更改,可以在IP报文头前加一些路由信息。由始发路由器打上标记,接收路由器在收到带标记的数据包时,根据标记转发给正确的VN
工作原理
- 共享PE设备上实现重叠路由的隔离就是在PE设备上将来自每个VN的路由放入自己对应的VN Routing Table 中,每个VN Routing Table 只记录对应VN中学来的路由,就像是专用PE一样。这个VN Routing Table 称谓 VRF,即VN路由转发表
- 每个VRF都需要对应一个VN instance ,VN用户对应接口绑定到VN instance 中
- 对于每个PE,可以维护一个或多个VN instance,同时维护一个公网的路由表(全局路由表),多个VN instance实例相互独立且隔离
如何在网络传递过程中区分冲突路由?
- 将VN路由发布到全局路由表之前,使用一个全局唯一的标识和路由绑定,以区分冲突的私网路由。这个标识被称为RD(Route Distinguisher)
- RD即VN路由标识符,由8字节组成,配置时同一PE设备上分配给每个VN的RD必须唯一
- RD用于区分使用相同地址空间的IPv4前缀,增加了RD的IPv4地址称为VN-IPv4地址(即VNv4地址)
- 运营商设备采用BGP协议作为承载VN路由的协议,并将BGP协议进行了扩展,称为MP-BGP(Multiprotocol Extensions for BGP-4)。PE从CE接收到客户的IPv4私网路由后,将客户的私网路由添加各种标识信息后变为VNv4路由放入MP-BGP路由表中,并通过MP-BGP协议在公网上传递。
Hub-Spoke场景中VPN路由的引入问题:
- RD不能解决VN路由正确引入VN的问题
- 我们需要一种类似于Tag的标识,这个标识人工分配,发送端PE发送时打上标识,接收端PE收到后,根据需要将带有相应标识的路由引入VN
- RT属性用于将路由正确引入VN,有两类VN Target 属性,Import Target 和 Export Target,分别用于VN路由的导出和导入
- RT(Route Target)封装在BGP的扩展Community属性中,在路由传递过程中作为可选可传递属性进行传递
- RT的本质是每个VRF表达自己的路由取舍及喜好的属性
- Export Target:本端的路由在导出VRF,转变为VNv4的路由时,标记该属性
- Import Target:对端收到路由时,检查其Export Target属性。当此属性与PE上某个VN实例的Import Target 匹配时,PE就把路由加入到该VN实例中
工作过程:
MPLS VN的工作过程分为两部分:
- MPLS VN路由的传递过程
- MPLS VN路由的转发过程
MPLS VN路由的传递过程分为四个阶段:
- CE与PE之间的路由交换
- CE与PE之间可以通过静态路由协议交换路由信息,也可以通过动态路由协议(如:RIP、OSPF、ISIS、BGP等)交换路由信息
- VRF路由注入MP-BGP的过程
- VRF中的IPv4路由被添加上RD、RT与标签信息成为VNv4的路由放入到MP-BGP的路由表中,通过MP-BGP协议在PE设备之间交换路由信息
- 公网标签的分配过程
- MPLS协议在运营商网络分配公网标签,建立标签隧道,实现私网数据在公网上的转发
- PE之间运行的MP-BGP协议为VN路由分配私网标签,PE设备根据私网标签将数据正确转发给相应的VN
- 运营商的骨干网络中的PE设备与P设备,需要运行IGP协议使运营商网络中的路由可达
- PE设备与P设备需要运行LDP协议,动态分配标签,以建立标签隧道
- MP-BGP路由注入VRF的过程
- PE2在接收到PE1发送的VNv4路由后将检查路由的扩展团体属性,将携带的Export Target值与本端VN的Import Target值比较,数值相同则将路由引入VN的路由表,实现路由的正确引入
MPLS VN的数据转发过程分为三个步骤:
- CE设备到PE设备的数据转发
- 数据从CE1转发给PE1,PE1收到数据包后,查找本地VN1的路由表,发现数据包需要进行标签转发,分配的私网标签为1027,到达目标地址的下一跳为PE2
- PE1通过查找LFIB表,发现到达PE2被分配的公网标签为1030,出接口为G0/0/0,PE1将数据包进行MPLS封装,内层为1027,外层为1030,从G0/0/0转发出去
- 公网设备上的数据转发
- 数据包在公网上转发时,通过MPLS协议已建立好的标签隧道将数据报文转发到PE2。转发过程中只改变公网标签
- P设备收到数据包后,查找LFIB表,进标签为1030的数据包,对应的出标签为3,即将公网标签剥离后,将数据包发送给PE2,PE2收到的是只有内层私网标签的数据包
- PE设备到CE设备的数据转发
- PE2收到剥离公网标签的数据包后,根据私网标签查找转发数据包的下一跳,将数据包正确发送给相应的VN用户
- PE2收到只有一层标签的数据包,查找标签表,发现标签为1027的数据包对应的下一跳为CE2,于是PE2将数据包剥离私网标签,进行IP封装,查找出接口,将数据包发送给CE2处理
至此数据包到达正确的目标用户