MPLS
MPLS包头:共32bit,前20Bit用作标签,21到23Bit的EXP(用于QOS),1Bit的BOS(标识是否为栈底,1为栈底)、最后8Bit是TTL。
LSP:源到目的需要经过的路径
LSR:能够理解MPLS标签并根据标签转发数据包的路由器称为LSR
上游和下游:在一条LSP上,沿数据包传送的方向,相邻的LSR分别叫上游和下游,下游就是路由的始发者。换句话说数据源就是上游,目的地就是下游。
LDP:标签分发协议
简单地说就是用来为MPLS分发标签的,提高数据的转发速率。
LDP分配方式:DU(下游主动发给上游)、DOD(上游向下游发送请求)
16以下的标签数值为系统保留
LDP标签保留方式:自由(保留)这个比较常用、保守(丢弃)
LDP标签控制方式:有序,这个比较常用、独立(必需等LSR下一跳的标记)
VRF:VPN路由转发实例
1、一张独立的路由表,包括独立的地址空间
2、一组归属于这个VRF的接口的集合
3、一组只用于本VRF的路由协议
RD:(Route-Distinguisher)顾名思义就是路由区分用的,其实就是当地址相同的时候RD才起区分的作用,实际上只需要保证存在相同地址的两个VRF的RD不同即可,这只有在发路由撤消时才能真正体会到RD的价值。PE从CE接收到IPV4路由加上RD后再发给其他PE。IPV4加上RD后变成了VPN-IPV4地址族(64Bit),建议为每个VPN都配置相同的RD。
格式一般采用ASN:nn
ASN代表As号码,nn代表数字,另外一种是address:nn。
RT:(Route-Target)它决定VPN路由的收发和过滤,PE依靠RT属性区分不同VPN之间路由。简单地说就是控制路由表只能有什么样的路由或者只能出去什么样的路由。有import和export之分,一般只采用both。
标签分发:MPLS提供两层标签,公网由LDP分发,私网由MP-BGP来分配。
粗略的实验思路和步骤,仅供参考。
1、保证IGP的可通性,将必要的loopback口(用于mpls邻居发现的Routed
ID或叫transport
IP)宣告进路由进程,否则必需在相连接口上强制启用 mpls ldp router-id serial 1/1 force
2、在相应的MPLS区域及相应的接口上启用LDP,也可以全局启用
r1(config-if)#mpls label protocol ldp
3、在设备相应接口发hello包查找邻居
r1(config-if)#mpls ip
4、在两端PE上配置普通BGP
r1(config)#router bgp 100
rR1(config-router)#nei 3.3.3.3 remote-as 100
R1(config-router)#nei 3.3.3.3 update-source lo 0
5、在PE上创建VRF(将需要VPN服务的对象放入虚拟路由表)
需要通信的两个用户网络之间VRF和RD值最好保持一致
r1(config)#ip vrf vpn1
r1(config-vrf)#rd 100:1
6、在PE上将连接CE的接口划入VRF,其数据的转发决策取决于VRF路由表
r1(config)#int s1/1
r1(config-if)#ip vrf forwarding vpn1
% Interface Serial1/1 IP address 14.1.1.1 removed
due to enabling VRF vpn1
r1(config-if)# ip add 14.1.1.1
255.255.255.0
划入VRF的接口上IP地址会消失,需重新输入
7、在两端的PE上分别创建MP-BGP
r1(config)#router bgp 100
r1(config-router)#address-family vpnv4
创建address-family为vpnv4
r1(config-router-af)#neighbor 3.3.3.3
activate
将正常的BGP邻居在vpnv4里面激活
r1(config-router-af)#neighbor 3.3.3.3
send-community both
强制发送扩展属性
8、为MP-BGP创建VRF
r1(config)#router bgp 100
r1(config-router)#address-family ipv4 vrf
vpn1
9、配置RT控制VRF路由表
r1(config)#ip vrf vpn1
r1(config-vrf)#route-target both 100:1
允许RD为100:1的路由进出
10、配置PE-CE的路由协议
PE-CE启用路由协议,让PE获知用户的路由信息,并导入MP-BGP的VRF表以传递
r1(config)#router rip
r1(config-router)#version 2
r1(config-router)#no auto-summary
r1(config-router)#address-family ipv4 vrf vpn1
PE发布路由都是在address-family中进行的
r1(config-router-af)#no auto-summary
r1(config-router-af)#network 14.0.0.0
r1(config-router-af)#redistribute bgp 100 metric
1
将MP-BGP重发布进rip中,metric设为1,让用户知道远程想要通信的路由
对端PE-CE之间路由协议为OSPF时的重分布配置
r3(config)#router ospf 100 vrf vpn1
r3(config-router)#router-id 36.1.1.3
r3(config-router)#network 36.1.1.3 0.0.0.0 area
0
r3(config-router)#redistribute bgp 100
subnets
对端CE上的OSPF配置为正常的OSPF配置
11、将PE-CE间的路由重分布进MP-BGP
r1(config)#router bgp 100
r1(config-router)#address-family ipv4 vrf
vpn1
进入相应的address-family中重分布
r1(config-router-af)#redistribute rip
到此,PE上的VRF路由表已经有了远程用户的路由,不出意外是可以通信的。
下面是一些测试截图
1、启用LDP与mpls ip之后查看标签分发
2、查看两端PE上的普通BGP建立
3、在PE上查看创建的VRF
划入VRF的接口路由已从全局路由表中消失
4、查看MP-BGP的建立
5、PE-CE运行路由协议,并将MP-BGP重分布进二者之间协议时,PE上的VRF路由表
成功获取到用户内部的路由
6、在PE上将PE-CE运行的IGP协议手工重分布进MP-BGP
查看PE上MP-BGP的VRF路由表
7、两协议重分布完成后在PE上再次查看VRF路由表
成功获取到远程的192.168.1.0路由
8、查看CE上的全局路由
拥有直连和远程用户的路由
9、CE成功与远程用户通信
10、跟踪路由,标签正常分发
11、PE与CE间的通信