目录
1)拓扑
2)需求:R6的10.10.6.6/32和R7 的10.10.7.7/32 互通
3)配置步骤:
????????-配置接口地址
????????-在AS200内部配置OSPF
????????-在AS100/200/300 中配置BGP
4)基础配置命令:
sysname R6 # interface GigabitEthernet0/0/0 ip address 192.168.16.6 255.255.255.0 # interface LoopBack0 ip address 10.10.6.6 255.255.255.255 # bgp 100 router-id 6.6.6.6 peer 192.168.16.1 as-number 200 network 10.10.6.6 32 sysname R1 # interface GigabitEthernet0/0/0 ip address 192.168.12.1 255.255.255.0 # interface GigabitEthernet0/0/1 ip address 192.168.16.1 255.255.255.0 # interface LoopBack0 ip address 10.10.1.1 32 # bgp 200 router-id 1.1.1.1 peer 10.10.5.5 as-number 200 peer 10.10.5.5 connect-interface LoopBack0 peer 192.168.16.6 as-number 100 peer 10.10.5.5 next-hop-local # ospf 1 router-id 1.1.1.1 area 0.0.0.0 network 10.10.1.1 0.0.0.0 network 192.168.12.0 0.0.0.255 sysname R2 # interface GigabitEthernet0/0/0 ip address 192.168.12.2 255.255.255.0 # interface GigabitEthernet0/0/1 ip address 192.168.23.2 255.255.255.0 # interface LoopBack0 ip address 10.10.2.2 32 # ospf 1 router-id 2.2.2.2 area 0.0.0.0 network 10.10.2.2 0.0.0.0 network 192.168.12.0 0.0.0.255 network 192.168.23.0 0.0.0.255 sysname R3 # interface GigabitEthernet0/0/0 ip address 192.168.23.3 255.255.255.0 # interface GigabitEthernet0/0/1 ip address 192.168.34.3 255.255.255.0 # interface LoopBack0 ip address 10.10.3.3 32 # ospf 1 router-id 3.3.3.3 area 0.0.0.0 network 10.10.3.3 0.0.0.0 network 192.168.23.0 0.0.0.255 network 192.168.34.0 0.0.0.255 sysname R4 # interface GigabitEthernet0/0/0 ip address 192.168.34.4 255.255.255.0 # interface GigabitEthernet0/0/1 ip address 192.168.45.4 255.255.255.0 # interface LoopBack0 ip address 10.10.4.4 32 # ospf 1 router-id 4.4.4.4 area 0.0.0.0 network 10.10.4.4 0.0.0.0 network 192.168.34.0 0.0.0.255 network 192.168.45.0 0.0.0.255 sysname R5 # interface GigabitEthernet0/0/0 ip address 192.168.45.5 255.255.255.0 # interface GigabitEthernet0/0/1 ip address 192.168.57.5 255.255.255.0 # interface LoopBack0 ip address 10.10.5.5 32 # bgp 200 router-id 5.5.5.5 peer 10.10.1.1 as-number 200 peer 10.10.1.1 connect-interface LoopBack0 peer 192.168.57.7 as-number 300 peer 10.10.1.1 next-hop-local # ospf 1 router-id 5.5.5.5 area 0.0.0.0 network 10.10.5.5 0.0.0.0 network 192.168.45.0 0.0.0.255 sysname R7 # interface GigabitEthernet0/0/0 ip address 192.168.57.7 255.255.255.0 # interface LoopBack0 ip address 10.10.7.7 32 # bgp 300 router-id 7.7.7.7 peer 192.168.57.5 as-number 200 network 10.10.7.7 32
5)验证:
验证R1—R5的OSPF邻居关系
在验证R6-R1-R5-R7的BGP邻居关系
在验证R6和R7是否相互学习到路由
<R6>dis bgp routing-table BGP Local router ID is 6.6.6.6 Total Number of Routes: 2 Network NextHop MED LocPrf PrefVal Path/Ogn *> 10.10.6.0/24 0.0.0.0 0 0 i *> 10.10.7.0/24 192.168.16.1 0 200 300i <R7>dis bgp routing-table BGP Local router ID is 7.7.7.7 Total Number of Routes: 2 Network NextHop MED LocPrf PrefVal Path/Ogn *> 10.10.6.0/24 192.168.57.5 0 200 100i *> 10.10.7.0/24 0.0.0.0 0 0 i
4)配置完成后:
-R6中能够学习到去往10.10.7.7 最优的路由
-R7中能够学习到去往10.10.6.6 最优的路由
但是10.10.6.6 和10.10.7.7 依然无法通信
为什么?
因为R2没有配置BGP,所以R2没有去往10.10.6.6 和 10.10.7.7的路由
因为R4没有配置BGP,所以R4没有去往10.10.6.6 和 10.10.7.7的路由
因为R3没有配置BGP,所以R3没有去往10.10.6.6 和 10.10.7.7的路由
所以在R2、R3、R4必然会出现流量黑洞? (华为中IGP路由和BGP路由同步默认关闭)
出现流量黑洞,网络就不通了,
如何解决? R2、R3、R4都必须配置BGP解决流量黑洞
即便我们真的在R2、R3、R4 配置完BGP,解决了流量黑洞问题
10.10.6.6 和10.10.7.7 依然无法通信?
为什么?
因为有出现了IBGP水平分割: 内内不相传: 从内部邻居学来的路由不会在传递给内部邻居
所以,虽然解决了流量黑洞,但是由于IBGP水平分割,R3依然无法学习到路由
即学习不到10.10.6.6 ,也学习不到10.10.7.7的
所以10.10.6.6 和10.10.7.7 依然无法通信!
如何解决这个问题:
1)在OSPF中引入BGP ---不可取(BGP路由数量很多100万条, OSPF引入外部路由,产生5类LSA,全域泛洪,太可怕)
2)配置IBGP全互联 --- 不可取(配置量太大,累死个人,还容易出错,拓扑变更,网络中断时间长)
3)配置BGP联盟---也很麻烦(需要改变网络架构,需要配置小AS号,需要配置联盟号)
????????联盟除了配置麻烦,还有弊端,在一个子AS号内,如果出现3台及3台以上的路由,依然会出现水平分割
4)配置路由反射器--这个确实不错,很方便,很灵活,不会改变网络架构,在大型网络中用路由器反射器还是很好的
????????但是路由反射器也有一个弊端,就是RR的压力太大了,RR对设备的性能要求特别高
????????那么我们还有没有别的解决方案呢? 还有,这个好吗,也不是太好,和反射器差不多吧, 这个技术是什么呢?
MPLS- 多协议标签交换
#还有没有其他解决方案?有---MPLS:多协议标签交换
????????&:在AS200内部只需要R1和R5配置BGP
&:R2/R3/R4通过标签转发数据,不在需要路由,也不看路由表,看标签
#备注:
????????--运行mpls的路由器就不叫路由器了,叫LSR:标签交换路由器
????????--mpls标签(报文)封装2层头部后面和3层头部前面,位于2.5层,可以支持任意的链路层协议
????????-传统的路由器靠"路由表"的路由,转发数据
????????-标签交换路由器(LSR)靠的是"标签转发表"的标签,转发数据
????????-那么,LSR的"标签转发表"是怎么来的,里面又包含哪些内容
????????-标签转发表中包含的是:路由条目和标签信息的对应条目,既1个路由对应一个标签,称为,标签绑定信息
????????-所以,我们要了解到底是谁,可以为每一个路由分配一个标签,到底是谁来定义标签的格式,是MPLS中的LDP
????????-LDP是什么: 标签分发协议
????????-MPLS是一个多协议标签交换,是一个统称,一个机制,真正执行标签分发的是LDP-标签分发协议,LDP主要负责标签的分配
????????-其实我们今天重点学习的是 LDP--标签分发协议
????????-LDP和BGP一样也是基于TCP通信的基础上建立的
1)MPLS:多协议标签交换
2、MPLS作用:用来在设备之间分享标签
MPLS
????????????????为什么会有MPLS
????????????????????????以前,我们都是通过IP路由表,去收发IP数据包,但是IP路由表,需要通过最长匹配原则去寻找最好的那条路由,这样做,会增加路由器的处理压力
????????????????????????在后来的ATM网络中,有了标签转发的概念,但是ATM网络配置起来相当麻烦
????????????????????????所以,我们为了结合标签转发+路由特性,创造了MPLS
????????????????????????所谓标签转发,就是通过很短且固定长度的标签,去转发携带标签的数据报文
????????????????就是很多协议都支持分标签
????????????????一旦,分配了标签,就按照标签表去收发数据,而不再按照IP路由表收发数据
????????????????LDP协议
????????????????MP-BGP协议
MPLS 的一些基本概念
????????所谓标签,就是跟着路由一起发出去的
????????我们可以简单粗暴的将标签理解成路由的一个“属性”,被路由携带着
解析:
MPLS位于TCP/IP协议栈中的数据链路层和网络层之间,可以向所有网络层提供服务。
通过在数据链路层和网络层之间增加额外的MPLS头部,基于MPLS头部实现数据快速转发。
MPLS域(MPLS Domain)
解析:
MPLS域(MPLS Domain):一系列连续的运行MPLS的网络设备构成了一个MPLS域。 LSR(Label Switching Router,标签交换路由器):支持MPLS的路由器(实际上也指支持MPLS的交换机或其他网络设备)。位于MPLS域边缘、连接其它网络的LSR称为边沿路由器LER(Label Edge Router),区域内部的LSR称为核心LSR(Core LSR)。
LSP的类别:
解析:
除了根据LSR在MPLS域中的位置进行分类之外,还可以根据对数据处理方式的不同进行分类:
入站LSR(Ingress LSR):通常是向IP报文中压入MPLS头部并生成MPLS报文的LSR。
中转LSR(Transit LSR):通常是将MPLS报文进行例如标签置换操作,并将报文继续在MPLS域中转发的LSR。
出站LSR(Egress LSR):通常是将MPLS报文中MPLS头部移除,还原为IP报文的LSR。
总结:
????????只要运行了MPLS的路由器,它就不再是Router了,而是Label Switch Router
????????即:标签 交换 路由器
????????入节点(ingress) —— 标签压入,即:携带标签的流量的入设备
????????中间节点 (transit)—— 标签交换-传输携带标签的流量的设备
????????出节点(egress) —— 标签弹出-将携带标签的流量发出去的设备
FEC:转发等价类:
FEC(Forwarding Equivalence Class,转发等价类)是一组具有某些共性的数据流的集合,这些数据流在转发过程中被网络节点以相同方式处理。
在MPLS网络中,FEC可以通过多种方式划分,例如基于目的IP地址及网络掩码、DSCP等特征来划分。
数据属于哪一个LSP,由数据进入MPLS域时的Ingress LSR决定。 MPLS标签通常是与FEC相对应的,必须有某种机制使得网络中的LSR获得关于某FEC的标签信息。
LSP(Label Switched Path,标签交换路径):
解析:
LSP(Label Switched Path,标签交换路径)是标签报文穿越MPLS网络到达目的地所走的路径。 同一个FEC的报文通常采用相同的LSP穿越MPLS域,所以对同一个FEC,LSR总是用相同的标签转发。
MPLS标签报文结构:
解析:
IP报文进入MPLS域之前,会被入站LSR压入MPLS头部(又叫MPLS标签),形成一个MPLS标签报文。一个标签报文可以包含一个或多个MPLS标签。
标签(Label):用于携带标签值,长度20bit。
EXP(Experimental Use):主要用于CoS(Class of Service),长度3bit。
S(Bottom of Stack):栈底位,用于指示该标签头部是否为最后一层标签,长度1bit。如果该字段为1,则表示当前标签头部为栈底;如果该字段为0,则表示当前标签头部之后依然还有其他标签头部。
TTL(Time To Live):用于当网络出现环路时,防止标签报文被无限制转发,与IP报文头部中的TTL具有相同的意义,长度8bit。
标签值:
1)进行标签交换的路由器,称为LSR(标签交换机路由器)
2)由多台LSR路由器构建的区域称为mpls区域
--LER--ingress:入口节点---标签压入---mpls区域边缘设备
--LSR--transit : 中间节点---标签交换—转发
--LER--egress:出口节点---标签弹出---mpls区域边缘设备
LDP :Label Distribution Protocol :标签分发协议
1)LDP是MPLS的一种控制协议
2)LDP的作用:
????????-负责FEC(转发等价类)的分类
????????-负责标签的分发
????????-负责LSP(标签交换路径)的建立和维护
3)LDP的工作过程主要分为两部分:
????????-LSR(标签交换路由器)之间建立LDP会话
????????-建立LDP会话后,给FEC动态分发标签,并根据标签信息建立LSP(标签交换路径)
LDP分发标签之前,必须先建立LDP会话
1)LDP会话分类:
本地LDP会话:建立会话的两个LSR之间是直连的;
远程LDP会话:建立会话的两个LSR之间可以是直连的,也可以是非直连的
2)LDP邻接体:
两台LSR之间交互Hello消息之后,即建立起LDP邻接体关系
3)LDP对等体:
在建立邻接体的基础之上,两台LSR之间交互LDP会话消息,建立LDP会话,两台LSR设备建立LDP对等体关系
4)LSR ID与LDP ID:
每一台运行了LDP协议的LSR必须配置LSR ID,还必须拥有LDP ID
LSR ID是点分十进制格式,类似于IP地址
LSR ID 长度是32bit
LDP ID的长度为48bit,由32bit的LSR ID和16bit的标签空间标识符组成
LDP ID以“LSR ID : 标签空间标识符”的形式呈现。比如1.1.1.1:0 2.2.2.2:0
5)标签空间标识符有两种形态:
值为0:表示基于设备的标签空间;
值非0:表示基于接口的标签空间;
解析:
1)LDP的消息分为4类:
????????-发现消息:DiscoveryMessage
????????-会话消息:SessionMessage
????????-通告消息:AdvertisementMessage
????????-通知消息:NotificationMessage
?发现消息:用于通告和维护网络中LSR的存在,hello报文(发现LDP邻居)
?会话消息:用于建立、维护和终止LDP的会话,如Initialization报文、KeepAlive报文(建立和维护邻居的会话)
?通告消息:用来生成、改变和删除FEC的标签映射;(分发-修改-删除-标签)
?通知消息:用来宣告告警和错误信息。
2)消息报文
发现消息:
会话消息:
通告消息:
通知消息:
1)LDP的主要工作过程就是两步:
????????一个是建立LDP会话,
????????一个是给FEC分配标签,并且生成LSP(标签交换路径)
2)LDP状态机
1) LDP 邻居表解析
[R1] display mpls ldp peer //查看设备的LDP建立的邻居 LDP Peer Information in Public network A '*' before a peer means the peer is being deleted. ------------------------------------------------------------------------------ PeerID TransportAddress DiscoverySource ------------------------------------------------------------------------------ 10.10.2.2:0 10.10.2.2 GigabitEthernet0/0/0 ------------------------------------------------------------------------------ TOTAL: 1 Peer(s) Found. 【 PeerID 】 Peer ID 其实就是LDP的ID LDP的ID由:邻居的mpls lsr-id + 标签空间标识符组成 10.10.2.2 :0 10.10.2.2 :邻居的mpls lsr-id 后面的:0 标签空间标识符 华为设备的标签空间标识符,默认值是0 ,是一台LSR设备一个标签空间 【 TransportAddress 】 传输地址,用于后续建立TCP连接 所以,传输地址必须是可以互相ping通的 默认情况下,这个传输地址,就是MPLS的LSR-ID 【 DiscoverySource 】 我用哪个接口,跟对端建立邻居
LDP用于建立邻居的Hello报文
LDP的Hello报文,目的IP地址是:224.0.0.2,这个地址在组播中,表示所有路由器 TTL值默认为1:LDP邻居不能跨跳建立,即两个LDP邻居之间,不能有其他路由器 使用的是UDP 646(源和目的端口都是UDP646) LDP的Hello报文特性: 两台设备的LSR-ID不能互相ping通,也照样可以建立LDP邻居 而,LSR怎么发LDP的Hello报文呢——只要接口启用了mpls ldp,就从该接口发Hello报文
2)LDP建立稳定的TCP连接
通过建立LDP邻居,两端设备知道了彼此的传输地址(默认为MPLS LSR-ID)
通过传输地址,建立稳定的TCP连接
TCP连接的源端口为随机端口,目的端口为TCP646
3)总结
建立邻居 ——> 让对端知道自己的传输地址(默认为MPLS LSR-ID)
????????????????????????目的IP:224.0.0.2 ????????????????源目端口:UDP646
????????????????????????Hello报文5秒发一个,15秒超时,用于维持LDP邻居
建立TCP ——> 通过传输地址建立稳定的TCP会话
????????????????????????源端口:随机TCP端口 ????????目的端口:TCP646
建立LDP会话 ——>通过稳定的TCP连接,建立稳定的LDP会话
????????????????????????Keepalive报文15秒一个,45秒超时,用于维持LDP会话
分发标签 ——>通过建立稳定的LDP会话,分发标签
1)上游和下游
解析:
如图: 如果R1要给R3的192.168.3.0/24这个目的地址传输数据
????????????????有一个前提是R3要给192.168.3.0/24这个FEC先分配标签
????????????????所以是先分发标签,在传输数据
在上面这个图中,R3是R2的下游设备,R3要给R2发布标签
R2是R1的下游设备,R2要给R1发布标签
同理:R1是R2的上游设备, R2是R3是上游设备
DU模式(下游自主模式)
DoD模式(下游按需模式)
有序(Ordered)模式
独立(Independent)模式
1) 自由(Liberal)模式
2) 保守(Conservative)模式
1) PHP特性:倒数第二跳弹出:隐士空
2) 显式空标签
1)标签发布方式:华为设备默认是: DU模式(下游自主方式)
2)标签分配控制方式:华为设备默认是: Ordered 模式 (有序方式)
3)标签保持方式:华为设备默认是:Liberal (自由方式)
1) 配置LDP标签发布方式: [R1-G0/0/0]mpls ldp advertisement ? dod Downstream On Demand Advertisement Mode du Downstream Unsolicited Advertisement Mode [R1-G0/0/0]mpls ldp advertisement dod //将LDP的标签发布方式改为DOD [R1-G0/0/0]mpls ldp advertisement du //将LDP的标签发布改为默认的DU 2)配置PHP特性 [R1]mpls [R1-mpls]label advertise ? explicit-null Explicit-null //显示空(出节点倒数第二跳) implicit-null Implicit-null //隐士空(出节点倒数第二跳) non-null Non-null //正常分配(出节点倒数第二跳) [R1-mpls]label advertise implicit-null //配置出节点倒数第二跳分配隐士空标签
第一步:发标签:标签是怎么分发的
1)标签分发-Egress LSR : 出口设备-如何发标签
2)标签分发 - Transit LSR: 中转设备如何发标签
3)标签分发 - Ingress LSR : 入口设备
第二步:转发标签 (数据报文是怎么传输的)
1)标签转发 - Ingress LSR,入口设备转发数据报文
2)标签转发 - Transit LSR:中转设备转发数据报文
3)标签转发 - Egress LSR: 出口设备转发数据报文
&:分配一个标签
????????-每个运行LDP的协议,都会为自己本地路由表的非BGP路由分配标签
&:传输一个标签
????????-传给谁:传输给自己的邻居,LDP的邻居表
????????-怎么传:因为路由条目和标签信息是对应的,所以传递这个标签,必须要稳定(LDP传输标签也要依赖TCP,为了可靠性)
????????-存在那:本地产生的路由和标签信息,以及从邻居学习来的标签信息,都保存在LDP数据库
&:选择一个标签
????????所谓选择标签,就是在LDP协议的数据库中,针对每个 路由,选择一个最好的标签
????????将最好的标签信息,存放在一个表中,专门用来转发带有标签的数据,该表叫做:LDP标签转发表
1)建立LDP邻居表
????????#运行了mpls和ldp的设备,会在接口上,发送ldp hello 报文,进行参数比较,如果协商成功,则建立邻居
????????#作为邻居设备,双方都要周期性的发送 ldp hello 报文,用于维护ldp 邻居表,默认时间是5秒,如果在15秒内没有收到对方发来的hello 报文,则认为邻居挂掉了。
????????# ldp 的hello 报文,是包含在 udp 协议中, 源和目标的端口号都是 646。
????????# ldp 的hello 报文,是通过组播的方式发送的,组播地址是224.0.0.2,表示的是所有的运行mpls 的路由器。
????????# ldp的 hello 报文,包含了一个非常重要的参数,ipv4 transport-address ,默认等于 lsr-id,该地址,主要是用于后续的tcp 连接的建立,为了稳定的传输"标签绑定信息" 完成数据库的同步。
2)同步LDP标签数据库(该过程必须确保可靠安全:TCP)
????????#首先通过hello报文中的ipv4 transport-address 建立稳定的tcp连接,目标端口为 tcp 646
????????#在该tcp连接上,稳定的传输“标签绑定信息”,即一条路由(FEC)和一个标签的对应对
????????#如果标签数据库同步成功,后续也必须得周期性发送ldp 的keep alive报文,用于维护tcp连接,发送周期时间为15秒,如果在3倍的周期内收不到对方发送过来的 ldp keep alive 报文,则断开tcp 连接。
3)计算LDP标签转发表 (display mpls lsp)
????????#LSP :标签交换路径:使用标签转发数据之前,需要先建立LSP,通过LSP,进行标签数据转发
????????#该表中包含的是FEC、标签信息和“出接口” 关联在一起
????????#FEC:转发等价类:去往同一路由的所有报文,称为一个转发等价类,即所谓的路由条目(网段/掩码)
????????#标签,分为 in 标签和 out 标签:
????????????????&:in 表示是当前设备为该 fec 分配的标签
????????????????&:out 表示是去往fec 表示的网络时,所需要携带和使用的标签
????????--路由对路由器很重要,邻居之间相互传递路由信息
????????--标签对LSR(标签交换路由器)很重要,邻居之间传递标签信息
????????--运行OSPF的路由器邻居之间,如何保证lsa传输可靠(lsu报文和lsack报文)
????????--运行ISIS的路由器邻居之间,如何保证传输数据可靠(lsp报文和psnp报文)
????????--BGP如何保证传输数据稳定---底层是TCP协议--TCP非常稳定
????????--所以mpls 传输数据稳定---也是用TCP
????????--路由表从很多路由条目中,精挑细选,选出最好的路由放到路由表
????????--MPLS也从很多标签中,精挑细选,选出最好的标签放到”标签转发表“
1)控制平面:生产路由,生产标签
????????--RIB:路由表---由IP路由协议---生成---用于路由选择
????????--LDP:标签分发协议--分则标签分配,标签信息表(LIB)建立,标签交换路径(LSP)的建立,维护,拆除等
????????--LIB:标签信息表--由标签分发协议生成,用于管理标签信息
2)转发平面:负责IP报文转发,负责标签报文转发 (发数据)
????????--FIB:转发表是由路由表提取的路由信息生成的,负责普通IP报文的转发
????????--LFIB:标签转发信息表是由标签分发协议在标签交换机路由器上建立的标签转发表,负责mpls标签报文的转发
????????--OSPF 如何区分-----Router-id
????????--ISIS 如何区分----NET 地址 (网络实体标识符)
????????--BGP 如何区分---Router-id
????????--MPLS 呢?
????????????????&:利用LSR-ID ---格式与IP地址类似,即x.x.x.x (推荐是一个接口的IP地址),并且不同的LSR的LSR-ID 能够互相访问。
1)配置LSR ID
????????--LSR ID用来在MPLS的网络中唯一标识一个LSR(标签交换路由器)
????????--LSR没有缺省的LSR ID,必须手工配置
????????--为了提高网络的可靠性,推荐使用LSR某个Loopback接口的地址作为LSR ID
????????--MPLS域的所有节点上都需要配置
????????--如果要修改已经配置的LSR ID,必须先在系统视图下执行undo mpls命令
????????--执行undo mpls命令会删除所有MPLS配置,导致MPLS业务中断
2)配置全局mpls
????????--只有开启全局MPLS,才可以配置MPLS的其他配置
????????--MPLS域的所有节点上都需要配置
3)配置全局MPLS LDP
????????--只有开启全局MPLS LDP,才可以配置MPLS LDP的其他配置
????????--MPLS域的所有节点上都需要配置
????????--执行命令mpls ldp,使能全局的LDP功能,并进入MPLS-LDP视图
4)接口配置MPLS 和MPLS LDP
????????--需要先在全局下开启,才可以在接口上配置MPLS 和MPLS LDP
1)拓扑
2)配置步骤
????????--配置接口IP地址
????????--配置AS200内-OSPF
????????--配置BGP
????????--配置MPLS
????????????????& 全局配置lsr-id
????????????????& 全局开启mpls
????????????????& 全局开启mpls ldp
????????????????& 设备互联的内网接口下开启MPLS和MPLS LDP
????????????????&在LER(边缘LSR)的设备上,配置标签和IP报文的转换
????????????????????????#[R1] route recursive-lookup tunnel //路由递归查询
????????????????????????#[R5] route recursive-lookup tunnel //路由递归查询
3)配置命令:
sysname R6 # interface GigabitEthernet0/0/0 ip address 192.168.16.6 255.255.255.0 # interface LoopBack0 ip address 10.10.6.6 32 # bgp 100 router-id 6.6.6.6 peer 192.168.16.1 as-number 200 network 10.10.6.6 255.255.255.255 sysname R1 # mpls lsr-id 10.10.1.1 mpls # mpls ldp # interface GigabitEthernet0/0/0 ip address 192.168.12.1 255.255.255.0 mpls mpls ldp # interface GigabitEthernet0/0/1 ip address 192.168.16.1 255.255.255.0 # interface LoopBack0 ip address 10.10.1.1 32 # bgp 200 router-id 1.1.1.1 peer 10.10.5.5 as-number 200 peer 10.10.5.5 connect-interface LoopBack0 peer 192.168.16.6 as-number 100 peer 10.10.5.5 next-hop-local # ospf 1 router-id 1.1.1.1 area 0.0.0.0 network 10.10.1.1 0.0.0.0 network 192.168.12.0 0.0.0.255 # route recursive-lookup tunnel sysname R2 # mpls lsr-id 10.10.2.2 mpls # mpls ldp # interface GigabitEthernet0/0/0 ip address 192.168.12.2 255.255.255.0 mpls mpls ldp # interface GigabitEthernet0/0/1 ip address 192.168.23.2 255.255.255.0 mpls mpls ldp # interface LoopBack0 ip address 10.10.2.2 32 # ospf 1 router-id 2.2.2.2 area 0.0.0.0 network 10.10.2.2 0.0.0.0 network 192.168.12.0 0.0.0.255 network 192.168.23.0 0.0.0.255 sysname R3 # mpls lsr-id 10.10.3.3 mpls # mpls ldp # interface GigabitEthernet0/0/0 ip address 192.168.23.3 255.255.255.0 mpls mpls ldp # interface GigabitEthernet0/0/1 ip address 192.168.34.3 255.255.255.0 mpls mpls ldp # interface LoopBack0 ip address 10.10.3.3 32 # ospf 1 router-id 3.3.3.3 area 0.0.0.0 network 10.10.3.3 0.0.0.0 network 192.168.23.0 0.0.0.255 network 192.168.34.0 0.0.0.255 sysname R4 # mpls lsr-id 10.10.4.4 mpls # mpls ldp # interface GigabitEthernet0/0/0 ip address 192.168.34.4 255.255.255.0 mpls mpls ldp # interface GigabitEthernet0/0/1 ip address 192.168.45.4 255.255.255.0 mpls mpls ldp # interface LoopBack0 ip address 10.10.4.4 32 # ospf 1 router-id 4.4.4.4 area 0.0.0.0 network 10.10.4.4 0.0.0.0 network 192.168.34.0 0.0.0.255 network 192.168.45.0 0.0.0.255 sysname R5 # mpls lsr-id 10.10.5.5 mpls # mpls ldp # interface GigabitEthernet0/0/0 ip address 192.168.45.5 255.255.255.0 mpls mpls ldp # interface GigabitEthernet0/0/1 ip address 192.168.57.5 255.255.255.0 # interface LoopBack0 ip address 10.10.5.5 32 # bgp 200 peer 10.10.1.1 as-number 200 peer 10.10.1.1 connect-interface LoopBack0 peer 192.168.57.7 as-number 300 peer 10.10.1.1 next-hop-local # ospf 1 router-id 5.5.5.5 area 0.0.0.0 network 10.10.5.5 0.0.0.0 network 192.168.45.0 0.0.0.255 # route recursive-lookup tunnel sysname R7 # interface GigabitEthernet0/0/0 ip address 192.168.57.7 255.255.255.0 # interface LoopBack0 ip address 10.10.7.7 32 # bgp 300 router-id 7.7.7.7 peer 192.168.57.5 as-number 200 network 10.10.7.7 32
4)验证结果
先验证AS200内-R1-R5的MPLS-LDP的邻居关系
命令列举:
<R1>display mpls ldp peer LDP Peer Information in Public network ------------------------------------------------------------------------------ PeerID TransportAddress DiscoverySource ------------------------------------------------------------------------------ 10.10.2.2:0 10.10.2.2 GigabitEthernet0/0/0 ------------------------------------------------------------------------------ TOTAL: 1 Peer(s) Found.
在验证R6和R7的10.10.6.6 和10.10.7.7 是否可以互通
<R6>ping -a 10.10.6.6 10.10.7.7 PING 10.10.7.7: 56 data bytes, press CTRL_C to break Reply from 10.10.7.7: bytes=56 Sequence=1 ttl=250 time=70 ms Reply from 10.10.7.7: bytes=56 Sequence=2 ttl=250 time=70 ms Reply from 10.10.7.7: bytes=56 Sequence=3 ttl=250 time=60 ms Reply from 10.10.7.7: bytes=56 Sequence=4 ttl=250 time=60 ms Reply from 10.10.7.7: bytes=56 Sequence=5 ttl=250 time=70 ms
<R2> display mpls lsp ------------------------------------------------------------------------------- LSP Information: LDP LSP // 这是LDP创建的标签交换路径 ------------------------------------------------------------------------------- FEC In/Out Label In/Out IF Vrf Name 10.10.3.3/32 NULL/3 -/GE0/0/0 10.10.3.3/32 1024/3 -/GE0/0/0 10.10.2.2/32 3/NULL -/- 10.10.4.4/32 NULL/1026 -/GE0/0/0 10.10.4.4/32 1025/1026 -/GE0/0/0 【 FEC 】 Forwarding Euqal Class 转发等价类 说白了,就是IP路由表中 路由条目的 Destination/Mask字段(目的网段) 因为,LDP默认只为LGP的非物理接口的32位主机路由分配标签 所以,LDP的FEC都是x.x.x.x/32这个格式 其实,就是目的地的意思 【 In/Out Label 】 入/出标签 入标签——跟随着路由分发的标签,在哪台设备上,看到入标签,就是哪台设备分发的标签 出标签——数据携带的标签,是我的LDP邻居给我的标签 【 In/Out IF 】 报文的入接口/出接口
????????R2-R3-R4运行MPLS
????????对于R4而言,10.10.4.4/32是它自己的LoopBack 0口
????????此时,我们可以理解为,R4将自己的主机路由,发给R3
????????由于,我们要让数据走标签表,R4会给这个路由分配一个标签
????????这个标签,会随着路由,一起发给R3
????????这个标签,对于R4来说,是自己分配的,是流量的入标签
????????这个标签,对于R3来说,是R4给R3的,是R3给R4发包时的出标签
????????对于R3而言,它要把10.10.4.4/32这个路由给R2
????????R3会进行一次标签交换
????????即:R3为10.10.4.4/32分配一个标签,由于是R3自己分配的,所以R3会将其作为入标签
????????R3再将这个路由和自己分配的入标签发给R2
????????R2收到标签后,会将R3给它的标签,作为出标签
????????出标签——报文出去时,报文带的标签;也是我的LDP邻居给我路由时,同时给我的标签
????????入标签——接收报文时,报文带的标签;也是我自己产生的标签,是我随着路由一起给别人的标签
第一步:在R6中查看去往10.10.7.7 的路由 <R6>dis ip routing-table 10.10.7.7 Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Routing Table : Public Summary Count : 1 Destination/Mask Proto Pre Cost Flags NextHop Interface 10.10.7.0/24 EBGP 255 0 D 192.168.16.1 GigabitEthernet0/0/0 备注#:在R6中查询是否有去往10.10.7.7的路由,有路由,并且是最优的,下一跳指向192.168.16.1,也就是R1, 所以我们去R1中继续查询 第二步:在R1中查看去往10.10.7.7的路由 <R1>dis ip routing-table 10.10.7.7 Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Routing Table : Public Summary Count : 1 Destination/Mask Proto Pre Cost Flags NextHop Interface 10.10.7.0/24 IBGP 255 0 RD 10.10.5.5 GigabitEthernet0/0/0 备注#:去往10.10.7.7的路由的下一跳为10.10.5.5 # 也可以查看去往10.10.7.7的路由的详细信息,可以看到 TunnelID :0xd #:也可以查看,flags 中 显示RD,D是指download to fib //下发到转发表 #:所以,我们也可以去查看FIB转发表 第三步:在R1中查看去往10.10.7.7的路由的详细信息 <R1>dis ip routing-table 10.10.7.7 verbose Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Routing Table : Public Summary Count : 1 Destination: 10.10.7.0/24 Protocol: IBGP Process ID: 0 Preference: 255 Cost: 0 NextHop: 10.10.5.5 Neighbour: 10.10.5.5 State: Active Adv Relied Age: 02h58m21s Tag: 0 Priority: low Label: NULL QoSInfo: 0x0 IndirectID: 0x3 RelayNextHop: 192.168.12.2 Interface: GigabitEthernet0/0/0 TunnelID: 0xd Flags: RD 第三步续:也可以在R1中查看FIB转发表 <R1>dis fib 10.10.7.7 Route Entry Count: 1 Destination/Mask Nexthop Flag TimeStamp Interface TunnelID 10.10.7.0/24 192.168.12.2 DGU t[7822] GE0/0/0 0xd 备注#:在转发表中,有目的地址,下一跳,出接口,还有TunnelID, 本条转发记录TunnelID 值是0Xd &:如果TunnelID 为0,则表示当前的数据包按照标准的IP路由表进行转发 &:如果TunnelID 为非0,则表示当前的数据包要去查找 LFIB表 ,基于TunnelID 确定所有的标签 #:在FIB转发表,看到了TunnelID 的值为0Xd,所以去查看 LFIB标签转发表 第四步:在R1中查看标签转发表详细信息 <R1>dis mpls lsp verbose No : 5 VrfIndex : Fec : 10.10.5.5/32 Nexthop : 192.168.12.2 In-Label : NULL Out-Label : 1030 In-Interface : ---------- Out-Interface : GigabitEthernet0/0/0 LspIndex : 6148 Token : 0xd FrrToken : 0x0 LsrType : Ingress //入口节点,执行标签压入 Outgoing token : 0x0 Label Operation : PUSH //压入标签 Mpls-Mtu : 1500 TimeStamp : 3008sec Bfd-State : --- BGPKey : ------ 备注#:Token --指定就是TunnelID #:根据TunnelID 查找到FEC为10.10.5.5/32 ,Out-Label 为1030,出接口为g0/0/0, Token为0xd # IN-Label :表示的是当前设备为该FEC分配的标签 # Out-Label :表示的是去往FEC表示的网段时,所需要携带的使用的标签 # LsrType : Ingress : 表示的是入口节点 # Label Operation : PUSH :表示压入标签 第五步:在R1中查看标签转发表记录 <R1>display mpls lsp ------------------------------------------------------------------------------- LSP Information: LDP LSP ------------------------------------------------------------------------------- FEC In/Out Label In/Out IF Vrf Name 10.10.3.3/32 NULL/1028 -/GE0/0/0 10.10.3.3/32 1028/1028 -/GE0/0/0 10.10.4.4/32 NULL/1029 -/GE0/0/0 10.10.4.4/32 1029/1029 -/GE0/0/0 10.10.5.5/32 NULL/1030 -/GE0/0/0 10.10.5.5/32 1030/1030 -/GE0/0/0 10.10.1.1/32 3/NULL -/- 10.10.2.2/32 NULL/3 -/GE0/0/0 10.10.2.2/32 1031/3 -/GE0/0/0 备注#:查找到FEC为10.10.5.5/32,Out标签为1030的记录,带着Out-Label 1030从出接口g0/0/0 发往R2 第六步:去R2中查看标签转发表 <R2>dis mpls lsp ------------------------------------------------------------------------------- LSP Information: LDP LSP ------------------------------------------------------------------------------- FEC In/Out Label In/Out IF Vrf Name 10.10.3.3/32 NULL/3 -/GE0/0/1 10.10.3.3/32 1028/3 -/GE0/0/1 10.10.4.4/32 NULL/1026 -/GE0/0/1 10.10.4.4/32 1029/1026 -/GE0/0/1 10.10.5.5/32 NULL/1027 -/GE0/0/1 10.10.5.5/32 1030/1027 -/GE0/0/1 10.10.1.1/32 NULL/3 -/GE0/0/0 10.10.1.1/32 1031/3 -/GE0/0/0 10.10.2.2/32 3/NULL -/- 备注#:查找FEC 10.10.5.5/32 ,In标签为 1030的记录,携带着Out标签为1027,从出接口g0/0/1发往R3 #:我们还可以查看这个标签的详细信息 <R2>dis mpls lsp in-label 1030 verbose ------------------------------------------------------------------------------- LSP Information: LDP LSP ------------------------------------------------------------------------------- No : 1 VrfIndex : Fec : 10.10.5.5/32 Nexthop : 192.168.23.3 In-Label : 1030 Out-Label : 1027 In-Interface : ---------- Out-Interface : GigabitEthernet0/0/1 LspIndex : 6149 Token : 0xe FrrToken : 0x0 LsrType : Transit Outgoing token : 0x0 Label Operation : SWAP Mpls-Mtu : 1500 TimeStamp : 11672sec Bfd-State : --- BGPKey : ------ 备注#:LsrType : Transit : 表示的是中间节点 #: Label Operation : SWAP :表示的是标签交换,(1030-->1027) 第七步:在R3中查看标签转发表 <R3>dis mpls lsp ------------------------------------------------------------------------------- LSP Information: LDP LSP ------------------------------------------------------------------------------- FEC In/Out Label In/Out IF Vrf Name 10.10.1.1/32 NULL/1031 -/GE0/0/0 10.10.1.1/32 1028/1031 -/GE0/0/0 10.10.2.2/32 NULL/3 -/GE0/0/0 10.10.2.2/32 1029/3 -/GE0/0/0 10.10.3.3/32 3/NULL -/- 10.10.4.4/32 NULL/3 -/GE0/0/1 10.10.4.4/32 1026/3 -/GE0/0/1 10.10.5.5/32 NULL/1027 -/GE0/0/1 10.10.5.5/32 1027/1027 -/GE0/0/1 备注#:查找FEC为10.10.5.5/32,In标签为1027的记录,携带着Out标签为1027,从g0/0/1口发往R4 #: In标签为1027,Out标签也为1027,标签交换了吗,当然交换了, -可以查详细信息验证(dis mpls lsp in-label 1027 verbose) -之所以都是1027,仅仅是因为巧合,可以在R2上重启LDP,重新分发标签验证(reset mpls ldp) 第八步:在R4中查看标签转发表 <R4>dis mpls lsp ------------------------------------------------------------------------------- LSP Information: LDP LSP ------------------------------------------------------------------------------- FEC In/Out Label In/Out IF Vrf Name 10.10.1.1/32 NULL/1028 -/GE0/0/0 10.10.1.1/32 1028/1028 -/GE0/0/0 10.10.2.2/32 NULL/1029 -/GE0/0/0 10.10.2.2/32 1029/1029 -/GE0/0/0 10.10.3.3/32 NULL/3 -/GE0/0/0 10.10.3.3/32 1026/3 -/GE0/0/0 10.10.4.4/32 3/NULL -/- 10.10.5.5/32 NULL/3 -/GE0/0/1 10.10.5.5/32 1027/3 -/GE0/0/1 备注#:查找FEC为10.10.5.5/32,In标签为1027,携带Out标签3 ,从出接口g0/0/1 发往R5 # 标签3是特殊标签(0-16:特殊标签),是什么标签呢? 是隐士空标签,也称为:倒数第二跳弹出 -如果在转发数据时,使用的标签为3,则表示的含义是,不携带任何标签 -为什么要这样做呢,降低R5的负担 # 解析:R5给R4说,我是到达10.10.5.5/32的最后一跳了,数据包发给我的时候,请将标签去掉 我用特殊的标签3类表示执行剥离标签的动作,R4回答R5,好的,我明白了,OKK 第九步:在R5中查看标签转发表 <R5>dis mpls lsp ------------------------------------------------------------------------------- LSP Information: LDP LSP ------------------------------------------------------------------------------- FEC In/Out Label In/Out IF Vrf Name 10.10.1.1/32 NULL/1028 -/GE0/0/0 10.10.1.1/32 1028/1028 -/GE0/0/0 10.10.2.2/32 NULL/1029 -/GE0/0/0 10.10.2.2/32 1029/1029 -/GE0/0/0 10.10.3.3/32 NULL/1026 -/GE0/0/0 10.10.3.3/32 1026/1026 -/GE0/0/0 10.10.4.4/32 NULL/3 -/GE0/0/0 10.10.4.4/32 1027/3 -/GE0/0/0 10.10.5.5/32 3/NULL -/- 备注#:查找FEC为10.10.5.5/32,In标签为3的记录,Out标签为NULL, 没有出接口 # 当出接口为空时,怎么办呢?我们去查看路由表 第十步:在R5中查看路由表 <R5>display ip routing-table 10.10.7.7 Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Summary Count : 1 Destination/Mask Proto Pre Cost Flags NextHop Interface 10.10.7.0/24 EBGP 255 0 D 192.168.57.7 GigabitEthernet0/0/1 备注#:R5通过查看IP路由表,查找到去往10.10.7.0/24的最优路由,将最优的路由下发给FIB表
1)抓包分析
2)MPLS报文封装结构
3)MPLS报文封装二层和三层之间,可以支持任意的链路层协议
????????--报文短,固定长度
????????--只具有本地意义
????????--用于唯一标识一个分组所属的转发等价类
????????--长度是4字节(32bit) 由4个字段组成
4)MPLS报文有4个字段
????????--label:20bit---表示的是标签的范围
????????--exp:3bit ---实验位---表示标签数据的优先级,做服务等级(Qos)(当设备发生拥塞时,优先发送标签优先级高的报文)
????????--boottom (S):1bit :栈底位,表示当前的标签是不是最后一个标签
????????????????# s值位0的时候,代表后面还有标签,
????????????????# s值位1的时候,代表是最底层的标签,后面就是IP数据报文信息
????????--ttl :8bit --等同ip报文里面的ttl值
备注:查看二层以太网帧头,如果type 字段为 0x0080---表示上层IP协议
备注:查看二层以太网帧头,如果type 字段为 0x8847---表示上层mpls 协议