首页 > 其他分享 >静态mpls的原理与配置(抓包分析)

静态mpls的原理与配置(抓包分析)

时间:2024-10-13 09:18:40浏览次数:11  
标签:4.4 g0 静态 标签 mpls int ip 抓包

产生背景

mpls(多协议标签交换)产生原因:

传统ip报文依赖路由表转发,当时的硬件设备性能差,路由器查表成了网络数据转发的瓶颈。

mpls网络和ip网络相比只要处理网络边缘的ip报文,而在mpls内部采用标签转发,节约了时间。

随着设备性能提升,mpls提升转发速度的优势弱化,但标签和设备内转控分离的特点,使它在vpn和qos中应用广泛。

mpls的基本网络结构

LER(标签边缘路由器)在mpls网络中负责标签的压入和弹出,如上图的RTB和RTD.

LSR(标签交换路由器)用于标签的交换,上图的RTC。

根据数据流的方向,LDP存在入节点(ingress),中间节点(transit)和出节点(egress)。

根据数据流的方向可以分为上线游,上下游是相对而言的。

LSP是一个单向的从起点到终点的路径,如果需要来回都有标签得做双向。

FEC的划分方式非常灵活,可以是以源地址、目的地址、源端口、目的端口、协议类型或VPN等为划分依据的任意组合。

FEC和LDP的联系:

同一个FEC的报文走同一条LDP。

相同特征报文的打上标签,放在一条路上转发

LDP的标签类型:

入标签:自己产生给别人用。

出标签:别人产生给自己用(动态mpls下)

标签本地有效,可以传输到下一跳

MPLS标签的分配与路由的转发

标签转发体系

设备分为控制面板和转发面板



控制平面

IP协议

RIB路由表不多赘述

LDP 动态分发协议

LIB(标签信息表):由LDP产生,每个LSR都会根据FEC的映射关系建立LIB表象



转发平面

FIB:从RIB提取,包含必要的路由信息,指导ip报文的转发。

LFIB:用于指导MPLS报文转发,从LIB提取必要的信息生成。

华为将LFIB再细化为ILM表、NHLFE表

标签的报文格式

label:标签值 20bit,

EXP:用于拓展 3bit 。

s:1bit 栈底标识 为1标识最底层

TTL:8bit,和IP报文中的TTL(Time To Live)意义相同。

标签的取值范围:

0~15:特殊标签。如标签3,称为隐式空标签,0显式空标签(qos情况下使用),用于倒数第二跳弹出,

16~1023:静态LSP和静态CR-LSP(Constraint-based Routed Label Switched Path)共享的标签空间

1024及以上:LDP、RSVP-TE(Resource Reservation Protocol-Traffic Engineering)、MP-BGP(MultiProtocol Border Gateway Protocol)等动态信令协议的标签空间

LSR对标签的处理方式

静态mpls实验

先看拓扑图

配好基础的网络配置

配置相关的配置,使全网互通。

以下为配置脚本

AR1

undo terminal monitor
sys
sysname R1
ospf 1 rou 1.1.1.1
ar 0
q
q
int loopback 0
ip add 1.1.1.1 32
ospf e 1 ar 0
int g0/0/0
ip add 10.1.12.1 24
ospf e 1 ar 0

AR2
undo terminal monitor
sys
sysname R2
ospf 1 rou 2.2.2.2
ar 0
q
q
int loopback 0
ip add 2.2.2.2 32
ospf e 1 ar 0
int g0/0/0
ip add 10.1.12.2 24
ospf e 1 ar 0
int g0/0/1
ip add 10.1.23.1 24
ospf e 1 ar 0

AR3

undo terminal monitor
sys
sysname R3
ospf 1 rou 3.3.3.3
ar 0
q
q
int loopback 0
ip add 3.3.3.3 32
ospf e 1 ar 0
int g0/0/0
ip add 10.1.23.2 24
ospf e 1 ar 0
int g0/0/1
ip add 10.1.34.1 24
ospf e 1 ar 0

AR4

undo terminal monitor
sys
sysname R4
ospf 1 rou 4.4.4.4
ar 0
q
q
int loopback 0
ip add 4.4.4.4 32
ospf e 1 ar 0
int g0/0/0
ip add 10.1.34.2 24
ospf e 1 ar 0



静态mpls的配置


[R1]mpls lsr-id 1.1.1.1                配置lsr id 一般使用loopback 地址
[R1]mpls                                     全局启用mpls
[R1-mpls]q

[R1-mpls]int g0/0/0                       路径的所有端口都要配置

[R1-GigabitEthernet0/0/0]mpls     接口下启用mpls

[R2]mpls lsr-id 2.2.2.2
[R2]mpls
Info: Mpls starting, please wait... OK!
[R2-mpls]int g0/0/0
[R2-GigabitEthernet0/0/0]mpls 
[R2-GigabitEthernet0/0/0]int g0/0/1
[R2-GigabitEthernet0/0/1]mpls

[R3]mpls lsr-id 3.3.3.3
[R3]mpls
Info: Mpls starting, please wait... OK!
[R3-mpls]int g0/0/0
[R3-GigabitEthernet0/0/0]mpls 
[R3-GigabitEthernet0/0/0]int g0/0/1
[R3-GigabitEthernet0/0/1]mpls

[R4]mpls lsr-id 4.4.4.4
[R4]mpls
Info: Mpls starting, please wait... OK!
[R4-mpls]int g0/0/0
[R4-GigabitEthernet0/0/0]mpls 
[R4-GigabitEthernet0/0/0]int g0/0/1
[R4-GigabitEthernet0/0/1]mpls

手动配置标签

[R1]static-lsp ingress 1234 destination 4.4.4.4 32 nexthop 10.1.12.2 out-label 101


[R2]static-lsp transit 234 incoming-interface g0/0/0 in-label 101 nexthop 10.1.23.2 out-label 102 


[R3]static-lsp transit 34 incoming-interface g0/0/0 in-label 102 nexthop 10.1.34.2 out-label 103


[R3]static-lsp egress 4 incoming-interface g0/0/0 in-label 103

注意:

ingress 路由一定要可达 且掩码下一跳一定要与路由表一样

一定要有下一条ip地址,不然路由器默认以出接口ip作为下一跳导致目标不可达。

此时已经做好了单向的mpls,使用1.1.1.1 ping 4.4.4.4可达

此时静态mpls已经配置完成。

抓包

发出去的包

回来的包

发出去的包走的是mpls协议,而回报走的是ip协议

R4先查LIB表剥离标签再查路由表进行转发(此时是环回口)。

mpls路由器处理报文的流程

查看fib的tunnel id是否为0

  • Tunnel ID为0
    • 路由器根据FIB中的下一跳信息,查找相应的标签并进行转发。如果是非特殊标签则进行mpls转发,如果是特殊标签(0 3 )则弹出标签进行路由转发
  • Tunnel ID不为0
    • 路由器将数据包封装在指定的隧道中,通常涉及到在数据包外层添加MPLS标签,并找到与Tunnel ID匹配的LSP(标签交换路径),然后将数据包送往下一跳。


    

mpls转发映射概念

tunnel id:在路由器本地有效

NHLFE(Next Hop Label Forwarding Entry):(需要在诊断视图查询)

将出接口 tunnel id 下一跳地址 出标签 绑定在一起,

ILM(Incoming Label Map):入标签映射

包含Tunnel ID、入标签、入接口、标签操作类型等信息

主要用于接收带标签的报文并对其进行转发。

三种LSR对报文的处理方式

拿上面的实验分析:R1到4.4.4.4的标签封装



查R1的转发表

[R1]dis fib

 FIB Table:
 Total number of Routes : 10 
 
Destination/Mask   Nexthop         Flag  TimeStamp     Interface      TunnelID
4.4.4.4/32         10.1.12.2       DGHUT t[96]         GE0/0/0        0x1


tunnel不为0,因此查询nhlfe

[R1-diagnose]dis mpls nhlfe
OUTINTERFACE        TUNNELID   OPER     NEXTHOP         DEEP STACK      
------------------------------------------------------------------------
GE0/0/0             0x1        PUSH     10.1.12.2       1    101        
    1 Record(s) Found

打上标签 101 下一跳是 10.1.12.2



再到R2中查ilm(入标签映射)

[R2-diagnose]dis mpls ilm
INLABEL IN-INTERFACE        TUNNELID   VRFINDEX   OPER    LSPTYPE  ACKFLAG 
--------------------------------------------------------------------------
101     GE0/0/0             0x1        0          NULL    STATIC   0       
    1 Record(s) Found

可以看到tunnel id 是 0x1

再查nhlfe

[R2-diagnose]dis mpls nhlfe
OUTINTERFACE        TUNNELID   OPER     NEXTHOP         DEEP STACK      
------------------------------------------------------------------------
GE0/0/1             0x1        SWAP     10.1.23.2       1    102        
    1 Record(s) Found



R3同理跳过现在直接查R4

R4-diagnose]dis mpls ilm
INLABEL IN-INTERFACE        TUNNELID   VRFINDEX   OPER    LSPTYPE  ACKFLAG 
--------------------------------------------------------------------------
103     GE0/0/0                        0          POP     STATIC   0       
    1 Record(s) Found

103 标签R4的处理是剥离,再查询路由器进行转发

[R4]dis ip routing-table 4.4.4.4 32
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        4.4.4.4/32  Direct  0    0           D   127.0.0.1       LoopBack0

位于本地环回口直接转发


 

标签:4.4,g0,静态,标签,mpls,int,ip,抓包
From: https://blog.csdn.net/2401_86759450/article/details/142855970

相关文章

  • ProxyPin 抓包,原来可以这么简单!
    ​你是否还在为网络请求的抓包发愁?其实,ProxyPin可以让抓包操作变得异常简单!不需要复杂的设置,也不用繁琐的配置,轻松几步就能实现。让我们一起来看看吧!抓包操作常用于测试网络请求、分析接口响应,那么ProxyPin是如何让这一切变得更简单的呢?它有哪些特色功能,让我们一探究竟。P......
  • Ubuntu连接手机热点设置静态IP
    参考:https://www.cnblogs.com/jkcx/p/17784420.htmlhttps://blog.csdn.net/weixin_45112150/article/details/136620497ChatGPT第一步:查看各种参数信息包括:使用ipaddr在终端中查看网卡和动态分配的IP使用iprouteshow在终端中查看默认网关(DefaultGateway)/路由(路......
  • [双体系练习]静态代码块中不能直接调用类中实例方法
    静态代码块中不能? · 【D】A.初始化静态变量 B.调用静态方法C.new对象 D.直接调用类中实例方法(实例方法是非静态方法,非静态的无法直接调用)注意:在静态代码块中创建的对象实例会在类加载时就创建,并且这些实例在整个应用程序生命周期中都会占用内存。......
  • SpringMVC静态资源处理
    基本使用@ComponentpublicclassWebMvcConfigimplementsWebMvcConfigurer{@OverridepublicvoidaddResourceHandlers(ResourceHandlerRegistryregistry){registry.addResourceHandler("/asset/**").addResourceLocations(&qu......
  • 静态库封装之ComStr类
    ComStr.h#pragmaonce#include<string>#include<vector>usingnamespacestd;classComStr{public: //CString //============================================================================================================= /* func:CS......
  • 2024最新最全:Wireshark抓包详解(非常详细)零基础入门到精通,收藏这篇就够了
    在网络工程、安全分析和网络维护中,经常需要诊断和解决各种网络问题。Wireshark作为一款强大的网络抓包工具,因其支持多种操作系统、网络协议和网络接口,成为了网络工程师、安全专家和学习者的必备工具。本文将详细讲解如何通过Wireshark抓包并分析网络问题,帮助读者更好地理解......
  • 模板和静态文件
    模板和静态文件1、templates模板2、静态文件2.1、static目录2.2、引用静态文件1、templates模板"templates"目录用于存放模板文件,通常是用于动态生成页面的文件。在app01目录下创建templates文件夹,html文件均保存在templates中在urls.py中添加路径后,在views.py......
  • python scapy发包、抓包、分析
    importosimporttelnetlibfromscapy.allimport*fromscapy.layers.inetimport*fromscapy.allimportsniff#pac=dir(scapy.layers)#print(pac)#执行代码后,会输出Scapy中的各层#print(explore(scapy.layers.l2))#查看各种二层协议#print(explore(sc......
  • 汽车异构硬件平台开发如何进行静态代码分析
    随着汽车软件开发的复杂程度不断提升,尤其是智能网联汽车和自动驾驶技术的进步,汽车软件开发的复杂程度不断攀升。为了满足日益增长的功能需求和技术挑战,异构硬件平台被越来越多地采用,不同的工具链也不可避免地被引入到实际的开发流程中。这一趋势不仅增加了开发过程的技术多样性,也......
  • 【免费可视化仪表盘】轻松实现静态/动态数据可视化图表—积木仪表盘
    在当今信息爆炸的时代,如何从海量数据中快速提取关键信息,实现高效决策,成为了企业和个人面临的重大挑战。而积木仪表盘,就如同一位智慧的导航者,为你轻松开启数据可视化的精彩之旅。代码下载https://github.com/jeecgboot/JimuReport技术文档官方网站:http://jimureport.co......