CN115174500B - 一种基于pisa的用于网内聚合传输的发送节点和交换机 - Google Patents
一种基于pisa的用于网内聚合传输的发送节点和交换机 Download PDFInfo
- Publication number
- CN115174500B CN115174500B CN202210561537.XA CN202210561537A CN115174500B CN 115174500 B CN115174500 B CN 115174500B CN 202210561537 A CN202210561537 A CN 202210561537A CN 115174500 B CN115174500 B CN 115174500B
- Authority
- CN
- China
- Prior art keywords
- packet
- sliding window
- sequence number
- switch
- key
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提出一种基于PISA的用于网内聚合传输的发送节点,所述发送节点完成如下操作:对分组的序列号按照滑动窗口最大大小分割成段,并对这些段进行编号以确定该分组是在奇数段或偶数段;按照滑动窗口的大小来发送最新的分组序列号,所述滑动窗口以最新的分组序列号为中心。本发明还提出一种基于PISA的用于网内聚合传输的交换机,所述交换机完成如下操作:收到发送节点的分组后,解析获取分组的工作线程ID和分组的序列号;通过该分组的序列号判断该分组是否落在当前的滑动窗口内,并进行标记或处理,其中,所述滑动窗口以最新的分组序列号为中心。
Description
技术领域
本发明涉及计算机通信领域,更具体地,涉及一种基于PISA的用于网内聚合传输的发送节点和交换机。
背景技术
由于底层网络是不可靠的,解决网内聚合传输协议的可靠性则需要考虑终端主机与交换机的协同设计、交换机中状态的设计等问题。目前的学术界给出了SwitchML和ATP这两种基于网内聚合的解决方案关于可靠性问题均提出了自己的解决方法。SwitchML面向的仅仅为单机架、单租户,为实现可靠性在交换机中对之前的聚合结果进行浅拷贝,并记录了版本号,从而确保已完成聚合的结果不会因为聚合器资源的释放而丢失。ATP采用了与传统TCP类似的丢包检测技术,接收到三个连续的序列号不匹配的ACK包或是发生超时现象时就进行重传处理,对于重传的分组不再进行网内聚合,从而使得交换机中不需要记录额外的状态,将对应的聚合操作回退到参数服务器。
发明内容
针对背景技术中的问题,本发明提出一种用于网内聚合传输的发送节点,所述节点具有计算机程序,所述计算机程序运行时,所述发送节点完成如下操作:对分组的序列号按照滑动窗口最大大小分割成段,并对这些段进行编号以确定该分组是在奇数段或偶数段;按照滑动窗口的大小来发送最新的分组序列号,所述滑动窗口以最新的分组序列号为中心。
本发明还提出一种用于网内聚合传输的交换机,所述交换机具有计算机处理程序,所述计算机处理程序运行时,所述交换机完成如下操作:收到发送节点的分组后,解析获取分组的工作线程ID和分组的序列号;通过该分组的序列号判断该分组是否落在当前的滑动窗口内,并进行标记或处理,其中,所述滑动窗口以最新的分组序列号为中心。
本发明采用了发送-聚合-拉取的技术思路,实现了传输的可靠性。本发明能适应有限的内存资源、读写次数和阶段数的限制。
本发明在交换机中内存高效的记录每个发送者状态,能够极大减少对稀缺的交换机内存资源的使用,保证传输的可靠性。
本发明对于键空间进行划分,使得相同的键不会占用不同的聚合器,避免了聚合器资源的浪费,同时使得分组中可以包含更多的键值对,从而提高了吞吐量,饱和了网络带宽。
本发明对分组中负载中变长的键进行了处理,能够应对灵活易变的工作负载,增强了***的通用性。
附图说明
为了更容易理解本发明,将通过参照附图中示出的具体实施方式更详细地描述本发明。这些附图只描绘了本发明的典型实施方式,不应认为对本发明保护范围的限制。
图1为本发明的发送节点的一个实施方式的操作流程图。
图2为本发明的交换机的另一个实施方式的操作流程图。
图3为本发明中的通用分组数据格式的一个实施方式的示意图。
具体实施方式
下面参照附图描述本发明的实施方式,以便于本领域的技术人员可以更好的理解本发明并能予以实施,但所列举的实施例不作为本发明的限定,在不冲突的情况下,下述的实施例及实施例中的技术特征可以相互组合,其中相同的部件用相同的附图标记表示。
在使用网内聚合传输协议的设备(例如交换机)中,分组中的键值对数据并不是全部聚合的,因此为了确保可靠性,交换机需要记录每个键值对的处理结果。记录这些状态的空间复杂度为O(num_sender×avg_num_tuple),其中num_sender表示发送者数量,avg_num_tuple表示需要聚合的键值对。为了减少空间复杂度,本发明采用了两种方法:①发送节点使用滑动窗口来发送分组②在交换机中记录与滑动窗口大小相同的聚合状态。
第一实施例
对于作为节点的发送节点,其用滑动窗口的方式来发送分组。如图1所示,其完成如下操作。
S1,对分组的序列号sequence按照滑动窗口最大大小max_cwnd分割成段,并对这些段进行编号以确定该分组是在奇数段seen_odd或偶数段seen_even。
在一个实施方式中,工作线程发送分组的序列号对32位取模增长作为序列号。每个分组都有自己的序列号sequence。sequence/max_cwnd的奇偶性表示了该分组在奇数段还是偶数段,每个段要么为偶数,要么为奇数。sequence%max_cwnd是它在段内的偏移量。
滑动窗口指的是[most_front_seq-max_cwnd,most_front_seq+max_cwnd]。因为most_front_seq之前的数据已被顺利接收,能发送的只是most_front_seq之后的数据,发送数据的长度为max_cwnd,即最多只能够发送max_cwnd的数据包。
将整个序列号空间按照max_cwnd进行分段,则滑动窗口[most_front_seq-max_cwnd,most_front_seq+max_cwnd]中有max_cwnd数量的序列号处于奇数段,另有max_cwnd数量的序列号处于偶数段。
在一个实施方式中,所有工作线程的most_front_seq,seen_even和seen_odd被静态地分配为大的数组,使用它们的thread_id来选择它们自己的值和范围,ID为thread_id的工作线程将被分配到从max_cwnd×thread_id(包括)到max_cwnd×(thread_id+1)(不包括)的一段范围。
S2,按照滑动窗口的大小来发送最新的分组,最新分组的序列号为most_front_seq。
因为已经对分组进行分段,发送节点的工作线程的滑动窗口至多占据两个相邻的段,一个奇数段,另一个为偶数段。
在交换机中,只有序列号位于[most_front_seq-max_cwnd,most_front_seq+max_cwnd]的分组在将来有可能在交换机中被观察到(在下面详述)。
第二实施例
对于交换机,为了降低对交换机内存的使用,核心思想是在交换机中,只有序列号位于某个范围内的分组才会被看到。具体地,如图2所示,交换机完成如下操作。
S1,收到分组(该分组来自某个发送节点的工作线程)后,解析获取分组的工作线程ID(thread_id)和序列号sequence。
其中,每个发送节点的每个工作线程有一个全局唯一的ID,工作线程发送的分组中包括该ID信息。例如每个发送节点上最多有N个工作线程,则在第i个发送者的第j个线程的ID就为i×N+j。
S2,通过该分组的序列号sequence判断该分组是否落在当前的滑动窗口内,并进行标记或处理。
优选地,滑动窗口为[most_front_seq-max_cwnd,most_front_seq+max_cwnd]。
在一个实施方式中,对于PISA交换机,当前的PISA的交换机没有原生支持%和/操作,本发明选择max_cwnd的值为左边全部是0,右边全部是1的二进制值(类似于掩码,如112,11112)。因而判断奇偶性使用sequence&(max_cwnd+1),偏移量为sequence&max_cwnd。
具体地,如果该分组未落入滑动窗口,则表示该分组之前在网络受到了延迟,但已经被观察到。信息返回发送节点,可以发送下一个分组,most_front_seq被新的sequence更新。计算当前分组的奇偶性和段偏移值。依据当前分组的奇偶性,利用seen数组检查当前分组是否被观察到,并且在seen数组比特中进行置位。更重要的是,在另一个段中具有相同偏移量的比特会被复位。如果一个分组之前被观察过,那么直接拷贝它之前的聚合结果,否则,交换机对该分组进行聚合,并存储聚合结果。
在一个实施方式中,在交换机中,对于如下三个变量:发送节点的工作线程的most_front_seq,seen_even状态和seen_odd状态,可以用大的数组进行存储,使用工作线程的thread_id来确定它们自己的值和范围,ID为thread_id的工作线程将被分配到从max_cwnd×thread_id(包括)到max_cwnd×(thread_id+1)(不包括)的一段范围。
通过以上方法,可以避免分组中已经被交换机聚合过的键值对再次被交换机和接收端聚合;没有被交换机聚合过的键值对,继续转发给接收端进行二次检查。为此,本发明的方法是在交换机中为每一个发送节点记录状态,包括:分组的出现以及第一次聚合处理的结果。
第三实施例
在本实施例中,在交换机中对键空间进行划分以避免聚合器资源浪费,减少交换机容量的消耗,提高吞吐量。
图3显示了通用分组数据格式的一个实施方式,在所述通用分组数据中,头部包含控制信息,载荷字段中包含了要进行聚合的键值对。
具体地,任务号字段(task_id字段)存储进行聚合的任务号。发送节点号字段(snd_id字段)存储发送该分组的发送节点号。线程号字段(thread_id字段)存储具体的发送该分组的线程号。
分组类型字段(type字段)存储该分组的类型,分组的类型包括:SYN,FIN,DATA,ACK,QUERY,RESET六种。SYN表示开始,FIN表示结束,DATA表示数据,ACK表示确认,QUERY表示查询,RESET表示重置。
分组序列号字段(sequence字段)存储由该线程所发送的分组的序列号。载荷字段(payload字段)包含要进行聚合的键值对,键值对可以有多个。
有效性字段(bitmap字段)指示载荷字段(payload)中哪些键值对是有效的。在一个实施方式中,用位图bitmap字段具有载荷字段(payload字段)中键值对数量相同的比特,这些比特用来指示载荷字段(payload字段)中哪些键值对是有效的(例如1表示有效,即处理过)。载荷字段(payload字段)存储键值对,键值对为(key-value pairs)形式,在聚合时进行key的比较,通过通用分组数据格式中的bitmap字段来确定value是否被交换机聚合。
通常,分组只包含一个键值对,小的分组大小不能够饱和网络带宽。PISA交换机面临着在流经可编程交换机中相同的Match-Action阶段一轮的过程中需要处理多个键值对的挑战。PISA交换机的流水线被组织成为阶段,分组在一轮中只能够单向地流经每个阶段。尽管分组能够再循环流经交换机中的各阶段,但由于会消耗交换机的容量,因而并不建议这么做。
由于可编程能力的限制,在每一个阶段中,一个聚合器数组只能被访问一次,但是可以在一个阶段中建立多个数组(数组数表示为R,在Tofino中R=4),因此每个阶段能够建立R个聚合器数组。不同阶段之间的内存是隔离的(阶段数表示为W,在Tofino中W=12)。因此在可编程交换机的流水线中至多可建立W×R个聚合器数组。
在处理分组的过程中,载荷中的键值对只能够以固定的顺序进行处理,并且每个聚合器数组只能够被访问一次。因此,键值对在载荷中的位置需要与不同的数组关联起来。同一个键应该被放置在载荷中的相同位置,否则,如果在不同聚合器数组中的聚合器处理相同的键,那么这个键将会占据多个聚合器,这是对交换机内存的一个浪费。
本发明将键空间划分为互不重叠的子空间,每个子空间与载荷中的一个键值对位置相关联,因而与交换机中的一个聚合器数组相关联。每个发送节点将键值对分类到对应的子空间,并重新组织它们在分组载荷中的位置。
在一个实施方式中,发送节点依照如下方法来构建分组:其中载荷缓冲区buff和bitmap都是二维数组,第一个维度表示分组的索引,第二个维度表示键值对在载荷中的位置。键值对被依次进行处理,首先提取出它的子空间索引,然后将该键值对填充到载荷中与子空间对应的位置。最终使用填充好的载荷和bitmap来构造分组。
第四实施例
在本实施例中,在交换机中将多个阶段的聚合器串联起来支持变长的键。
在PISA的交换机中,每个聚合器实现为交换机中的一个寄存器,寄存器最大为64比特,使用其中的32比特作为键,32比特作为值。但实际的工作负载中可能会出现更长的键情况,本发明将相邻阶段的聚合器数组串联起来用以支持更长的键。
当多个聚合器数组处理一个具有较长键的键值对时,键值对被映射到所有数组中相同的索引,每个数组中的聚合器匹配它的键和键值对元组中键的对应部分。早先阶段的比较结果由分组的元信息进行携带,并不断进行累积(将当前数组的比较结果与分组的元信息进行与运算)直到最后的数组。如果所有聚合器中保存的键都与键值对元组中键的对应部分相匹配,键值对元组的值将会在最后一个数组中进行聚合,否则该键值对元组将不会被处理。进一步,键特别长的键值对元组可以被添加到分组的末尾,回退到接收者进行聚合处理。
以上所述的实施例,只是本发明较优选的具体实施方式,本说明书使用词组“在一种实施例中”、“在另一个实施例中”、“在又一实施例中”或“在其他实施例中”,其均可指代根据本公开的相同或不同实施例中的一个或多个。本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
Claims (1)
1.一种基于PISA的用于网内聚合传输的交换机,其特征在于,所述交换机具有计算机处理程序,所述计算机处理程序运行时,所述交换机完成如下操作:
收到发送节点的分组后,解析获取分组的工作线程ID和分组的序列号;
通过该分组的序列号判断该分组是否落在当前的滑动窗口内,并进行标记或处理,所述分组包括控制信息和载荷,载荷包含了键值对,所述控制信息包括有效性字段,所述有效性字段能够指示载荷字段中的键值对是否被聚合;
所述滑动窗口为[most_front_seq-max_cwnd, most_front_seq+max_cwnd],其中most_front_seq表示最新的分组序列号,max_cwnd表示滑动窗口最大大小;
如果该分组未落入滑动窗口,交换机通知发送节点发送下一个分组,最新的分组序列号被新的分组的序列号更新;在收到分组后,将用于存储分组的键值对的键空间划分为互不重叠的子空间,每个子空间与分组中的载荷中的一个键值对位置相关联;
其中,所述滑动窗口以最新的分组序列号为中心,发送节点的分组是通过滑动窗口发送的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210561537.XA CN115174500B (zh) | 2022-05-23 | 2022-05-23 | 一种基于pisa的用于网内聚合传输的发送节点和交换机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210561537.XA CN115174500B (zh) | 2022-05-23 | 2022-05-23 | 一种基于pisa的用于网内聚合传输的发送节点和交换机 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115174500A CN115174500A (zh) | 2022-10-11 |
CN115174500B true CN115174500B (zh) | 2023-09-12 |
Family
ID=83483778
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210561537.XA Active CN115174500B (zh) | 2022-05-23 | 2022-05-23 | 一种基于pisa的用于网内聚合传输的发送节点和交换机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115174500B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101316157A (zh) * | 2008-01-17 | 2008-12-03 | 上海交通大学 | 基于浮点窗口增量因子的自适应包长方法 |
CN103782534A (zh) * | 2011-09-06 | 2014-05-07 | 阿尔卡特朗讯公司 | 避免网络拥塞的方法及其装置 |
CN109155763A (zh) * | 2016-05-11 | 2019-01-04 | 微软技术许可有限责任公司 | 数据流上的数字信号处理 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10579661B2 (en) * | 2013-05-20 | 2020-03-03 | Southern Methodist University | System and method for machine learning and classifying data |
CN108270682B (zh) * | 2016-12-30 | 2022-06-24 | 华为技术有限公司 | 一种报文传输方法、终端、网络设备及通信*** |
US11194812B2 (en) * | 2018-12-27 | 2021-12-07 | Microsoft Technology Licensing, Llc | Efficient aggregation of sliding time window features |
-
2022
- 2022-05-23 CN CN202210561537.XA patent/CN115174500B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101316157A (zh) * | 2008-01-17 | 2008-12-03 | 上海交通大学 | 基于浮点窗口增量因子的自适应包长方法 |
CN103782534A (zh) * | 2011-09-06 | 2014-05-07 | 阿尔卡特朗讯公司 | 避免网络拥塞的方法及其装置 |
CN109155763A (zh) * | 2016-05-11 | 2019-01-04 | 微软技术许可有限责任公司 | 数据流上的数字信号处理 |
Non-Patent Citations (1)
Title |
---|
《ATP: In-network Aggregation for Multi-tenant Learning》;吴文斐;《the 18th USENIX Symposium on Networked Systems Design and Implementation》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115174500A (zh) | 2022-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220309025A1 (en) | Multi-path rdma transmission | |
US20220014312A1 (en) | Data transmission method and apparatus | |
US11716409B2 (en) | Packet transmission method and apparatus | |
US7487424B2 (en) | Bitmap manager, method of allocating a bitmap memory, method of generating an acknowledgement between network entities, and network entity implementing the same | |
CN104093170B (zh) | 基于tcp的数据传输方法和tcp代理装置 | |
US7562158B2 (en) | Message context based TCP transmission | |
US8953631B2 (en) | Interruption, at least in part, of frame transmission | |
US9667729B1 (en) | TCP offload send optimization | |
CN111711566B (zh) | 多路径路由场景下的接收端乱序重排方法 | |
US10505677B2 (en) | Fast detection and retransmission of dropped last packet in a flow | |
US20070291782A1 (en) | Acknowledgement filtering | |
US7684319B2 (en) | Transmission control protocol congestion window | |
EP3135016A1 (en) | Managing sequence values with added headers in computing devices | |
EP3203699A1 (en) | Method for man-in-the-middle processing for tcp without protocol stack | |
US8111700B2 (en) | Computer-readable recording medium storing packet identification program, packet identification method, and packet identification device | |
CN111131179A (zh) | 业务处理方法、装置、网络设备及存储介质 | |
CN113572582B (zh) | 数据发送、重传控制方法及***、存储介质及电子设备 | |
CN115174500B (zh) | 一种基于pisa的用于网内聚合传输的发送节点和交换机 | |
WO2015085849A1 (zh) | 一种网络设备拥塞避免的方法及网络设备 | |
CN113783664A (zh) | 消息传输方法和消息传输装置 | |
CN116405546A (zh) | 一种数据推送的方法及终端 | |
CN107743102B (zh) | 一种高效的tcp会话重组方法 | |
US20150172091A1 (en) | Method and apparatus for transmitting data packets | |
CN116684354A (zh) | 网络流拥塞管理装置及其方法 | |
CN109428777B (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 |