CN113709064B - P4交换机及其数据处理方法 - Google Patents
P4交换机及其数据处理方法 Download PDFInfo
- Publication number
- CN113709064B CN113709064B CN202110843449.4A CN202110843449A CN113709064B CN 113709064 B CN113709064 B CN 113709064B CN 202110843449 A CN202110843449 A CN 202110843449A CN 113709064 B CN113709064 B CN 113709064B
- Authority
- CN
- China
- Prior art keywords
- data packet
- module
- floating point
- switch
- data
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/109—Integrated on microchip, e.g. switch-on-chip
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种P4交换机,包括:判断逻辑模块,用于根据输入该P4交换机的数据包内的信息来决定将该数据包发送到浮点运算模块或者数据转发模块;浮点运算模块,用于对该逻辑判断模块发送来的该数据包完成浮点数运算并发送该数据转发模块;数据转发模块,用于将该判断逻辑模块或者该浮点运算模块发送来的该数据包输出该P4交换机。
Description
技术领域
本发明涉及可编程交换机技术领域,特别涉及一种P4交换机及其数据处理方法。
背景技术
近年来,随着信息技术的不断发展,网络的应用场景越来越丰富和复杂。不同的应用场景对网络的需求也不同,有的场景需要低延迟,有的场景需要可靠传输……为了满足五花八门的需求,研究人员提出了许多新的网络协议。然而,各个厂商往往需要花费数年的时间来研发支持新的网络协议的芯片,这极大的限制了网络技术的发展。因此,专门针对数据转发层面编程的P4技术(Programming Protocol-independent Packet Processors)应运而生。P4技术使得数据包的解析和转发等流程可以通过编程控制,让用户具有了自定义网络硬件设备的能力。P4交换机就是P4技术的产物,是首个被广泛使用的、具有硬件编程能力的可编程交换机。
由于P4交换机具有强大的编程能力,研究人员试图将一些本来放在服务器上的工作转移到P4交换机上来做,以此获得性能和可靠性上的提升。然而,由于P4交换机的计算单元不支持浮点数运算,使得很多工作无法顺利转移到交换机上。如图1所示,解决这一问题的现有方法是:在服务器上,先将浮点数a乘以一个固定的系数M将之转换为整数,然后再发往P4交换机完成整数运算,最后在接收端上将计算结果除以系数M将之还原成浮点数。例如,假设系数M的值为10000,对于浮点数a=10.00432,在发送端服务器S1上将浮点数a乘以系数M变为100043,然后将该整数100043发往P4交换机,在P4交换机上完成整数运算后,再在接收端服务器S2将运算结果除以系数M。
上述的当前方案的主要问题在于运算精度太低。造成精度低的原因有三个:第一,浮点数a乘以系数M得到的结果仍可能包含小数部分,这个小数部分会被省略,在上述例子中,对于a=10.00432,M=10000,a与M的乘积应为100043.2,其中0.2被忽略了,在网络上传输的是100043;第二,如果浮点数a本来的值就很大,乘以系数M后可能会超过表示范围,对于16位浮点数a,若a的值大于3.3,乘以系数10000后得到的值就会大于33000,则这个数就无法用16位整数表示;第三,如果采用此方案实现浮点数乘法,则P4交换机上的运算结果就不可避免的被放大M的平方倍,这会使得运算结果极可能超过表示范围。
另外,除了精度低这个问题外,上述方案还必须在发送端与接收端的服务器上部署乘(除)系数的模块,从而引入新的延迟。
发明内容
针对现有技术的不足,本发明的主要目的在于提出一种数据处理方法与装置、P4交换机、可读存储介质,能够实现高精度的数据处理。
为了实现上述目的,本发明提出了一种P4交换机,其包括:
判断逻辑模块,用于根据输入该P4交换机的数据包内的信息来决定将该数据包发送到浮点运算模块或者数据转发模块;
浮点运算模块,用于对该逻辑判断模块发送来的该数据包完成浮点数运算并发送该数据转发模块;
数据转发模块,用于将该判断逻辑模块或者该浮点运算模块发送来的该数据包输出该P4交换机。
上述的P4交换机,其中,该判断逻辑模块具体用于根据该数据包的ipv4的目的地址、tcp的保留字段或者ipv4的tos字段来决定将该数据包发送到该浮点运算模块或者该数据转发模块。
上述的P4交换机,其中,该判断逻辑模块具体用于根据该数据包的ipv4的tos字段来决定将该数据包发送到该浮点运算模块或者该数据转发模块,并且当该ipv4的tos字段的值为3,将该数据包发送到该浮点运算模块,当该ipv4的tos字段的值不为3,将该数据包发送到该数据转发模块。
上述的P4交换机,其中,该浮点运算模块包括:
浮点加减运算子模块,用于根据以下公式完成对该数据包的浮点数x与y的加或减运算
浮点乘除运算子模块,用于根据以下公式完成对该数据包的浮点数x与y的乘或除运算
上述的P4交换机,其中,该数据转发模块具体用于根据该数据包的ipv4的目的地址来选择出端口输出该数据包。
为了实现上述目的,本发明还提出了一种P4交换机的数据处理方法,其包括:
步骤1,判断逻辑模块根据输入该P4交换机的数据包内的信息来决定将该数据包发送到浮点运算模块或者数据转发模块;
步骤2,浮点运算模块对该逻辑判断模块发送来的该数据包完成浮点数运算并发送该数据转发模块;
步骤3,数据转发模块将该判断逻辑模块或者该浮点运算模块发送来的该数据包输出该P4交换机。
上述的P4交换机的数据处理方法,其中,在该步骤1中,该判断逻辑模块具体根据该数据包的ipv4的目的地址、tcp的保留字段或者ipv4的tos字段来决定将该数据包发送到该浮点运算模块或者该数据转发模块。
上述的P4交换机的数据处理方法,其中,在该步骤1中,该判断逻辑模块具体根据该数据包的ipv4的tos字段来决定将该数据包发送到该浮点运算模块或者该数据转发模块,并且当该ipv4的tos字段的值为3,将该数据包发送到该浮点运算模块,当该ipv4的tos字段的值不为3,将该数据包发送到该数据转发模块。
上述的P4交换机的数据处理方法,其中,在该步骤2中,该浮点运算模块根据以下公式完成对该数据包的浮点数x与y的加或减运算
根据以下公式完成对该数据包的浮点数x与y的乘或除运算
上述的P4交换机的数据处理方法,其中,在该步骤3中,该数据转发模块具体根据该数据包的ipv4的目的地址来选择出端口输出该数据包。
由以上方案可知,本发明的优点在于:
通过在P4交换机上部署浮点运算模块,从而省略了在服务器S1和S2部署乘(除)模块来实现浮点数和整数的转化,进而减少了相应的延迟,也避免了转化过程中精度的损失;通过应用分治思想,将原来需要8GB大表完成的内容拆分为几张128KB的小表和一系列整数加减法,从而极大地减少了内存消耗,以成功地在P4交换机上完成浮点数的四则运算;数据包的浮点数做取对数操作,原来的乘法运算就可以转换为加法运算,从而通过这种方式完成一个浮点数乘除法的运算只需要做一次整数加法,一次查指数表,从而极大地简化了操作。
附图说明
图1为现有的P4交换机的示意图。
图2为本发明一实施例的P4交换机的示意图。
图3为本发明一实施例的分治方法示意图。
图4为本发明一实施例的浮点数加减法硬件设计图。
图5为本发明一实施例的浮点数乘除法硬件设计图。
图6为本发明一实施例的P4交换机的数据处理方法的流程图。
具体实施方式
为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。
发明人在进行P4交换机的相关研究时,发现浮点数运算能力被广泛的需求,而目前实现浮点数运算的方案不仅十分简陋,精度也很低;因而一种完全数据平面的、高精度的浮点数计算方案被广泛需求。
参见图2所示,本发明的实施例提供一种P4交换机100,包括:判断逻辑模块110、浮点运算模块120以及数据转发模块130。
判断逻辑模块110,用于根据输入该P4交换机100的数据包内的信息来决定将该数据包发送到浮点运算模块或者数据转发模块。
其中,用来供逻辑判断看110决定将数据包发送到浮点运算模块120或者数据转发模块130的数据包信息可以是ipv4的目的地址,可以是tcp的保留字段,也可以是ipv4的tos字段,只要参与通信的各方约定好即可,本发明对此不予限定。优选地,在本实施例中,判断逻辑模块110具体根据数据包内的ipv4协议的tos(type of service)字段的值选择接下来的处理逻辑,即当ipv4协议的tos字段的值为3时,将数据包送往到浮点运算模块120,当ipv4协议的tos字段的值不为3时,直接将数据包发送到数据转发模块130。
浮点运算模块120,用于对该逻辑判断模块110发送来的该数据包完成浮点数运算并发送到该数据转发模块130。
发明人在设计该浮点运算模块120时,主要探索和借鉴了以下两种方法:
第一,FPU方法(Floating-point unit):是用在智能处理器上的浮点数计算方案。遵循IEEE 754标准的浮点数包含符号位、指数位和尾数位这三个部分。通用CPU上的浮点数计算器需要先将指数位对齐,再对尾数位做加减法,最后规约得到最终结果。
第二,查表方法:最简单的方法是在P4交换机上保持一个大表格,这个表格包含所有可能的计算结果,这样就可以把计算问题转化为查表问题。
然而,以上两种方法都存在很大的问题:1)FPU方法的操作过于繁琐,要进行复杂的移位和规约操作,这超过了可编程交换机的处理能力;2)查表方法要占用很大的内存,假设要在可编程交换机上完成16位的浮点数加法,那么该方法要使用大约8GB(216·216·2B)内存,考虑到目前P4交换机仅有20MB内存,该方法也不能使用。
经过仔细思考后,本发明最终采用分治的方法将查表方法的内存占用从8GB缩减到0.5MB,从而使其成功在可编程交换机上部署。分治方法示意图如图3所示,总的来说,该方法通过把一个8GB的大表格完成的功能拆分成几个128KB的小表格和一系列整数加减法操作完成,从而极大的减少内存占用。接下来介绍一下这个方法的细节。具体地,在浮点运算模块120部署浮点加减运算子模块121和浮点乘除运算子模块122。
(1)加减法设计
首先,发明人发现两个浮点数x和y的加法可以转变成以下一系列操作(由于运算支持有符号数,并且减法可以视为加负数,因而减法可以看做是加法的一种):
观察上面的公式,发现x和y仅仅作为log函数的因变量出现;假设对所有log(|x|)和log(|y|)做向下取整,此时公式仍然近似成立。因此,加入向下取整后,上述公式变化为:
通过这一项改动,本发明成功消灭了计算公式中的浮点数运算,使之转化为了一系列的取指数、取对数运算和一些整数运算。由于取指数和取对数的运算都是只有一个操作数的运算,因而直接用一个大表格来保存16位数的取指数(或取对数)运算结果只需要占用128KB(216·2B)内存。通过这种方式,本发明就成功地将原来一张8GB的大表格完成的内容拆分为几张128KB的小表格和若干整数加减法。
参见图4所示,展示了浮点数加减法在硬件层面的实现。图4中的logTable和expTable分别表示取对数和取指数的表。miTable有三种类型,对应σ(θ)=log2(1+2θ)、σ(θ)=log2(1-2θ)和σ(θ)=log2(-1+2θ)这三种形式。图4中的In queue和Out queue模块分别表示交换机的入队列和出队列。parser模块提取数据包的信息,deparser模块负责构建数据包。Branch selector负责选择合适的miTable。Corner cases模块是一个原来判断边界条件的模块,这个模块的运行规则是这样的:当发现x比y大15个数量级的情况下,则认为计算的结果约等于x,那就直接返回x做运算的结果;当y比x大15个数量级的情况下,则认为计算的结果约等于y,那就直接返回y做运算的结果。具体推导过程如下所示:
由于(|x+y|)/|x|有三个可能的解:1+|y|/|x|,1-|y|/|x|,|y|/|x|-1。原式变化为:
(2)乘除法设计
浮点数乘除法的设计思路也和加减法类似,先对浮点数x和y的乘(除)法做一个变换:
同样对log(|x|)和log(|y|)做向下取整,得到一个近似成立的公式:
这样就把一个浮点数乘法操作转化成了一系列取对数、取指数、整数加法操作。取对数和取指数操作同样可以通过直接查表得到。参见图5所示,展示了浮点数乘除法在硬件层面的实现,图5中出现的模块都在上一加减法设计中介绍过了,所以在此不再赘述。
数据转发模块130,用于将该判断逻辑模块110或者该浮点运算模块120发送来的该数据包输出该P4交换机100。
其中,数据转发模块130可以根据数据包的信息来选择出端口,可供选择的数据包信息例如ipv4的目的地址、tcp和udp的出端口或者隧道协议的id等,在本实施例中,数据转发模块130具体根据数据包的ipv4的目的地址选择出端口以将数据包输出P4交换机100。
参见图6所示,本发明的实施例提供一种P4交换机的数据处理方法,其包括以下步骤:
步骤S10,判断逻辑模块根据输入该P4交换机的数据包内的信息来决定将该数据包发送到浮点运算模块或者数据转发模块;
步骤S20,浮点运算模块对该逻辑判断模块发送来的该数据包完成浮点数运算并发送该数据转发模块;
步骤S30,数据转发模块将该判断逻辑模块或者该浮点运算模块发送来的该数据包输出该P4交换机。
上述的P4交换机的数据处理方法,其中,在该步骤1中,该判断逻辑模块具体根据该数据包的ipv4的目的地址、tcp的保留字段或者ipv4的tos字段来决定将该数据包发送到该浮点运算模块或者该数据转发模块。
上述的P4交换机的数据处理方法,其中,在该步骤1中,该判断逻辑模块具体根据该数据包的ipv4的tos字段来决定将该数据包发送到该浮点运算模块或者该数据转发模块,并且当该ipv4的tos字段的值为3,将该数据包发送到该浮点运算模块,当该ipv4的tos字段的值不为3,将该数据包发送到该数据转发模块。
上述的P4交换机的数据处理方法,其中,在该步骤2中,该浮点运算模块根据以下公式完成对该数据包的浮点数x与y的加或减运算
根据以下公式完成对该数据包的浮点数x与y的乘或除运算
上述的P4交换机的数据处理方法,其中,在该步骤3中,该数据转发模块具体根据该数据包的ipv4的目的地址来选择出端口输出该数据包。
实验验证
本发明设计了一个准确率accuracy来表示本发明所提出的技术方案的准确性,它的定义方法如下:
其中expect_result表示正确的结果,result则表示本发明提出的方法得到的结果。显而易见,准确率accuracy的取值在[0,1]这个区间内,并且result和expect_result越接近,则准确率accuracy越高。本发明采用python脚本生成十万组随机的浮点数,并测试出准确率,得到下表1所示的统计结果。
表1
平均准确率 | 准确率的中位数 | |
加/减 | 0.99957 | 1 |
乘/除 | 0.99875 | 0.999329 |
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (8)
2.如权利要求1所述的P4交换机,其特征在于,该判断逻辑模块具体用于根据该数据包的ipv4的目的地址、tcp的保留字段或者ipv4的tos字段来决定将该数据包发送到该浮点运算模块或者该数据转发模块。
3.如权利要求2所述的P4交换机,其特征在于,该判断逻辑模块具体用于根据该数据包的ipv4的tos字段来决定将该数据包发送到该浮点运算模块或者该数据转发模块,并且当该ipv4的tos字段的值为3,将该数据包发送到该浮点运算模块,当该ipv4的tos字段的值不为3,将该数据包发送到该数据转发模块。
4.如权利要求1所述的P4交换机,其特征在于,该数据转发模块具体用于根据该数据包的ipv4的目的地址来选择出端口输出该数据包。
6.如权利要求5所述的P4交换机的数据处理方法,其特征在于,在该步骤1中,该判断逻辑模块具体根据该数据包的ipv4的目的地址、tcp的保留字段或者ipv4的tos字段来决定将该数据包发送到该浮点运算模块或者该数据转发模块。
7.如权利要求6所述的P4交换机的数据处理方法,其特征在于,在该步骤1中,该判断逻辑模块具体根据该数据包的ipv4的tos字段来决定将该数据包发送到该浮点运算模块或者该数据转发模块,并且当该ipv4的tos字段的值为3,将该数据包发送到该浮点运算模块,当该ipv4的tos字段的值不为3,将该数据包发送到该数据转发模块。
8.如权利要求5所述的P4交换机的数据处理方法,其特征在于,在该步骤3中,该数据转发模块具体根据该数据包的ipv4的目的地址来选择出端口输出该数据包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110843449.4A CN113709064B (zh) | 2021-07-26 | 2021-07-26 | P4交换机及其数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110843449.4A CN113709064B (zh) | 2021-07-26 | 2021-07-26 | P4交换机及其数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113709064A CN113709064A (zh) | 2021-11-26 |
CN113709064B true CN113709064B (zh) | 2022-11-01 |
Family
ID=78650659
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110843449.4A Active CN113709064B (zh) | 2021-07-26 | 2021-07-26 | P4交换机及其数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113709064B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157254A (zh) * | 2021-02-20 | 2021-07-23 | 井芯微电子技术(天津)有限公司 | 基于p4语言实现的可编程硬件逻辑架构和逻辑实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113132236B (zh) * | 2021-04-21 | 2022-02-25 | 鹏城实验室 | 基于可编程数据平面的服务选择方法、装置及交换机 |
-
2021
- 2021-07-26 CN CN202110843449.4A patent/CN113709064B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157254A (zh) * | 2021-02-20 | 2021-07-23 | 井芯微电子技术(天津)有限公司 | 基于p4语言实现的可编程硬件逻辑架构和逻辑实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113709064A (zh) | 2021-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115934030B (zh) | 算数逻辑单元、浮点数乘法计算的方法及设备 | |
US10554554B2 (en) | Hybrid network processing load distribution in computing systems | |
US7689639B2 (en) | Complex logarithmic ALU | |
US20200218509A1 (en) | Multiplication Circuit, System on Chip, and Electronic Device | |
CN110688088B (zh) | 一种面向神经网络的通用非线性激活函数计算装置和方法 | |
US10715424B2 (en) | Network traffic management with queues affinitized to one or more cores | |
CN116450086B (zh) | 包括乘累加器的芯片、终端和控制方法 | |
CN111240746A (zh) | 一种浮点数据反量化及量化的方法和设备 | |
CN110210611B (zh) | 一种用于卷积神经网络计算的动态自适应数据截断方法 | |
CN113709064B (zh) | P4交换机及其数据处理方法 | |
CN117170622B (zh) | 累加器及用于累加器的方法和芯片电路及计算设备 | |
CN113885831A (zh) | 基于混合数据输入的存算一体电路、芯片及计算装置 | |
CN109460535B (zh) | 一种基于云的有限域矩阵求逆装置及求逆方法 | |
WO2023124371A1 (zh) | 数据处理装置、方法、芯片、计算机设备及存储介质 | |
JP2023103419A (ja) | 演算方法、装置、チップ、電子機器及び記憶媒体 | |
JP4219926B2 (ja) | 電子回路中で乗算演算または除算演算を行う方法およびその装置 | |
CN114079634B (zh) | 一种报文转发方法、装置及计算机可读存储介质 | |
CN111142840A (zh) | 基于fpga的数据计算方法和装置 | |
CN114826853B (zh) | 基于fpga的对数似然比方法及系统 | |
CN117520607B (zh) | 一种流表压缩方法、计算机设备及介质 | |
CN108596332A (zh) | 有符号整数求积方法、终端设备及计算机可读存储介质 | |
CN111639045B (zh) | 数据处理方法、装置、介质和设备 | |
CN116055278B (zh) | 一种基于可配置非标准浮点数据的5g通信内接收机 | |
CN116974509A (zh) | 数据类型转换方法、处理器、电子设备及存储介质 | |
CN118519610A (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 |