文章目录
MPLS
- 互联网流量快速增长,由于硬件技术限制,路由器采用最长匹配算法逐跳转发数据包,成为网络数据转发的瓶颈
- MPLS—多协议标签交换,采用短而定长的标签进行数据转发
- 属于**“2.5”**层协议,介于二层头部和三层头部之间
MPLS基本网络架构
- MPLS网络中路由器的角色:
- LER(Label Edge Router):用于标签的压入或弹出,如RTB、RTD
- LSR(Label Switched Router):用于标签交换,如RTC
- LSP(Label Switched Path):标签交换路径,即到达同一目的地址的报文在MPLS网络中经过的路径
- FEC(Forwarding Equivalent Class):一般指具有相同转发处理方式的报文,在MPLS网络中,到达同一目的地址的所有报文就是一个FEC,这个目的地址,也是一个FEC
- FEC的划分方式灵活,可以是源地址、目的地址、源端口、目的端口、协议类型或VPN等划分为任意组合
MPLS体系结构
-
控制平面:路由
- 转发平面:转发流量
- 没有RIB(路由表),不会进行LDP(标签分发)
- LDP相当于路由协议,LIB相当于路由表
- 当控制平面有了路由表,可以下发到转发平面的RIB
MPLS数据报文结构
- MPLS标签封装在链路层和网络层之间,支持任意的链路层协议
- Label(标签):20Bit,短而定长的、只有本地意义的标识用于标识去往同一目的地址的报文分组
- Exp:3Bit,Qos,用于拓展
- S:1Bit,位位1时表明为最底层(靠近IP层)
- TTL:8Bit,和IP报文中的TTL(Time To Live)相同
LSP建立
- 标签分配的方式:下游为上游分配标签
- 靠近路由起源的路由器为
Ingress
(入栈点)—>Transit
(转发栈点)—>Egress
(出栈点)
静态LSP
- 用户通过手工方式各个转发等价类分配标签建立转发隧道
- 静态LSP特点:
- 不使用标签发布协议,不需要交互控制报文,资源消耗较小
- 通过静态方式建立的LSP不能根据网络拓扑变化动态调整,需要管理员干预
- 静态LSP适用于拓扑结构简单并且稳定的网络
实验:如下拓扑
- 基础配置
#
sysname R1
#
interface GigabitEthernet0/0/0
ip address 10.1.12.1 255.255.255.0
ospf enable 1 area 0.0.0.0
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
ospf enable 1 area 0.0.0.0
#
ospf 1
area 0.0.0.0
#
sysname R2
#
interface GigabitEthernet0/0/0
ip address 10.1.12.2 255.255.255.0
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
ip address 10.1.23.2 255.255.255.0
ospf enable 1 area 0.0.0.0
#
ospf 1
area 0.0.0.0
#
sysname R3
#
interface GigabitEthernet0/0/0
ip address 10.1.23.3 255.255.255.0
ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
ip address 10.1.34.3 255.255.255.0
ospf enable 1 area 0.0.0.0
#
ospf 1
area 0.0.0.0
#
sysname R4
#
interface GigabitEthernet0/0/0
ip address 10.1.34.4 255.255.255.0
#
interface LoopBack0
ip address 4.4.4.4 255.255.255.255
#
ospf 1
area 0.0.0.0
network 4.4.4.4 0.0.0.0
network 10.1.34.4 0.0.0.0
- 配置MPLS
[R1]mpls lsr-id 1.1.1.1
[R1]mpls //开启MPLS协议
--------------------------------
[R2]mpls lsr-i
[R2]mpls lsr-id 2.2.2.2
--------------------------------
[R3]mpls ls
[R3]mpls lsr-id 3.3.3.3
--------------------------------
[R4]mpls lsr
[R4]mpls lsr-id 4.4.4.4
- 静态LSP中lsr-id可以随便指定,即使本地没有这个地址,但是必须配
- 需要配置两条LSP,一去一回
- 配置R1到R4的LSP
# R1配置静态LSP,角色为ingress,名字为1-4,目的为4.4.4.4,下一跳是10.1.12.2,出标签为102
[R1]static-lsp ingress 1-4 destination 4.4.4.4 32 nexthop 10.1.12.2 out-label 102
# R2配置静态LSP,角色为transit,名字为1-4,进接口为g0/0/0,进标签为102,下一跳为10.1.23.3,出标签为203
[R2]static-lsp transit 1-4 incoming-interface g0/0/0 in-label 102 nexthop 10.1.23.3 out-label 203
# R3配置静态LSP,角色为transit,名字为1-4,进接口为g0/0/0,进标签为203,下一跳为10.1.34.4,出标签为304
[R3]static-lsp transit 1-4 incoming-interface g0/0/0 in-label 203 nexthop 10.1.34.4 out-label 304
# R4配置静态LSP,角色为egress,名字为1-4,进接口为g0/0/0,进标签为304
[R4]static-lsp egress 1-4 incoming-interface g0/0/0 in-label 304
- 配置R4到R1的LSP
[R4]static-lsp ingress 4-1 destination 1.1.1.1 32 nexthop 10.1.34.3 out-label 403
[R3]static-lsp transit 4-1 incoming-interface g0/0/1 in-label 403 nexthop 10.1.23.2 out-label 302
[R2]static-lsp transit 4-1 incoming-interface g0/0/1 in-label 302 nexthop 10.1.12.1 out-label 201
[R1]static-lsp egress 4-1 incoming-interface g0/0/0 in-label 201
配好LSP后,还需要在接口下开启MPLS才可以互通
- 接口下开启MPLS
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]mpls
------------------------------------------
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]mpls
[R2-GigabitEthernet0/0/0]int g0/0/1
[R2-GigabitEthernet0/0/1]mpls
------------------------------------------
[R3]int g0/0/0
[R3-GigabitEthernet0/0/0]mpls
[R3-GigabitEthernet0/0/0]int g0/0/1
[R3-GigabitEthernet0/0/1]mpls
------------------------------------------
[R4]int g0/0/0
[R4-GigabitEthernet0/0/0]mpls
- 测试
[R1]ping lsp -a 1.1.1.1 ip 4.4.4.4 32
- 决定是IP转发还是走隧道转发看TunnelID
- 当TunnelID为0x0时,走IP转发
- 当TunnelID不为0x0时,走隧道转发,具体走那个隧道看TunnelID对应的隧道
动态LSP
- 通过标签发布协议动态建立转发隧道
- 通过LDP协议实现对FEC的分类、标签的分配以及LSP的建立和维护
- 动态LSP的特点:
- 组网配置简单,易于管理和维护
- 支持基于路由动态建立LSP,网络拓扑发生变化时,能及时反映网络状况
- LDP协议属于应用层协议,即基于TCP,也基于UDP,端口号固定为646
LDP邻居发现
- 为了能使开启了LDP的设备快速发现邻居,Hello报文基于UDP
- 为了保证邻居的有效性和可靠性,Hello报文周期(5s)发送,使用组播224.0.0.2作为目的IP
- Hello报文中携带Transport Address(传输地址)字段,与设备配置的LSR ID一致,表明与对端建立邻居关系时所使用的IP地址
- Transport Address字段的IP地址是物理接口地址则直接建立邻居关系,环回口地址必须保证路由可达
由传输IP地址大的一方发起TCP连接
- Discovery(发现阶段)
- 基于UDP,发送Hello报文,发现邻居
- TCP(建立TCP连接阶段)
- 基于TCP,建立TCP连接
- Session(会话阶段)
- Initialization:向对端发送报文
- Initialization+Keep alive:对端收到后,检查报文内容,没有问题会回复Initialization报文,并发送Keep alive报文确认
- Keep alive:收到对端的Initialization报文后,同样检查报文内容,没有问题会恢复Keep alive
- Advertisement(通告阶段)
- Address:LDP是运行在接口下,所以会发布运行了LDP的接口的IP
- Label Mapping(标签映射关系):包含标签所对应的FEC
- Notification阶段
- 在检查Initialization报文时,如果发现报文中的信息不一致,则会回复Notification报文
标签的发布方式
下游自主
- DU(Downstream Unsolicited,下游自主方式)
- 对于一个到达同一目的地址报文的分组,LSR无需从上游获得标签请求消息,即可进行标签分配与分发
下游按需
- DoD(Downstream on Demand,下游按需方式)
- 对于一个到达同一目的地址报文的分组,LSR获得标签请求消息之后才进行标签分配与分发
- 华为设备默认采用DU的方式发布标签
- DU无需等待上游的请求消息,直接向邻居分配标签
- 网络拓扑发生变化时,DU方式收敛时间更短
标签的分配控制方式
独立标签分配控制方式
- Independent,只要本地有关于此IP的路由,就会向上游分配此IP分组的标签,不用等待下游的标签
有序标签分配控制方式
- Ordered,当LSR具有此IP的下一跳标签或者该LSR就是此IP分组的出节点时,下游才会给上游发送此IP分组的标签
标签的保持方式
自由标签保持方式
- Liberal,对于从邻居LSR收到的标签映射,无论邻居LSR是不是自己的下一跳都保留
保守标签保持方式
- Conservative,对于从邻居LSR收到的标签映射,只有当邻居LSR是自己的下一跳才保留
- 华为设备默认使用自由标签保持方式保存标签
- 华为默认使用的搭配:发布方式使用DU(下游自主方式),控制方式使用Ordered(有序标签分配控制方式),保持方式使用Liberal(自由标签保持方式)
LDP建立LSP过程
- IGP协议负责实现MPLS网络内路由可达,为FEC的分组提供路由
- LDP协议负责实现对FEC的分类、标签的分配以及LSP的建立和维护
Penultimate Hop Popping
- PHP,倒数第二跳弹出
- 倒数第二跳路由器收到带有标签的报文后,查找LFIB表,发现分配的出标签为隐式空标签3,于是执行弹出标签的动作,并将IP数据包转发给下游路由器
标签0-15不能使用
实验:如下拓扑图
- 基础配置
#
sysname R1
#
interface GigabitEthernet0/0/0
ip address 10.1.12.1 255.255.255.0
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
-----------------------------------------
#
sysname R2
#
interface GigabitEthernet0/0/0
ip address 10.1.12.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 10.1.23.2 255.255.255.0
#
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
-----------------------------------------
#
sysname R3
#
interface GigabitEthernet0/0/0
ip address 10.1.23.3 255.255.255.0
#
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
- OSPF配置
# R1
ospf 1
area 0.0.0.0
network 1.1.1.1 0.0.0.0
network 10.1.12.1 0.0.0.0
-----------------------------------------
# R2
ospf 1
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 10.1.12.2 0.0.0.0
network 10.1.23.2 0.0.0.0
-----------------------------------------
# R3
ospf 1
area 0.0.0.0
network 3.3.3.3 0.0.0.0
network 10.1.23.3 0.0.0.0
- 配置MPLS
[R1]mpls lsr-id 1.1.1.1
[R1]mpls
Info: Mpls starting, please wait... OK!
[R1-mpls]mpls ld
[R1-mpls-ldp]int g0/0/0
[R1-GigabitEthernet0/0/0]mpls
[R1-GigabitEthernet0/0/0]mpls ldp
[R2]mpls lsr-id 2.2.2.2
[R2]mpls
Info: Mpls starting, please wait... OK!
[R2-mpls]mpls ld
[R2-mpls-ldp]int g0/0/0
[R2-GigabitEthernet0/0/0]mpls
[R2-GigabitEthernet0/0/0]mpls ldp
[R2-GigabitEthernet0/0/0]int g0/0/1
[R2-GigabitEthernet0/0/1]mpls
[R2-GigabitEthernet0/0/1]mpls ldp
[R3]mpls lsr-id 3.3.3.3
[R3]mpls
Info: Mpls starting, please wait... OK!
[R3-mpls]mpls ld
[R3-mpls-ldp]int g0/0/0
[R3-GigabitEthernet0/0/0]mpls
[R3-GigabitEthernet0/0/0]mpls ldp
- 测试
以上内容均属原创,如有不详或错误,敬请指出。
本文链接:
https://blog.csdn.net/qq_45668124/article/details/106984269
版权声明:
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议。转载请注明出处!并附带本文链接!