CN112422498B - 一种带内网络遥测方法、系统及计算机可读存储介质 - Google Patents

一种带内网络遥测方法、系统及计算机可读存储介质 Download PDF

Info

Publication number
CN112422498B
CN112422498B CN202010921116.4A CN202010921116A CN112422498B CN 112422498 B CN112422498 B CN 112422498B CN 202010921116 A CN202010921116 A CN 202010921116A CN 112422498 B CN112422498 B CN 112422498B
Authority
CN
China
Prior art keywords
int
data packet
packet
head
header
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010921116.4A
Other languages
English (en)
Other versions
CN112422498A (zh
Inventor
潘恬
林兴晨
黄韬
刘韵洁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Network Communication and Security Zijinshan Laboratory
Original Assignee
Network Communication and Security Zijinshan Laboratory
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Network Communication and Security Zijinshan Laboratory filed Critical Network Communication and Security Zijinshan Laboratory
Priority to CN202010921116.4A priority Critical patent/CN112422498B/zh
Publication of CN112422498A publication Critical patent/CN112422498A/zh
Application granted granted Critical
Publication of CN112422498B publication Critical patent/CN112422498B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/164Adaptation or special uses of UDP protocol
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种带内网络遥测方法、系统及计算机可读存储介质,属于通信领域。方法采用带标记的INT数据包作为探测包,步骤一,发包终端将所述探测包发送至指定的VPP虚拟网络设备,即INT源端,所述INT源端接收探测包后,封装INT头部,生成带标记的INT数据包,并将所述带标记的INT数据包转发至后续的VPP虚拟网络设备;步骤二,后续的VPP虚拟网络设备接收到INT数据包作为INT转发设备,依据INT头部的指示,统计设备自身的INT元数据,并将INT元数据写入INT头部的对应位置,由此完成数据采集工作。本发明在VPP已开源的构架上,基于源路由技术提出了带内网络遥测构架,结合控制平面对网络拓扑的路径设计,根据源路由完成探测包的转发,实现对整个网络的遥测覆盖。

Description

一种带内网络遥测方法、系统及计算机可读存储介质
技术领域
本发明属于通信领域,尤其是一种带内网络遥测方法及、系统及计算机可读存储介质。
背景技术
随着云计算市场的飞速发展,数据中心网络规模迅速增长。为了提升数据中心内硬件资源利用率以及解决高能耗问题,大量虚拟化技术在数据中心中被使用,通过硬件资源动态共享和弹性分配,节省硬件购买和运维成本,提高资源整体利用率,降低整体能耗开销。但伴随着数据中心网络规模的快速扩大,网络故障出现的概率急剧增大,且感知定位故障的过程变得复杂而漫长。如何高效的监控和管理数据中心网络流量,快速定位网络故障,精细化的开展流量工程成为亟待解决的技术挑战。在传统网络中,通常使用网络测量的手段来感知网络流量的实时变化。在传统的流量监控中,运营商往往通过物理分接端口(例如分光器或是流量镜像技术)来采集数据包,这些方案需要在物理交换机或路由器上部署特殊的硬件设备。而在数据中心网络中,大多数流量是东西向的,甚至有可能只是从一个虚拟机通过虚拟网络设备传输到位于同一台物理机上的另一个虚拟机,这意味着流量无需离开物理服务器。此时通过物理分接端口来采样数据包的方式就无法满足对虚拟网络设备的监控需求。同时,传统网络测量方案一般采集网络设备中的底层统计数据,例如数据包的接收数、字节数、丢弃数等。所采集的数据类型较少且粒度较粗,无法精确实时的反应流量的拥塞信息,这就大大限制了网络故障快速定位以及细粒度网络流量工程的有效实施。
协议无关的转发架构以及P4编程语言的出现,使得业界引入了带内网络遥测(In-band Network Telemetry,简称INT)技术。带内网络遥测(INT)由Barefoot、Arista、Dell、Intel和VMware于2015年共同提出,是一种不需要网络控制平面干预,网络数据平面收集和报告网络状态的框架。在带内网络遥测架构中,交换设备转发处理携带遥测指令(Telemetry instructions)的数据包。当遥测数据包经过该设备时,这些遥测指令告诉具备网络遥测功能的网络设备应该收集并写入何种网络状态信息。数据包处理流程如下:1.普通数据报文到达带内网络遥测系统的第一个交换节点(INT源端)时,带内网络遥测模块插入INT头部,将INT头部所指定的遥测信息封装成元数据(MetaData,MD)插入到INT头部之后;2.报文转发到中间节点(INT转发设备)时,设备匹配INT头部后插入MD;3.报文转发到带内网络遥测系统最后一跳(INT接收终端)时,交换设备匹配INT头部插入最后一个MD并提取全部遥测信息并通过gRPC等方式转发到遥测服务器。4.遥测服务器解析遥测报文内的遥测信息,上报给上层遥测应用程序。应用INT技术可以为数据中心的故障检测、流量工程、网络可视化等提供有效支撑。带内网络遥测的以上特性显示了其对数据中心网络测量的潜在价值,基于P4实现的带内网络遥测(P4-based INT)是最早的带内网络遥测实现方案。但是,P4-based INT技术依赖于协议无关转发体系架构,目前仅有少量可编程硬件交换机支持该能力,在其它的虚拟网络设备中,均尚未提供对INT的支持,大多数开源虚拟网络设备均无法运行P4程序,无法提供带内网络遥测的直接支持。
所以,针对目前虚拟网络设备不支持INT技术的现状,本文面向业界流行的高性能开源虚拟网络设备VPP,给出针对性的带内网络遥测的设计和实现方案,为在虚拟网络设备中研究网络测量问题提供新的解决思路。
发明内容
针对上述技术问题,本发明的目的是采用标记专门的探测包为INT数据包的实现方式,需要依据INT头部的指示,统计设备自身的INT元数据,完成数据采集工作,根据控制面通过特定算法的计算,在INT数据包中插入源路由标签栈,以发送最小的探测包数,实现覆盖全网的带内遥测。
为了实现以上目的,本发明采用以下技术方案:
本发明为一种带内网络遥测方法,所述遥测方法采用带标记的并且UDP头部设置目的端口为特殊值的INT数据包作为探测包,使用额外的发包终端发送所述探测包,在INT数据包中插入源路由标签栈,以发送最小的探测包数,实现覆盖全网的带内遥测;所述遥测方法包括以下步骤:
步骤一,发包终端将所述探测包发送至指定的VPP虚拟网络设备,即INT源端,所述INT源端为可以向数据包中插入INT报头的设备;
步骤二,所述INT源端接收探测包后,封装INT头部,生成带标记的INT数据包,并将所述带标记的INT数据包转发至后续的VPP虚拟网络设备;
步骤三,后续的VPP虚拟网络设备接收到INT数据包作为INT转发设备,依据INT头部的指示,统计设备自身的INT元数据,并将INT元数据写入INT头部的对应位置,由此完成数据采集工作。
所述步骤二具体包含以下内容:
步骤2.1,当所述INT源端接收到UDP探测包后,执行对以太网头部和IPv4头部的解析操作;
步骤2.2,当解析得到IP目的地址为本设备地址,且IP层头部协议字段号为UDP协议时,继续解析数据包的UDP层,获取UDP头部的目的端口号;
步骤2.3,获取的UDP头部的目的端口号等于特殊值时,执行数据包头部的重新封装操作,使其成为INT数据包;
步骤2.4,所述由INT源端生成的INT数据包被重新转发到以太网头部的解析节点,继而执行INT转发设备处理流程,即采集INT元数据并完成转发。
所述步骤2.3中,执行数据包头部的重新封装操作,使其成为INT数据包具体过程为:
在int-probe-packet-generation节点中,首先为探测包分配INT头部空间;其次,在所述探测包IPv4头部的option字段中复制从控制面下发或者人工通过命令行预先配置的源路由标签栈模板的内容,使得该INT数据包能够携带源路由信息;然后,将INT头部模板中的内容复制到所述探测包的对应空间中;接着,更新UDP探测包的IPv4头部中的protocol字段值为200,并将原始值记录到INT头部中;最后,重新计算IPv4头部校验和,再把数据包发往ethernet-input节点,以便继续执行后续的INT元数据采集和数据包转发。
在VPP包处理图结构中增加新的图节点int-sr-forwarding节点,使所述INT源端根据插入的源路由标签栈进行转发;所述int-sr-forwarding节点位于ip4-input节点和ip4-lookup节点之间,具体流程为:
在ip4-input节点中解析IPv4头部之后,判断其protocol字段值是否为200,若是,则把数据包发往所述int-sr-forwarding节点;否则说明该数据包为正常数据包,继续执行IP层后续的操作;
在所述int-sr-forwarding节点中,首先分别判断IPv4头部中的可选字段是否为源路由选项,以及可选字段存储的指针是否已经超出头部长度;其次,根据指针值获取源路由标签栈中指定的下一跳IP地址,并将其复制到IPv4头部的目的地址字段中;接着,更新可选字段中的指针值pointer;最后,把数据包发往ip4-lookup节点,继续执行后续的路由表查找操作。
所述步骤三中,后续的VPP虚拟网络设备,依据INT头部的指示,统计设备自身的INT元数据,具体包括以下步骤:
步骤3.1,在ethernet-input节点中执行原有解析动作之前,首先记录入端口时间戳;
步骤3.2,当数据包完成以太网层和IP层的流水线处理之后,进入到interface-output节点等待转发,此时,首先判断数据包是否为INT数据包,若是,则继续完成步骤3.3,否则直接转发数据包;
步骤3.3,当判断是INT数据包后,分别记录出端口MAC地址以及出端口时间戳;接着,根据INT头部的指令信息和指向当前元数据空白地址空间的指针值,把指令要求采集的各个INT元数据复制到INT元数据堆栈中的空白区域;最后,更新指针值,并继续执行数据包的转发操作。
本发明还提供一种带内网络遥测系统,所述遥测系统采用带标记的并且UDP头部设置目的端口为特殊值的INT数据包作为探测包,使用额外的发包终端发送所述探测包,在INT数据包中插入源路由标签栈,以发送最小的探测包数,实现覆盖全网的带内遥测;所述遥测系统包括:
INT源端模块,所述INT源端模块为接收所述探测包的指定VPP虚拟网络设备,所述INT源端模块为可以向数据包中插入INT报头的设备;
所述INT源端模块接收探测包后,封装INT头部,生成带标记的INT数据包,并将所述带标记的INT数据包转发至后续的VPP虚拟网络设备;
转发设备,所述转发设备为所述后续的VPP虚拟网络设备,所述转发设备依据INT头部的指示,统计设备自身的INT元数据,并将INT元数据写入INT头部的对应位置,由此完成数据采集工作。
所述INT源端模块包括解析单元;
当所述INT源端模块接收到UDP探测包后,所述解析单元执行对以太网头部和IPv4头部的解析操作;当解析得到IP目的地址为本设备地址,且IP层头部协议字段号为UDP协议时,继续解析数据包的UDP层,获取UDP头部的目的端口号;
所述INT源端模块包括INT数据包生成单元,所述INT数据包生成单元判断UDP目的端口号等于特殊值后,执行数据包头部的重新封装操作,使其成为INT数据包;
所述INT源端模块包括转发单元,所述转发单元将生成的INT数据包重新转发到以太网头部的解析节点,继而执行INT转发设备处理流程,即采集INT元数据并完成转发。
所述INT数据包生成单元在int-probe-packet-generation节点中,首先为探测包分配INT头部空间;其次,在所述探测包IPv4头部的option字段中复制从控制面下发或者人工通过命令行预先配置的源路由标签栈模板的内容,使得该INT数据包能够携带源路由信息;然后,将INT头部模板中的内容复制到所述探测包的对应空间中;接着,更新UDP探测包的IPv4头部中的protocol字段值为200,并将原始值记录到INT头部中;最后,重新计算IPv4头部校验和,再把数据包发往ethernet-input节点,以便继续执行后续的INT元数据采集和数据包转发。
所述转发设备包括记录单元,在ethernet-input节点中执行原有解析动作之前,所述记录单元记录入端口时间戳;
所述转发设备包括INT数据包识别单元,当数据包完成以太网层和IP层的流水线处理之后,进入到interface-output节点等待转发,此时,所述INT数据包识别单元判断数据包是否为INT数据包;
所述转发设备包括INT元数据复制单元,所述INT元数据复制单元记录出端口MAC地址以及出端口时间戳,根据INT头部的指令信息和指针值,把指令要求采集的各个INT元数据复制到INT元数据堆栈中的空白区域;
所述转发设备包括数据更新单元以及转发单元,所述数据更新单元更新指针值,转发单元继续执行数据包的转发操作。
所述INT源端模块在VPP包处理图结构中增加新的图节点int-sr-forwarding节点,使所述INT源端模块根据插入的源路由标签栈进行转发;所述int-sr-forwarding节点位于ip4-input节点和ip4-lookup节点之间。
本发明还提供一种计算机可读存储介质,存储有计算机可执行指令,其所述计算机可执行指令用于执行上述带内网络遥测方法。
本发明采用标记专门的探测包为INT数据包的实现方式,依据INT头部的指示,统计设备自身的INT元数据,完成数据采集工作;其优势在于:
(1)在虚拟转发设备上实现了高精度的、实时的监测功能;
(2)在适合的探测速率下,探测包对高速转发的性能影响并不太大。
附图说明
为了更清楚地说明本发明中的技术方案,下面将对本发明中所需要使用的附图进行简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,可以根据这些附图获得其它附图。
图1是现有技术中VPP数据包处理图结构图;
图2是本发明提供的INT数据包格式示意图;
图3是本发明提供的源路由标签栈的报文格式示意图;
图4是本发明INT报文处理逻辑对应的VPP图结构图;
图5是指令响应函数的程序流程图;
图6是INT数据包生成单元的程序流程图;
图7是源路由处理逻辑对应的VPP图结构;
图8是INT转发设备解析源路由标签栈的程序流程图;
图9是采集INT元数据的程序流程图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合说明书附图对本发明的实施方式做进一步地详细叙述。
VPP(Vector Packet Processing)是典型的业界广泛使用的虚拟网络设备,是一种高性能的数据包处理架构,能够运行在通用CPU上,实现即开即用、可供生产环境使用的虚拟软件交换机或路由器。VPP基于批处理的思想提升数据包的处理效率,同时基于模块化的架构解耦添加新协议逻辑的复杂度。VPP从网络I/O接口收取输入流量并将到达的数据包组织成一个个的包集合,即“数据包矢量”。然后,这些数据包以数据包矢量为单位,一批一批的通过VPP的数据包处理结构来执行数据包的批处理操作。该数据包处理结构是由多个图节点构成的有向图,而每个图节点则代表数据包处理流程中的某一个操作。该处理架构具备良好的可扩展性。具体而言,VPP模块化的包处理图结构有助于实现协议功能的快速迭代更新。若开发者想要自定义新的数据包处理逻辑,只需在程序库中为VPP编译生成一个独立的二进制VPP插件,并在插件目录中加载该插件,就能重新排列数据包处理图中的图节点或引入新的图节点。这种机制允许通过插件更新的方式引入新的包处理逻辑,而不需要修改VPP自身的核心软件代码。这对网络数据平面协议功能扩展来说是非常便捷的。如图1所示,白色节点为vpp原有节点,每一个节点表示一种逻辑操作;灰色节点为用户自定义节点。
除VPP外,还有多个开源项目提出了多种网络设备虚拟化的解决方案。OVS(OpenvSwitch)是一个开放的多层虚拟软件交换机,其设计目的是通过软件编程的方式实现大规模的网络自动化部署,非常适合作为软件交换机部署在虚拟机管理平台上。还有专门用于P4程序运行的开源仿真平台BMv2(Behavioral Model version 2),它实现了具备协议无关转发架构的软件交换机,并通过运行P4程序,产生程序自定义的数据平面转发行为。相比OVS和BMv2,VPP无论新功能的扩展性还是数据包转发性能,明显优于前两者。
本申请采用标记专门的探测包为INT数据包的实现方式。基于此,我们使用额外的发包终端来发送特殊的UDP探测包。该UDP探测包被第一台VPP虚拟网络设备接收后,将被封装INT头部,从而生成真正的INT数据包。该台VPP虚拟网络设备实际上扮演了INT源端的功能角色。后续的VPP虚拟网络设备接收到INT数据包,作为INT转发设备,它们需要依据INT头部的指示,统计设备自身的INT元数据,并将其写入INT头部的对应位置,由此完成数据采集工作。同时,根据控制面通过特定算法的计算,我们在INT数据包中插入源路由标签栈,以发送最小的探测包数,实现覆盖全网的带内遥测。
实施例1
接下来,我们基于IPv4、UDP、INT协议规范以及源路由技术,阐述在VPP上设计和实现带内网络遥测的技术细节。
一种带内网络遥测方法,所述遥测方法采用带标记的并且UDP头部设置目的端口为特殊值55555的INT数据包作为探测包,使用额外的发包终端发送所述探测包,在INT数据包中插入源路由标签栈,以发送最小的探测包数,实现覆盖全网的带内遥测;所述遥测方法包括以下步骤:
步骤一,发包终端将所述探测包发送至指定的VPP虚拟网络设备,即INT源端,所述INT源端为可以向数据包中插入INT报头的设备;
当INT源端接收到UDP探测包后(以dpdk-input节点作为输入),首先执行以太网头部(ethernet-input节点)和IPv4头部(ip4-input节点)的解析操作;当解析得到的IP目的地址为本设备地址,且IP层头部协议字段号为UDP协议时,将继续解析数据包的UDP层(ip4-local节点和ip4-udp-lookup节点),获取UDP头部的目的端口号;接着,根据特殊的自定义目的端口号(55555),执行数据包头部的重新封装操作(int-probe-packet-generation节点),使其成为INT数据包。最后,由于此时INT源端也是VPP虚拟网络设备,也需采集本网络设备的状态信息(即也需完成INT转发设备的功能),所以生成的INT数据包会被重新转发到以太网头部的解析节点(ethernet-input节点),继而执行INT转发设备处理流程,即采集INT元数据并完成转发。整个处理过程如图4所示。
本发明扩展了VPP已有的数据包处理节点ethernet-input和interface-output,在其上实现了对INT元数据(入端口时间戳;出端口时间戳;出端口MAC地址;转发处理时延;队列长度等)的采集。
受限于数据包大小,INT源端无法在INT头部中预留无限大的空白INT元数据堆栈空间,默认预留5跳的INT元数据空间。针对不同网络拓扑结构,用户可能希望制定最大转发跳数或者采集的INT元数据类型。因此,除了封装INT头部之外,INT源端还提供了相应的配置接口。
综上,将INT源端的功能实现划分为以下两个单元,即指令配置单元和INT数据包生成单元:
1)指令配置单元
该模块负责提供配置指令和重新初始化INT头部模板。配置指令可暴露给用户或控制平面调用,根据配置参数来计算INT头部中需要预留的空白INT元数据堆栈空间大小。而INT头部模板则在配置指令下发后被重新初始化,以便INT数据包生成模块据此模板来重新封装UDP探测包,生成INT数据包。
借助VPP提供的开发接口,可以实现CLI配置指令以及指令响应函数。指令格式如下:
int header <add> <next ip4_addr1, next ip4_addr2, …> <maxhop hop_value> <insmap map_value>
其中,add参数表示该指令是INT头部配置指令;next参数,它按序记录了源路由中每一跳节点的IP地址;maxhop参数提供遥测过程的最大跳数;insmap参数指示每跳节点需要统计的INT元数据类型,对应INT头部格式中16-bit的instructionMap字段。
指令响应函数的程序流程如图5所示。首先解析配置指令,得到各参数值;接着,先删除原有的INT头部模板(即上一轮创建的头部模板全局变量),再依据指令参数值,生成新的模板。
2)INT数据包生成单元,即所述步骤1.3中,执行数据包头部的重新封装操作,使其成为INT数据包具体过程为:
在int-probe-packet-generation节点中,首先为探测包分配INT头部空间;其次,在所述探测包IPv4头部的option字段中复制从控制面下发或者人工通过命令行预先配置的源路由标签栈模板的内容,使得该INT数据包能够携带源路由信息;然后,将INT头部模板中的内容复制到所述探测包的对应空间中;接着,更新UDP探测包的IPv4头部中的protocol字段值为200,并将原始值记录到INT头部中;最后,重新计算IPv4头部校验和,再把数据包发往ethernet-input节点,以便继续执行后续的INT元数据采集和数据包转发。int-probe-packet-generation节点的注册和初始化如图6,注册节点时,指定下一处理节点ethernet-input;并在初始化时指定UDP特殊端口号。
本发明在VPP已有数据包处理节点ip4-udp-lookup后,根据特殊UDP的目的端口号,新增int-probe-packet-generation节点。当ip4-udp-lookup解析到特殊UDP目的端口号后,进入int-probe-packet-generation节点插入INT报头以及源路由标签栈。更新ip报头的protocol为200并重新计算校验和。
所述INT源端接收探测包后,封装INT头部,生成带标记的INT数据包,并将所述带标记的INT数据包转发至后续的VPP虚拟网络设备。
本实施例提供了一种新型的INT数据包格式,采用特殊的标记将其作为探测包,原始探测包在IP头部设置目的IP为VPP虚拟网络设备(INT源端)的网络地址,在UDP头部设置目的端口为特殊值55555。当VPP源端接收到该探测包时,在IP报头和UDP报头之间插入INT报头,构成INT探测包。
本发明在VPP已开源的构架上,基于源路由技术提出了带内网络遥测构架。整个构架包括:1、设计了INT报头格式以及源路由标签栈格式。2、设计了INT的处理逻辑:通过特殊UDP探测包(IP层目的IP为VPP第一跳的IP地址,UDP层目的端口号为55555),在VPP第一跳封装源路由信息以及INT报头,从而形成INT探测包。结合控制平面对网络拓扑的路径设计,根据源路由完成探测包的转发,实现对整个网络的遥测覆盖。
INT数据包的报文格式如图2所示;其中:
1)8-bit的type字段表示INT数据包的类型,我们定义1表示它是基于特殊UDP探测包封装的INT数据包。
2)8-bit的length字段记录了INT头部的长度。
3)8-bit的nextProtocol字段用于区分INT头部封装的上层协议,它复制了原始IPv4头部中的协议字段号(protocol)。这是因为,我们把INT头部放置在了IP层之后,并使用自定义的协议号200来表示IP层之后的上层协议是INT,所以IP头部中原始的协议字段号需要重新被记录在INT头部中,以指示INT头部之后的上层协议类型。
4)16-bit的标志位(flags)字段,包括了INT协议的版本号等标志位信息。
5)8-bit的hopML字段,表示每一跳节点需要添加的INT元数据的最大长度。
6)8-bit的pointer字段,指向在INT元数据堆栈中下一个可填充INT元数据的空白头部空间地址。
7)16-bit的instructionMap字段,其每个bit代表一种INT元数据类型,它指示了每跳节点需要统计的各个INT元数据类型的组合,例如交换机标识号、入端口时间戳、出端口时间戳、包缓存队列长度等。实际采集到的信息则取决于INT转发设备对所采集INT元数据的支持情况。
8)后续的metadataStack即INT元数据堆栈,记录了在每一跳节点上采集到的各个INT元数据。
上述INT数据包报文借助VPP提供的开发接口,实现CLI配置指令以及指令响应函数,完成INT报头的自定义配置。通过新增的命令,可以实现自定义INT过程中的遥测最大跳数,自定义需要检测的INT元数据类型,以及自定义源路由标签栈。
步骤二,后续的VPP虚拟网络设备接收到INT数据包作为INT转发设备,依据INT头部的指示,统计设备自身的INT元数据,并将INT元数据写入INT头部的对应位置,由此完成数据采集工作。
当INT源端完成INT报头的插入后,也要采集INT元数据,此时可以认为其变成了INT转发设备。同时,由于初始UDP探测包的IP目的地址为本设备地址,并不能完成转发,所以需要根据插入的源路由标签栈进行转发。对于INT转发设备,为了解析源路由标签栈,可以在VPP包处理图结构中增加新的图节点(如图7所示的int-sr-forwarding节点的逻辑位置)。新的图节点位于ip4-input节点和ip4-lookup节点之间,其程序流程如图8所示,具体描述如下。在ip4-input节点中解析IPv4头部之后,判断其protocol字段值是否为200(自定义协议号,表示上层为INT协议),若是,则把数据包发往新增加的int-sr-forwarding节点;否则说明该数据包为正常数据包,继续执行IP层后续的操作。在int-sr-forwarding节点中,首先分别判断IPv4头部中的可选字段是否为源路由选项(sr->code == 137),以及可选字段存储的指针是否已经超出头部长度(sr->pointer < sr->length);其次,根据指针值获取源路由标签栈中指定的下一跳IP地址,并将其复制到IPv4头部的目的地址字段中;接着,更新可选字段中的指针值pointer;最后,把数据包发往ip4-lookup节点,继续执行后续的路由表查找操作。
源路由标签栈格式
为了在IPv4数据包中增加源路由信息,可借助IPv4头部的可选字段(option)。图3展示了源路由标签栈的报文格式,其中:
1)8-bit的NOP字段是填充字符,使得后面的字段能与4字节长度对齐。
2)8-bit的code字段标识了可选字段的选项类型,其中137表示严格源路由选项。
3)8-bit的length字段记录了整个可选字段的长度。
4)8-bit的pointer字段记录了指向下一个可使用的路由地址的指针。
5)后续的DIP标签栈以4字节为单位,记录着数据包在网络中传输时被指定的每一跳节点的网络地址。
为了进一步在IPv4协议之上实现INT元数据的采集工作,需要对若干VPP原有节点的逻辑功能做相应的扩展。我们在原有的ethernet-input节点和interface-output节点中增加了部分代码,使得数据包能在刚进入数据平面流水线进行处理以及处理结束时,分别采集到所需的INT元数据。
我们假设采集的INT元数据,分别为:
1)入端口时间戳:ingress_timestamp_s和ingress_timestamp_us,秒和微秒级,分别占4字节;
2)出端口时间戳:egress_timestamp_s和egress_timestamp_us,秒和微秒级,分别占4字节;
3)出端口MAC地址:switch_addr,占6字节;
4)转发处理时延,占4字节;
5)队列长度,占4字节。
以上元数据总共占30字节,所以此时每一跳节点需要添加的INT元数据的最大长度为30字节。
图9展示了增加代码的程序流程图,具体的I8T元数据采集流程描述如下:
在ethernet-input节点中执行原有解析动作之前,首先记录入端口时间戳(包括秒级和微秒级两种)。
当数据包完成以太网层和IP层的流水线处理之后,进入到interface-output节点等待转发。此时,首先判断数据包是否为INT数据包(ether->type == ETHERNET_TYPE_IP4且ip->protocol == 200),若是,则继续完成下列动作,否则直接转发数据包。当判断是INT数据包后,分别记录出端口MAC地址以及出端口时间戳;接着,根据INT头部的指令信息(即instructionMap字段)和指针值(即pointer字段),把指令要求采集的各个INT元数据复制到INT元数据堆栈中的空白区域;最后,更新指针值,并继续执行数据包的转发操作。
当所述INT源端完成INT报头的插入后,采集INT元数据;在VPP包处理图结构中增加新的图节点int-sr-forwarding节点,使所述INT源端根据插入的源路由标签栈进行转发;所述int-sr-forwarding节点位于ip4-input节点和ip4-lookup节点之间,具体流程为:
在ip4-input节点中解析IPv4头部之后,判断其protocol字段值是否为200,若是,则把数据包发往所述int-sr-forwarding节点;否则说明该数据包为正常数据包,继续执行IP层后续的操作;
在所述int-sr-forwarding节点中,首先分别判断IPv4头部中的可选字段是否为源路由选项,以及可选字段存储的指针是否已经超出头部长度;其次,根据指针值获取源路由标签栈中指定的下一跳IP地址,并将其复制到IPv4头部的目的地址字段中;接着,更新可选字段中的指针值pointer;最后,把数据包发往ip4-lookup节点,继续执行后续的路由表查找操作。
本发明在VPP已有的数据包处理节点ip4-input和ip4-lookup之间,新增了源路由处理节点int-sr-forwarding。当ip4-input节点解析到protocol为200的INT探测包后,该探测包会被发送到int-sr-forwarding节点处理。在int-sr-forwarding节点中,根据ip4的option字段中封装的源路由标签栈,获取下一跳ip地址。之后发送到ip4-lookup节点执行后续转发逻辑。
实施例2
本发明还提供一种带内网络遥测系统,所述遥测系统采用带标记的并且UDP头部设置目的端口为特殊值55555的INT数据包作为探测包,使用额外的发包终端发送所述探测包,在INT数据包中插入源路由标签栈,以发送最小的探测包数,实现覆盖全网的带内遥测;所述遥测系统包括:
INT源端模块,所述INT源端模块为接收所述探测包的指定VPP虚拟网络设备,所述INT源端模块为可以向数据包中插入INT报头的设备;
所述INT源端模块接收探测包后,封装INT头部,生成带标记的INT数据包,并将所述带标记的INT数据包转发至后续的VPP虚拟网络设备;
转发设备,所述转发设备为所述后续的VPP虚拟网络设备,所述转发设备依据INT头部的指示,统计设备自身的INT元数据,并将INT元数据写入INT头部的对应位置,由此完成数据采集工作。
所述INT源端模块包括解析单元;
当所述INT源端模块接收到UDP探测包后,所述解析单元执行对以太网头部和IPv4头部的解析操作;当解析得到IP目的地址为本设备地址,且IP层头部协议字段号为UDP协议时,继续解析数据包的UDP层,获取UDP头部的目的端口号;
所述INT源端模块包括INT数据包生成单元,所述INT数据包生成单元判断UDP目的端口号等于55555后,执行数据包头部的重新封装操作,使其成为INT数据包;
所述INT源端模块包括转发单元,所述转发单元将生成的INT数据包重新转发到以太网头部的解析节点,继而执行INT转发设备处理流程,即采集INT元数据并完成转发。
所述INT数据包生成单元在int-probe-packet-generation节点中,首先为探测包分配INT头部空间;其次,在所述探测包IPv4头部的option字段中复制从控制面下发或者人工通过命令行预先配置的源路由标签栈模板的内容,使得该INT数据包能够携带源路由信息;然后,将INT头部模板中的内容复制到所述探测包的对应空间中;接着,更新UDP探测包的IPv4头部中的protocol字段值为200,并将原始值记录到INT头部中;最后,重新计算IPv4头部校验和,再把数据包发往ethernet-input节点,以便继续执行后续的INT元数据采集和数据包转发。
所述转发设备包括记录单元,在ethernet-input节点中执行原有解析动作之前,所述记录单元记录入端口时间戳;
所述转发设备包括INT数据包识别单元,当数据包完成以太网层和IP层的流水线处理之后,进入到interface-output节点等待转发,此时,所述INT数据包识别单元判断数据包是否为INT数据包;
所述转发设备包括INT元数据复制单元,所述INT元数据复制单元记录出端口MAC地址以及出端口时间戳,根据INT头部的指令信息和指针值,把指令要求采集的各个INT元数据复制到INT元数据堆栈中的空白区域;
所述转发设备包括数据更新单元以及转发单元,所述数据更新单元更新指针值,转发单元继续执行数据包的转发操作。
所述INT源端模块在VPP包处理图结构中增加新的图节点int-sr-forwarding节点,使所述INT源端模块根据插入的源路由标签栈进行转发;所述int-sr-forwarding节点位于ip4-input节点和ip4-lookup节点之间。
实施例3
本实施例提供一种计算机可读存储介质,存储有计算机可执行指令,其所述计算机可执行指令用于执行上述带内网络遥测方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
上述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种带内网络遥测方法,其特征在于,所述遥测方法包括以下步骤:
步骤一,发包终端将探测包发送至指定的VPP虚拟网络设备,即INT源端,所述INT源端为可以向数据包中插入INT报头的设备,所述探测包为带标记的并且UDP头部设置目的端口为特殊值的INT数据包;
步骤二,所述INT源端接收探测包后,封装INT头部,生成带标记的INT数据包,并将所述带标记的INT数据包转发至后续的VPP虚拟网络设备;
步骤三,后续的VPP虚拟网络设备接收到INT数据包作为INT转发设备,依据INT头部的指示,统计设备自身的INT元数据,并将INT元数据写入INT头部的对应位置,由此完成数据采集工作。
2.根据权利要求1所述的一种带内网络遥测方法,其特征在于,所述步骤二具体包含以下内容:
步骤2.1,当所述INT源端接收到UDP探测包后,执行对以太网头部和IPv4头部的解析操作;
步骤2.2,当解析得到IP目的地址为本设备地址,且IP层头部协议字段号为UDP协议时,继续解析数据包的UDP层,获取UDP头部的目的端口号;
步骤2.3,获取的UDP头部的目的端口号等于所述特殊值时,执行数据包头部的重新封装操作,使其成为INT数据包;
步骤2.4,由INT源端生成的INT数据包被重新转发到以太网头部的解析节点,继而执行INT转发设备处理流程,即采集INT元数据并完成转发。
3.根据权利要求2所述的一种带内网络遥测方法,其特征在于,所述步骤2.3中,执行数据包头部的重新封装操作,使其成为INT数据包具体过程为:
在int-probe-packet-generation节点中,首先为探测包分配INT头部空间;其次,在所述探测包IPv4头部的option字段中复制从控制面下发或者人工通过命令行预先配置的源路由标签栈模板的内容,使得该INT数据包能够携带源路由信息;然后,将INT头部模板中的内容复制到所述探测包的对应空间中;接着,更新UDP探测包的IPv4头部中的protocol字段值为200,并将原始值记录到INT头部中;最后,重新计算IPv4头部校验和,再把数据包发往ethernet-input节点,以便继续执行后续的INT元数据采集和数据包转发。
4.根据权利要求2所述的一种带内网络遥测方法,其特征在于,当所述INT源端完成INT报头的插入后,采集INT元数据;在VPP包处理图结构中增加新的图节点int-sr-forwarding节点,使所述INT源端根据插入的源路由标签栈进行转发;所述int-sr-forwarding节点位于ip4-input节点和ip4-lookup节点之间。
5.根据权利要求4所述的一种带内网络遥测方法,其特征在于,增加新的图节点int-sr-forwarding节点具体流程为:
在ip4-input节点中解析IPv4头部之后,判断其protocol字段值是否为200,若是,则把数据包发往所述int-sr-forwarding节点;否则说明该数据包为正常数据包,继续执行IP层后续的操作;
在所述int-sr-forwarding节点中,首先分别判断IPv4头部中的可选字段是否为源路由选项,以及可选字段存储的指针是否已经超出头部长度;其次,根据指针值获取源路由标签栈中指定的下一跳IP地址,并将其复制到IPv4头部的目的地址字段中;接着,更新可选字段中的指针值pointer;最后,把数据包发往ip4-lookup节点,继续执行后续的路由表查找操作。
6.根据权利要求2所述的一种带内网络遥测方法,其特征在于,所述步骤三中,后续的VPP虚拟网络设备,依据INT头部的指示,统计设备自身的INT元数据,具体包括以下步骤:
步骤3.1,在ethernet-input节点中执行原有解析动作之前,首先记录入端口时间戳;
步骤3.2,当数据包完成以太网层和IP层的流水线处理之后,进入到interface-output节点等待转发,此时,首先判断数据包是否为INT数据包,若是,则继续完成步骤3.3,否则直接转发数据包;
步骤3.3,当判断是INT数据包后,分别记录出端口MAC地址以及出端口时间戳;接着,根据INT头部的指令信息和指针值,把指令要求采集的各个INT元数据复制到INT元数据堆栈中的空白区域;最后,更新指针值,并继续执行数据包的转发操作。
7.一种带内网络遥测系统,其特征在于,所述遥测系统采用带标记的并且UDP头部设置目的端口为特殊值的INT数据包作为探测包,使用发包终端发送所述探测包,在INT数据包中插入源路由标签栈,以发送最小的探测包数,实现覆盖全网的带内遥测;所述遥测系统包括:
INT源端模块,所述INT源端模块为接收所述探测包的指定VPP虚拟网络设备;
所述INT源端模块接收探测包后,封装INT头部,生成带标记的INT数据包,并将所述带标记的INT数据包转发至后续的VPP虚拟网络设备;
转发设备,所述转发设备为所述后续的VPP虚拟网络设备,所述转发设备依据INT头部的指示,统计设备自身的INT元数据,并将INT元数据写入INT头部的对应位置,由此完成数据采集工作。
8.根据权利要求7所述的一种带内网络遥测系统,其特征在于,所述INT源端模块包括解析单元;
当所述INT源端模块接收到UDP探测包后,所述解析单元执行对以太网头部和IPv4头部的解析操作;当解析得到IP目的地址为本设备地址,且IP层头部协议字段号为UDP协议时,继续解析数据包的UDP层,获取UDP头部的目的端口号;
所述INT源端模块包括INT数据包生成单元,所述INT数据包生成单元判断UDP目的端口号等于所述特殊值后,执行数据包头部的重新封装操作,使其成为INT数据包;
所述INT源端模块包括转发单元,所述转发单元将生成的INT数据包重新转发到以太网头部的解析节点,继而执行INT转发设备处理流程,即采集INT元数据并完成转发。
9.根据权利要求8所述的一种带内网络遥测系统,其特征在于,所述INT数据包生成单元在int-probe-packet-generation节点中,首先为探测包分配INT头部空间;其次,在所述探测包IPv4头部的option字段中复制从控制面下发或者人工通过命令行预先配置的源路由标签栈模板的内容,使得该INT数据包能够携带源路由信息;然后,将INT头部模板中的内容复制到所述探测包的对应空间中;接着,更新UDP探测包的IPv4头部中的protocol字段值为200,并将原始值记录到INT头部中;最后,重新计算IPv4头部校验和,再把数据包发往ethernet-input节点,以便继续执行后续的INT元数据采集和数据包转发。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器执行时实现权利要求1~6中任意一项所述带内网络遥测方法。
CN202010921116.4A 2020-09-04 2020-09-04 一种带内网络遥测方法、系统及计算机可读存储介质 Active CN112422498B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010921116.4A CN112422498B (zh) 2020-09-04 2020-09-04 一种带内网络遥测方法、系统及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010921116.4A CN112422498B (zh) 2020-09-04 2020-09-04 一种带内网络遥测方法、系统及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN112422498A CN112422498A (zh) 2021-02-26
CN112422498B true CN112422498B (zh) 2023-04-14

Family

ID=74853913

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010921116.4A Active CN112422498B (zh) 2020-09-04 2020-09-04 一种带内网络遥测方法、系统及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN112422498B (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113162800B (zh) * 2021-03-12 2022-06-14 电子科技大学 一种基于强化学习的网络链路性能指标异常定位方法
CN113067773B (zh) * 2021-03-16 2022-05-17 中国科学技术大学 基于协议无感知的段路由与带内遥测融合方法
CN113242142B (zh) * 2021-04-13 2022-04-29 清华大学 带内网络遥测方法、装置、电子设备及存储介质
CN113225229B (zh) * 2021-05-08 2022-04-05 北京邮电大学 一种基于标签的分布式轻量级全网遥测方法及装置
CN113282350B (zh) * 2021-05-26 2023-01-13 重庆零壹空间科技集团有限公司 遥测数据判读方法、装置、计算机设备和可读存储介质
CN115707012A (zh) * 2021-08-06 2023-02-17 华为技术有限公司 一种通信方法、装置及设备
CN113938407B (zh) * 2021-09-02 2023-06-20 北京邮电大学 基于带内网络遥测系统的数据中心网络的故障检测方法及装置
CN114050994B (zh) * 2021-11-11 2023-07-25 东南大学 一种基于SRv6的网络遥测方法
CN113986560B (zh) * 2021-12-27 2022-03-25 浙江锐文科技有限公司 一种在智能网卡/DPU内实现P4与OvS逻辑复用的方法
CN114422213B (zh) * 2021-12-31 2023-07-25 南京邮电大学 基于int的异常流量检测方法和装置
CN114338509B (zh) * 2022-01-07 2023-07-14 华东师范大学 一种基于带内网络遥测技术的数据包转发环路实时检测系统及检测方法
CN114710316B (zh) * 2022-02-23 2023-05-30 北京邮电大学 带内遥测数据验证方法及白盒交换机
CN116781499A (zh) * 2022-03-11 2023-09-19 华为技术有限公司 网络性能测量方法、系统及装置
CN114666681B (zh) * 2022-03-21 2024-05-10 厦门大学 一种有状态的带内网络遥测方法及系统
CN114567575B (zh) * 2022-04-29 2022-07-22 南京邮电大学 基于int的丢包检测方法
CN115118663B (zh) * 2022-06-27 2023-11-07 西安电子科技大学 结合带内网络遥测获取网络拥塞信息的方法
CN115314409B (zh) * 2022-07-20 2024-02-06 北京邮电大学 网络状态信息获取方法及系统
CN115484202B (zh) * 2022-08-23 2023-05-30 南京邮电大学 一种基于int的轻量化路径探测方法
CN115442282B (zh) * 2022-08-31 2023-08-29 深圳市风云实业有限公司 一种数据采集系统及方法
CN115550258B (zh) * 2022-12-02 2023-03-31 苏州浪潮智能科技有限公司 一种流量镜像方法、装置、设备及存储介质
CN116319468B (zh) * 2023-05-23 2023-08-04 苏州浪潮智能科技有限公司 网络遥测方法、装置、交换机、网络、电子设备和介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106656541A (zh) * 2015-11-04 2017-05-10 大唐移动通信设备有限公司 一种基于snmp接口的数据传输方法和装置
US20170192781A1 (en) * 2015-12-30 2017-07-06 Robert Valentine Systems, Apparatuses, and Methods for Strided Loads
US11252040B2 (en) * 2018-07-31 2022-02-15 Cisco Technology, Inc. Advanced network tracing in the data plane
CN110351149A (zh) * 2019-07-26 2019-10-18 北京神州绿盟信息安全科技股份有限公司 一种维护网络数据转发平面的方法及装置

Also Published As

Publication number Publication date
CN112422498A (zh) 2021-02-26

Similar Documents

Publication Publication Date Title
CN112422498B (zh) 一种带内网络遥测方法、系统及计算机可读存储介质
US11876883B2 (en) Packet processing method, network node, and system
CN112702330B (zh) 面向Overlay网络的轻量级带内网络遥测方法、装置及存储介质
CN105706043B (zh) 推进式链接的列表吞吐量
RU2608879C2 (ru) Приводимое в действие контроллером оам для openflow
CN112866075A (zh) 面向Overlay网络的带内网络遥测方法、系统及相关装置
CN109246017A (zh) 一种查询组播转发路径的方法及装置
CN109905280B (zh) 一种面向移动卫星网络的仿真方法及系统
CN104852828B (zh) 一种网络时延检测方法,装置及系统
CN112039796B (zh) 数据包传输方法和装置、存储介质和电子设备
CN105681305A (zh) 一种sdn防火墙系统及实现方法
CN109547288B (zh) 一种协议无关转发网络可编程流测量方法
CN111988223B (zh) 虚拟机迁移方法与网络系统
Gulenko et al. A practical implementation of in-band network telemetry in open vswitch
CN112929419B (zh) 一种数据包传输方法、装置、电子设备及可读存储介质
EP4149058A1 (en) Network performance measurement method, apparatus, device and system, and storage medium
CN105357039A (zh) 一种时延容忍网络的仿真方法及装置
CN113938403A (zh) 一种能力通告方法及相关设备
CN115277450B (zh) 基于opnet的虚实结合异构通信网络融合系统及应用
Josbert et al. A framework for managing dynamic routing in industrial networks driven by software-defined networking technology
CN105763347A (zh) 用于获取参数的方法、网络设备及系统
CN116781574A (zh) 带内网络遥测方法以及装置、设备及存储介质
CN111737155B (zh) 一种芯片调试系统、方法、装置、设备及存储介质
CN104935573B (zh) 虚拟机迁移方法及装置
CN115842757A (zh) 随流检测方法、装置、设备、系统及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
OR01 Other related matters
OR01 Other related matters