MPLS ××× (MPBGP+MPLS+×××)
多协议标签交换:(路由条目-FEC-标签)
MPLS Label(标签)一般是由运营商端的边缘路由器添加
三层设备转发机制:1.进程交换
2.快速交换
3.CEF
注意:只能使用一种
进程交换:路由器对收到的每条路由条目都查一次路由表,和ARP表(帧中继映射表)
负载均衡:基于每个数据包的负载均衡
基于每个目的地的负载均衡
快速交换:收到数据后先分流(默认为256个),路由器依据每个流中的第一个路由条目查看路由表和 ARP表,然后再ASIC中形成缓存,流中的其他数据就可以直接转发
缺点:需要第一个报文触发,不怎么支持负载均衡
CEF(cisco私有)
开启后形成两张表:1. FIB-基于优化的路由表,基于拓扑表解决递归查询
2. Adjacency table-ARP表,帧中继映射表
注意:只有FIB中的路由才能插入标签
启用CEF的命令:
R1(config)#ip cef
R1(config)#int f0/0
R1(config-if)#mpls ip
控制层面分发标签:
LDP (TDP) BGP RSVP
1.TDP:
应用层协议:
L2 IP UDP TDP FCS L2 IP TCP TDP FCS
两种载和:UDP / TCP 711端口号
LDP:端口号 646
区别:TDP和LDP唯一区别就是TDP传递标签不支持认证,LDP支持认证
LIB表(标签信息库):用来存放所有的TDP/LDP邻居分发的他们的标签,以及本地路由标签
LFIB(标签转发信息库):12.4之前的版本默认开启TDP,之后默认开启LDP
3.BGP:只产生于数据层面
4.RSVP:资源预留协议
MPLS Labels
只要网络通就能使用:
帧模式:MPLS
信源模式:MPLS (ATM中)
0-15号标签不能使用,被保留
载和: Label Exp S TTL
20 bit 3bit 2bit 8bit
EXP:用于给帧打标记,做Qos
标签打在二层和三层的数据包之间(第一个标签离三层最近)
LSR (P) :标签交换 FIB
Edge LSR(PE):标签压入,标签拆除 (FIB/LFIB)
只要收到的帧带标签,就一定会查LFIB
注意:在一台路由器不能为不同的路由条目分发相同的标签,每条路由条目对应一个唯一的标签,例外是0-15标签,如果给路由条目分发的标签取值范围在0-15之间,此时多条路由可以对应相同的被保留标签。
TDP/LDP只能为路由表中的 S , C ,O ,R , I , D 分发标签,不为BGP分发标签,标签具有本地意义
倒数第二跳标签弹出:
3号标签,隐式空标签,可以同时分发给多条路由条目
对于一条路由条目,如果该路由器路由表中该路由条目的出战接口是一个没有启用MPLS的接口,则该路由器就是最后一跳路由器,或者该路由条目对应的下一跳邻居不是本地的TDP/LDP邻居时,该路由器同样为最后一跳路由器。只要一台路由器收到了关于一条路由条目的标签是3,则该路由器就会判断自己是倒数第二跳路由器。
配置:
新式机
R1(config)#ip cef
R1(config)#int f0/0
R1(config-if)#mpls ip
老式机
R1(config)#int f0/0
R1(config-if)#tag-switching ip
修改MPLS的RID:
R1(config)#mpls ldp router-id loopback 0 force
修改MPLS的MTU:
R1(config)#int f0/0
R1(config-if)#mpls mtu 1504
各种查看命令:
R1#show ip cef
R1#show ip cef detail 查看FIB
R1#show mpls ldp bindings 查看LIB,用来转发数据
R1#show mpls forwarding-table 查看LFIB
R1#show mpls ldp neighbor
traceroute 3.3.3.3 source 2.2.2.2
限制分发标签的范围:R1(config)#mpls label range 100 200
只把ACL10中的路由分发标签,发给ACL20的路由器中
R1(config)#mpls ldp advertise-labels for 10 to 20
注意:当运行了BGP之后,MPLS本身不会为BGP的路由条目分发标签,但是MPLS会为BGP的下一跳分发标签,以此来解决BGP数据层面的路由黑洞
×××:私有专线
逻辑上把相隔甚远的地址连接在一起
可以使用私有地址
对等体到对等体×××
VRF
一个VRF就是一个MPLS ×××中的的进程,一台PE为一个公司提供MPLS ×××就要为该公司定义一个本地唯一的VRF进程
PE创建了VRF之后,一定要将其和某个连接CE接口关联
RD(路由区分器) 64bit 只有本地意义
RT: import / export (导入/导出),具有全局意义,一定要相同
注意:只有PE需要起VRF
配置:
R1(config)#ip cef
R1(config)#int f0/0
R1(config-if)#mpls ip
R1(config)#ip vrf A
R1(config-vrf)#rd 10:10
R3(config-vrf)#route-target 10:10
R1(config)#int s1/0
R1(config-if)#ip vrf forwarding A (需要在配置一次IP地址)
R3(config)#router bgp 1
R3(config-router)#neighbor 2.2.2.2 remote-as 1
R3(config-router)#neighbor 2.2.2.2 update-source loopback 0
R2(config-router)#neighbor 3.3.3.3 next-hop-self
R3(config-router)#address-family ***v4
R3(config-router-af)#neighbor 2.2.2.2 activate
R3(config-router-af)#neighbor 2.2.2.2 send-community both (发送时携带团体属性)
R2(config)#router bgp 1
R2(config-router)#address-family ipv4 vrf A
R2(config-router-af)#network 4.4.4.0 mask 255.255.255.0
R2(config-router-af)#redistribute rip metric 10
R3(config)#router rip
R3(config-router)#address-family ipv4 vrf A
R3(config-router-af)#redistribute bgp 1 metric transparent(度量值不变)
注意:在PE和CE之间运行EIGRP时一定要打
R3(config)#router eigrp 10
R3(config-router)#address-family ipv4 vrf A
R3(config-router-af)#autonomous-system 10
启用OSPF的命令
R3(config)#router ospf 110 vrf A