CN114257557B - 一种数据分组交换系统和方法 - Google Patents
一种数据分组交换系统和方法 Download PDFInfo
- Publication number
- CN114257557B CN114257557B CN202111423226.9A CN202111423226A CN114257557B CN 114257557 B CN114257557 B CN 114257557B CN 202111423226 A CN202111423226 A CN 202111423226A CN 114257557 B CN114257557 B CN 114257557B
- Authority
- CN
- China
- Prior art keywords
- module
- sub
- row
- queue
- data packet
- 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/20—Support for services
- H04L49/201—Multicast operation; Broadcast operation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2425—Traffic characterised by specific attributes, e.g. priority or QoS for supporting services specification, e.g. SLA
- H04L47/2433—Allocation of priorities to traffic types
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3072—Packet splitting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提出一种数据分组交换方法和系统,包括构建由多个子交换模块构成的交换系统,交换系统的子交换模块按照行列规则排布,且每行子交换模块均设有输入分发模块,交换系统中每一列的子交换模块两两相连;待交换的数据分组通过输入分发模块进入交换系统,根据数据分组携带的目的地址,将数据分组分发到输入分发模块所在行的子交换模块并将其作为初始交换模块,初始交换模块将数据分组存储到单独的一个队列中等待端口仲裁授权;数据分组被授权后,根据目的地址将数据分组分发给交换系统中某一行的子交换模块并将其作为目的子交换模块,目的子交换模块将数据分组存储到另一个单独的队列,等待输出端口仲裁之后输出数据分组。
Description
技术领域
本发明属于计算机网络领域,并特别涉及一种数据分组交换系统和方法。
背景技术
目前数据交换网络中具有交换数据量大,承载业务种类复杂的特点,其中多播功能在诸如分布式计算,机器学习等多种业务中被广泛使用。现有的多播方案主要从网络传输协议和机制层面对多播功能进行优化。
在专利“处理多播报文的方法和交换接入装置”(CN 102594650 A)公开了一种在传输机制方面针对多播报文的处理方法及其处理装置。该发明首先根据多播报文的多播地址在多播路由表中查找对应的多播目的地址;根据多播目的地址在单播路由表单播目的地址;再根据单播目的地址查找对应的可用链路;最后在可用链路中选择发送链路,将多播报文复制多份,按照单播报文的发送方式进行发送。该专利降低了多播报文处理难度,可以与单播报文共用单播路由表;但该专利在多播报文复制时增加了对网络芯片中存储器的资源开销,同时增加了与单播报文仲裁时的冲突几率。
在专利“交换网络芯片的信元处理方法及装置”(CN 102281192 A)中公开了一种交换网络芯片对多播数据分组(网络中的数据包)处理的方法和装置,数据分组一般由服务器的网卡端产生,数据分组一般由分组头部和分组载荷组成,分组头部包含原地址,目的地址,传输协议等关键信息,分组载荷主要包含需要传输具体数据内容。该专利中交换网络芯片接收数据分组,并提取数据分组的目的端口表示和输入链路号;交换网络芯片查找多播路由表确定第一比特位图;根据第一比特位图进行负载均衡处理得到第二比特位图,根据第二比特位图将多播分组复制转发到输出端口。该发明可以根据端口负载情况对多播分组的输出端口进行调整,交换网络芯片能够适应不同的工作模式。但是其对于多播分组在复制转发过程中可能由于输出端口无法全部同时使用而造成多播分组阻塞后续分组的问题。
在专利“改善多播业务HOL阻塞的队列管理方法”(CN 111131089 A)中公开了一种改善多播分组造成的队头阻塞问题的队列管理办法。该专利中实现了二级多播发送队列,优先读取第二级多播发送队列调度信息,若第二级调度信息中目的端口全部空闲,则复制转发该多播分组,否则读取第一级调度信息,若第一级调度信息中的目的端口为部分空闲,则转发该多播分组到空闲端口,并记录未转发的目的端口到第二级调度信息中,等待下次调度。该发明可以缓解由于多播分组无法转发到所有目的端口导致的队头阻塞问题,但是其需要2次仲裁,增加了交换时延和逻辑复杂性,同时需要额外的缓存资源来存储第二级调度信息和未及时转发的多播分组,增加了资源开销。
发现现有技术中对多播分组的处理主要是两条技术路线:从传输机制上对多播分组的路由策略进行优化,以及在调度机制上对多播分组的复制转发过程进行优化。现有交换芯片架构通常在缓存多播分组和单播分组时会统一存储到队列中,而从传输机制上的优化会导致多播分组复制传输时对单播分组阻塞;同时,现有交换芯片架构通常采用集中式的仲裁和分发方式,所有输入端口的队列头部分组都会竞争输出端口仲裁,而调度机制的优化则会导致调度和仲裁的逻辑更加复杂,同时会占用更多的缓存资源。
发明内容
本发明的目的是克服上述现有多播分组处理过程中对多播分组的阻塞影响,同时通过分散式两级仲裁的方式降低仲裁逻辑的复杂度,提出了一种多播分组交换方法及系统。
针对现有技术的不足,本发明提出一种数据分组交换方法,其中包括:
步骤1、构建由多个子交换模块构成的交换系统,该交换系统的子交换模块按照行列规则排布,且每行子交换模块均设有输入分发模块,该交换系统中每一列的子交换模块两两相连;
步骤2、待交换的数据分组通过输入分发模块进入该交换系统,根据该数据分组携带的目的地址,将该数据分组分发到输入分发模块所在行的某一子交换模块并将其作为初始交换模块,该初始交换模块将该数据分组存储到单独的一个队列中等待端口仲裁授权;
步骤3、该数据分组被授权后,根据该目的地址将该数据分组分发给该交换系统中某一行的子交换模块并将其作为目的子交换模块,该目的子交换模块将该数据分组存储到另一个单独的队列,等待输出端口仲裁之后输出该数据分组。
所述的数据分组交换方法,其中该子交换模块包括:输入缓存队列In_Q、输入队列仲裁模块In_Arb、子交换系统Sub_Xbr、子端口仲裁模块P_Arb、输出队列缓存Out_Q、输出队列仲裁模块Out_Arb、行多播分组控制模块Row_Ctrl和列多播分组控制模块Col_Ctrl;
每个该子交换模块对应一个输入端口,数据分组从输入端口进入该子交换模块后,该行多播分组控制模块根据该数据分组的分组类型,将该数据分组缓存到对应输入缓存队列,每个子交换模块共有多个输入缓存队列,每个输入缓存队列按照先入先出的方式存放数据分组;每个输入缓存队列的头部分组竞争输入队列仲裁模块的授权,其中多播分组的竞争优先级高于单播分组,输入队列仲裁模块、子端口仲裁模块和列多播分组控制模块会根据每个参与竞争的头部分组的目的端口是否空闲来授权,综合所有仲裁结果授权给对应的输入缓存队列的头部分组,授权后的数据分组根据其数据分组类型存入该输出队列缓存,每个输出队列缓存按照先入先出的方式存放数据分组;每个输出队列缓存的头部分组竞争输出队列仲裁模块的授权,输出队列缓存的头部分组被授权后输出,到达输出端口,完成传输。
所述的数据分组交换方法,其中该行多播分组控制模块和列多播分组控制模块,用于对多播分组的分发和授权控制,当多播分组进入子交换模块后,行多播分组控制模块根据多播分组携带的地址位图,将多播分组同时分发到对应的同行的子交换模块中,同时行多播分组控制模块会从地址位图截取相应部分组成新的位图信息,位图信息会随着该多播分组进入子交换模块;该多播分组进入子交换模块后,需要子端口仲裁模块、输出队列仲裁模块和列多播分组控制模块的授权才能进入子交换系统向目的子交换模块传输,其中列多播分组控制模块根据该位图信息来判断目的子交换模块对应的端口是否空闲,从而决定该多播分组的授权结果。
所述的数据分组交换方法,其中仲裁具体流程包括:
步骤S1,该输入队列仲裁模块按照优先级从高到低的顺序,依次检查所有输入缓存队列是否存在队列头部数据分组,若有,则执行步骤S2;否则继续下一轮检查;
步骤S2,该输入队列仲裁模块提取头部分组的row_route_map交给子端口仲裁模块,执行步骤S3;
步骤S3,子端口仲裁模块比对row_route_map与子交换系统中各个输出端口状态,如果row_route_map中每一位有效的行号且与之对应的子交换系统的输出端口处于空闲状态,则仲裁成功,执行步骤S4;否则仲裁失败,执行步骤S1;
步骤S4,子端口仲裁模块将row_route_map交给列多播分组控制模块仲裁,执行步骤S5;
步骤S5,列多播分组控制模块比对row_route_map与对应行的目的子交换模块的对应输出队列缓存状态,如果row_route_map中每一位有效行号且与之对应的输出队列缓存状态空闲,则仲裁成功,执行步骤S6;否则执行步骤S1;
步骤S6,队列头部分组得到仲裁授权后,从输入缓存队列中输出到子交换系统,执行步骤S7;
步骤S7,子交换系统按照数据分组的row_route_map中对应的有效行号直接分发到对应输出端口,执行步骤S8;
步骤S8,数据分组通过子交换系统转发到达目的子交换模块,并存入对应输出队列缓存,执行步骤S9;
步骤S9,输出队列仲裁模块按照优先级从高到低的顺序,依次检查每个输出队列缓存是否存在队列头部数据分组,直到检测到第一个头部数据分组,则执行步骤S10;否则继续下一轮检查;
步骤S10,队列头部数据分组得到输出队列仲裁模块仲裁授权,将队列头部数据分组传输到输出总线,完成传输。
5.如权利要求4所述的数据分组交换方法,其中该地址位图长度为N×M,M和N分别为该交换系统的行数和列数,目的端口记为0到N×M-1,端口状态使用1bit数据表示,1表示有效,0表示无效;数据分组进入位于第i行第j列的子交换模块之后,行多播分组控制模块分别提取该地址位图中各字段的端口状态,并对每段数据做按位或运算,得到该col_route_map;其中0≤i≤M-1、0≤j≤N-1,i和j均为整数。
本发明还提出了一种数据分组交换系统,其中包括:
模块1,用于构建由多个子交换模块构成的交换系统,该交换系统的子交换模块按照行列规则排布,且每行子交换模块均设有输入分发模块,该交换系统中每一列的子交换模块两两相连;
模块2,用于将待交换的数据分组通过输入分发模块进入该交换系统,根据该数据分组携带的目的地址,将该数据分组分发到输入分发模块所在行的某一子交换模块并将其作为初始交换模块,该初始交换模块将该数据分组存储到单独的一个队列中等待端口仲裁授权;
模块3,用于在该数据分组被授权后,根据该目的地址将该数据分组分发给该交换系统中某一行的子交换模块并将其作为目的子交换模块,该目的子交换模块将该数据分组存储到另一个单独的队列,等待输出端口仲裁之后输出该数据分组。
所述的数据分组交换系统,其中该子交换模块包括:输入缓存队列In_Q、输入队列仲裁模块In_Arb、子交换系统Sub_Xbr、子端口仲裁模块P_Arb、输出队列缓存Out_Q、输出队列仲裁模块Out_Arb、行多播分组控制模块Row_Ctrl和列多播分组控制模块Col_Ctrl;
每个该子交换模块对应一个输入端口,数据分组从输入端口进入该子交换模块后,该行多播分组控制模块根据该数据分组的分组类型,将该数据分组缓存到对应输入缓存队列,每个子交换模块共有多个输入缓存队列,每个输入缓存队列按照先入先出的方式存放数据分组;每个输入缓存队列的头部分组竞争输入队列仲裁模块的授权,其中多播分组的竞争优先级高于单播分组,输入队列仲裁模块、子端口仲裁模块和列多播分组控制模块会根据每个参与竞争的头部分组的目的端口是否空闲来授权,综合所有仲裁结果授权给对应的输入缓存队列的头部分组,授权后的数据分组根据其数据分组类型存入该输出队列缓存,每个输出队列缓存按照先入先出的方式存放数据分组;每个输出队列缓存的头部分组竞争输出队列仲裁模块的授权,输出队列缓存的头部分组被授权后输出,到达输出端口,完成传输。
所述的数据分组交换系统,其中该行多播分组控制模块和列多播分组控制模块,用于对多播分组的分发和授权控制,当多播分组进入子交换模块后,行多播分组控制模块根据多播分组携带的地址位图,将多播分组同时分发到对应的同行的子交换模块中,同时行多播分组控制模块会从地址位图截取相应部分组成新的位图信息,位图信息会随着该多播分组进入子交换模块;该多播分组进入子交换模块后,需要子端口仲裁模块、输出队列仲裁模块和列多播分组控制模块的授权才能进入子交换系统向目的子交换模块传输,其中列多播分组控制模块根据该位图信息来判断目的子交换模块对应的端口是否空闲,从而决定该多播分组的授权结果。
所述的数据分组交换系统,其中仲裁具体包括:
模块S1,用于按照优先级从高到低的顺序,依次检查所有输入缓存队列是否存在队列头部数据分组,若有,则调用模块S2;否则继续下一轮检查;
模块S2,用于提取头部分组的row_route_map交给子端口仲裁模块,调用模块S3;
模块S3,用于比对row_route_map与子交换系统中各个输出端口状态,如果row_route_map中每一位有效的行号且与之对应的子交换系统的输出端口处于空闲状态,则仲裁成功,调用模块S4;否则仲裁失败,调用模块S1;
模块S4,用于将row_route_map交给列多播分组控制模块仲裁,调用模块S5;
模块S5,用于比对row_route_map与对应行的目的子交换模块的对应输出队列缓存状态,如果row_route_map中每一位有效行号且与之对应的输出队列缓存状态空闲,则仲裁成功,调用模块S6;否则调用模块S1;
模块S6,用于在队列头部分组得到仲裁授权后,从输入缓存队列中输出到子交换系统,调用模块S7;
模块S7,用于使子交换系统按照数据分组的row_route_map中对应的有效行号直接分发到对应输出端口,调用模块S8;
模块S8,用于使数据分组通过子交换系统转发到达目的子交换模块,并存入对应输出队列缓存,调用模块S9;
模块S9,用于按照优先级从高到低的顺序,依次检查每个输出队列缓存是否存在队列头部数据分组,直到检测到第一个头部数据分组,则调用模块S10;否则继续下一轮检查;
模块S10,用于使队列头部数据分组得到输出队列仲裁模块仲裁授权,将队列头部数据分组传输到输出总线,完成传输。
所述的数据分组交换系统,其中该地址位图长度为N×M,M和N分别为该交换系统的行数和列数,目的端口记为0到N×M-1,端口状态使用1bit数据表示,1表示有效,0表示无效;数据分组进入位于第i行第j列的子交换模块之后,行多播分组控制模块分别提取该地址位图中各字段的端口状态,并对每段数据做按位或运算,得到该col_route_map;其中0≤i≤M-1、0≤j≤N-1,i和j均为整数。
由以上方案可知,本发明的优点在于:
本发明从属于硬件底层的交换芯片架构出发,设计了由分散式的子交换模块组成交换架构。本发明相比现有基于集中式仲裁分发交换架构的多播分组传输优化技术,将复杂的集中式仲裁逻辑拆分成两级分散式仲裁,降低了仲裁复杂度;本发明中多播分组与单播分组分别缓存至不同的输入缓存队列和输出缓存队列,避免了由于多播分组阻塞而影响后续单播分组传输的问题,同时提升了多播分组的仲裁优先级,提升交换架构的传输效率;本发明将分发过程拆分为2个阶段,提高了分发效率,同时采用相同的route_map格式,节约了存储资源。
附图说明
图1是本发明的系统示意图;
图2是本发明的子交换模块示意图;
图3是本发明route_map、col_route_map和row_route_map示意图;
图4是本发明仲裁流程图。
具体实施方式
发明人通过研究交换芯片架构,充分了解数据分组在硬件级别的交换芯片中的处理流程之后发现,以上技术问题可以通过在硬件层面上对交换芯片架构进行优化设计而解决。在本发明中,交换芯片架构由若干子交换模块组成,子交换模块按照行列整齐排布,多播分组从某一个子交换模块进入,经过两级子交换模块之后到达输出端口。本发明的技术难点主要在于将交换系统分成多个子交换模块,多播分组复杂的仲裁和调度过程分散到两级子交换模块中,从而降低了调度和仲裁的逻辑复杂度;同时本发明采用了多播分组和单播分组多队列存储的设计,降低了多播分组对单播分组的影响,避免多播分组造成队头阻塞。为了实现上述技术效果,本申请提出了以下关键点:
关键点1,交换系统分为多个子交换模块组成,子交换模块按照行列规则排布,全交换系统共有P个端口,分为N×M个子交换模块,其中P=N×M,M为行数,N为列数,M和N都为大于等于1的正整数。每个子交换模块对应交换系统的一个输入和输出端口,子交换模块之间通过连线连接。数据分组首先从输入端口进入交换系统,输入端口所在行的输入分发模块会根据数据分组携带的目的地址将数据分组分发到该行的行目的子交换模块。行目的子交换模块收到数据分组之后,将数据分组存储到单独的一个存储队列中等待端口仲裁模块的授权,数据分组被授权之后,分发给某一行的列目的子交换模块;列目的子交换模块收到数据分组之后将数据分组存储到一个单独的队列,等待输出端口仲裁之后输出到输出端口。
本发明的由子交换模块组成的交换系统可以将复杂的集中式仲裁逻辑拆分成两级分散式仲裁,减少了竞争每一级仲裁的队列数,降低了每一级仲裁复杂度,从而提升了整体架构仲裁效率。
关键点2,子交换模块包括:输入缓存队列In_Q、输入队列仲裁模块In_Arb、子交换系统Sub_Xbr、子端口仲裁模块P_Arb、输出队列缓存Out_Q、输出队列仲裁模块Out_Arb、行多播分组控制模块Row_Ctrl和列多播分组控制模块Col_Ctrl等模块组成。根据关键点1中所述,每个子交换模块对应一个输入端口,数据分组从输入端口进入子交换模块后,Row_Ctrl根据数据分组的多播或单播分组类型缓存入对应In_Q,每个子交换模块共有a×N个In_Q,a为大于1的正整数,每个In_Q按照“先入先出”的方式存放数据分组,其中多播分组和单播分组会被分别存入不同的In_Q;每个In_Q的头部分组竞争In_Arb的授权,其中多播分组的竞争优先级高于单播分组,In_Arb,P_Arb和Col_Ctrl会根据每个参与竞争的头部分组的目的端口是否空闲来授权,综合上述3个模块的仲裁结果授权给对应的In_Q的头部分组,授权后的数据分组进入Sub_Xbr后,被传输到对应的目的子交换模块,进入目的子模块后,根据数据分组类型存入Out_Q,每个子交换模块共有b×M个Out_Q,b为大于1的正整数;其中多播分组和单播分组会被分别存入不同的Out_Q,每个Out_Q按照“先入先出”的方式存放数据分组;每个Out_Q的头部分组竞争Out_Arb的授权,其中多播分组的竞争优先级高于单播分组,头部分组被Out_Arb授权后输出,到达输出端口,完成传输。
本发明的子交换模块将多播分组与单播分组分别缓存至不同的输入缓存队列和输出缓存队列,使得多播分组在竞争仲裁时,即使未能竞争成功,也不会影响到其他单播分组的竞争,从而避免了由于多播分组阻塞而影响后续单播分组传输的问题;同时考虑到与单播分组仲裁时仅需要一个目的端口空闲即可授权的方式不同,多播分组通常需要若干目的端口空闲才能完成授权,本发明中多播分组在竞争仲裁时具有比单播分组更高的优先级,从而保证多播分组可以尽可能快速的完成传输,从而避免占用更多的目的端口资源,提升交换架构的效率。
关键点3,根据关键点1和关键点2中所述的子交换模块和数据分组传输过程,其中行多播分组控制模块Row_Ctrl和列多播分组控制模块Col_Ctrl主要负责对多播分组的分发和授权控制。当多播分组进入子交换模块后,Row_Ctrl模块会根据多播分组携带的地址位图信息route_map,将多播分组同时分发到对应的同行的子交换模块中,同时Row_Ctrl会从route_map截取相应部分组成新的位图信息col_map,col_map会随着多播分组进入子交换模块;多播分组进入子交换模块后,需要In_Arb,P_Arb和Col_Ctrl这3个模块的授权才能进入Sub_Xbr进行向目的子交换模块的传输,其中Col_Ctrl根据col_map来判断目的子交换模块对应的端口是否是空闲的,从而决定多播分组的授权结果。
本发明中为了节约宝贵的存储资源,多播分组和单播分组采用相同的route_map格式,同时Row_Ctrl和Col_Ctrl也会对单播分组进行处理,即本发明将单播分组看作目的端口只有1个的多播分组。本发明设计的Row_Ctrl和Col_Ctrl将多播分组的多次分发拆分为2个阶段,相比现有交换架构的集中式仲裁和分发机制,降低了仲裁的复杂度,提高了分发效率;同时本发明中多播分组和单播分组采用相同的route_map格式,相比现有交换架构中分别维护多播分组路由表和单播分组路由表的方式,降低了读取路由信息的复杂度,同时也节约了宝贵的存储资源。
为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。
图1是表示本发明的一个实施方式的交换系统结构图。该交换系统包括M×N个子交换模块,其中M为行数且为大于1的正整数,N为列数且为大于1的正整数。每行设置1个输入分发模块11,输入分发模块与本行N个子交换模块12对应的N个输入端口10连接,接收从输入端口输入的数据分组;输入分发模块输出N条数据总线,本行的每个子交换模块与对应的数据总线相连;数据分组从输入端口输入,经过输入分发模块分发给对应的子交换模块12,数据分组在子交换模块中进行路由和传输,最后达到目的子交换模块;每行有N个输出端口13,输出端口通过数据总线与本行的每个子交换模块输出相连;数据分组从目的子交换模块输出之后,通过数据总线到达输出端口,完成本次数据传输。
举例来说,如图1所示,如果输入端口进来一个从0号端口输入(对应图中第一行第1列的子交换模块),从N+1端口输出(对应图中第二行第2列子交换模块),那么流程如下:从输入端口10进入(即图中输入端口10),然后输入分发模块根据输出端口号,将数据分组分发到了0行1列的行目的子交换模块(即图中第一行第2列的子交换模块),然后在行目的子交换模块中交换转发到第一行第1列的列目的子交换模块(即图中第二行第2列子交换模块),然后通过列目的子交换模块输出到输出端口,完成传输。
具体到子交换模块,图2表示本发明的中的子交换模块的实施方式的系统结构图。子交换模块有N个输入端口和M个输出端口,每个输入端口通过行多播分组控制模块Row_Ctrl 201与该子交换模块所在行的输入端口总线连接,接收来自输入分发模块的数据分组,然后将数据分组存放到对应的In_Q中;每个输出端口接收列多播分组控制模块Col_Ctrl 204控制的来自与该子交换模块同列的其他子交换模块的数据分组,之后将接收到的数据分组存入对应的Out_Q;数据分组在进入In_Q之后,按照“先入先出”的规则存放,每个输入端口的a个In_Q的队头数据分组同时参与In_Arb 203的仲裁;当某个In_Q的队头数据分组被仲裁授权之后,数据分组会进入Sub_Xbar 207,通过Sub_Xbar的转发,数据分组会被分发到目的子交换模块的输出端口,并存入相应的Out_Q中;每个输出端口的b个Out_Q的队头数据分组同时参与Out_Arb206的仲裁;当某个Out_Q的队头数据分组被仲裁授权之后,数据分组输出,完成本次数据交换。
进一步地,上述子交换模块的行多播分组控制模块Row_Ctrl 201和列多播分组控制模块Col_Ctrl 204需要根据数据分组的目的地址信息进行数据的分发和仲裁。为节约存储资源,提升仲裁效率,本发明中单播分组和多播分组使用如图3所示的统一格式route_map来表示地址信息。该具体实施方式中,数据分组的route_map长度为N×M,目的端口记为0到N×M-1,端口状态使用1bit数据表示,1表示有效,即该端口是数据分组的目的端口,0表示无效,即该端口不是数据分组的目的端口。数据分组进入位于第i行第j列(0≤i≤M-1,0≤j≤N-1,i和j均为整数)的子交换模块之后,Row_Ctrl分别提取route_map[0,N,2N,…,N×(M-1)],[1,N+1,2N+1,…,N×(M-1)+1],…,[N-1,2N-1,3N-1,…,N×M-1]字段的端口状态,并对每段数据做按位“或”运算,得到col_route_map,col_route_map长度为N,每一位用1bit来表示,1表示有效,即该列包含目的子交换模块,0表示无效,即该列不包含目的子交换模块。如图3中所示,Row_Ctrl根据col_route_map中每一位对应的状态将数据分组分发给列状态有效的对应的本行的子交换模块,Row_Ctrl会在分发的同时将提取的目的子交换模块所在列对应的route_map相应字段组成行路由比特位图row_route_map随数据分组一起分发到对应子交换模块,在该具体实施方式中,如果col_route_map中第c位(0≤c≤N-1,c为整数)有效,则Row_Ctrl将route_map[c,c+N,c+2N,…,c+N×(M-1)]字段提取出来作为row_route_map。row_route_map格式如图3中所示,row_route_map长度为M,其中每一位使用1bit来表示,1表示该行有效,即该行包含目的子交换模块,0表示无效,即该行不包含目的子模块。
数据分组在In_Q中排队申请In_Arb,P_Arb和Col_Ctrl仲裁,其中Col_Ctrl会根据row_route_map中各个行状态为有效的行的目的子交换模块状态来判断,如果row_route_map中所有有效行的目的子交换模块的对应Out_Q都处于空闲状态,则仲裁成功,否则仲裁失败。
进一步地,上述数据分组在In_Q中仲裁过程主要包含队列仲裁In_Arb,Sub_Xbr中端口仲裁P_Arb和Col_Ctrl仲裁,其中仲裁具体流程如图4中所示。
步骤S1,In_Arb按照优先级从高到低的顺序,依次检查a个In_Q是否存在队列头部数据分组,直到检测到第一个头部数据分组,则执行步骤S2;否则继续下一轮检查;
步骤S2,In_Arb提取头部分组的row_route_map交给P_Arb,执行步骤S3;
步骤S3,P_Arb比对row_route_map与Sub_Xbar各个输出端口状态,如果row_route_map中每一位有效的行号且与之对应的Sub_Xbar的输出端口处于空闲状态,则P_Arb仲裁成功,执行步骤S4;否则P_Arb仲裁失败,执行步骤S1;
步骤S4,P_Arb将row_route_map交给Col_Ctrl仲裁,执行步骤S5;
步骤S5,Col_Ctrl比对row_route_map与对应行的目的子交换模块的对应Out_Q状态,如果row_route_map中每一位有效行号且与之对应的Out_Q状态空闲,则Col_Ctrl仲裁成功,执行步骤S6;否则执行步骤S1;
步骤S6,队列头部分组得到仲裁授权之后,从In_Q中输出到Sub_Xbar,执行步骤S7;
步骤S7,Sub_Xbar按照数据分组的row_route_map中对应的有效行号直接分发到对应输出端口,执行步骤S8;
步骤S8,数据分组通过Sub_Xbar转发到达目的子交换模块,并存入对应Out_Q,执行步骤S9;
步骤S9,Out_Arb按照优先级从高到低的顺序,依次检查b个Out_Q是否存在队列头部数据分组,直到检测到第一个头部数据分组,则执行步骤S10;否则继续下一轮检查;
步骤S10,队列头部数据分组得到Out_Arb仲裁,传输到输出总线,完成传输。
以下为与上述方法实施例对应的系统实施例,本实施方式可与上述实施方式互相配合实施。上述实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在上述实施方式中。
本发明还提出了一种数据分组交换系统,其中包括:
模块1,用于构建由多个子交换模块构成的交换系统,该交换系统的子交换模块按照行列规则排布,且每行子交换模块均设有输入分发模块,该交换系统中每一列的子交换模块两两相连;
模块2,用于将待交换的数据分组通过输入分发模块进入该交换系统,根据该数据分组携带的目的地址,将该数据分组分发到输入分发模块所在行的子交换模块并将其作为初始交换模块,该初始交换模块将该数据分组存储到单独的一个队列中等待端口仲裁授权;
模块3,用于在该数据分组被授权后,根据该目的地址将该数据分组分发给该交换系统中某一行的子交换模块并将其作为目的子交换模块,该目的子交换模块将该数据分组存储到另一个单独的队列,等待输出端口仲裁之后输出该数据分组。
所述的数据分组交换系统,其中该子交换模块包括:输入缓存队列In_Q、输入队列仲裁模块In_Arb、子交换系统Sub_Xbr、子端口仲裁模块P_Arb、输出队列缓存Out_Q、输出队列仲裁模块Out_Arb、行多播分组控制模块Row_Ctrl和列多播分组控制模块Col_Ctrl;
每个该子交换模块对应一个输入端口,数据分组从输入端口进入该子交换模块后,该行多播分组控制模块根据该数据分组的分组类型,将该数据分组缓存到对应输入缓存队列,每个子交换模块共有多个输入缓存队列,每个输入缓存队列按照先入先出的方式存放数据分组;每个输入缓存队列的头部分组竞争输入队列仲裁模块的授权,其中多播分组的竞争优先级高于单播分组,输入队列仲裁模块、子端口仲裁模块和列多播分组控制模块会根据每个参与竞争的头部分组的目的端口是否空闲来授权,综合所有仲裁结果授权给对应的输入缓存队列的头部分组,授权后的数据分组根据其数据分组类型存入该输出队列缓存,每个输出队列缓存按照先入先出的方式存放数据分组;每个输出队列缓存的头部分组竞争输出队列仲裁模块的授权,输出队列缓存的头部分组被授权后输出,到达输出端口,完成传输。
所述的数据分组交换系统,其中该行多播分组控制模块和列多播分组控制模块,用于对多播分组的分发和授权控制,当多播分组进入子交换模块后,行多播分组控制模块根据多播分组携带的地址位图,将多播分组同时分发到对应的同行的子交换模块中,同时行多播分组控制模块会从地址位图截取相应部分组成新的位图信息,位图信息会随着该多播分组进入子交换模块;该多播分组进入子交换模块后,需要子端口仲裁模块、输出队列仲裁模块和列多播分组控制模块的授权才能进入子交换系统向目的子交换模块传输,其中列多播分组控制模块根据该位图信息来判断目的子交换模块对应的端口是否空闲,从而决定该多播分组的授权结果。
所述的数据分组交换系统,其中仲裁具体包括:
模块S1,用于按照优先级从高到低的顺序,依次检查所有输入缓存队列是否存在队列头部数据分组,若有,则调用模块S2;否则继续下一轮检查;
模块S2,用于提取头部分组的row_route_map交给子端口仲裁模块,调用模块S3;
模块S3,用于比对row_route_map与子交换系统中各个输出端口状态,如果row_route_map中每一位有效的行号且与之对应的子交换系统的输出端口处于空闲状态,则仲裁成功,调用模块S4;否则仲裁失败,调用模块S1;
模块S4,用于将row_route_map交给列多播分组控制模块仲裁,调用模块S5;
模块S5,用于比对row_route_map与对应行的目的子交换模块的对应输出队列缓存状态,如果row_route_map中每一位有效行号且与之对应的输出队列缓存状态空闲,则仲裁成功,调用模块S6;否则调用模块S1;
模块S6,用于在队列头部分组得到仲裁授权后,从输入缓存队列中输出到子交换系统,调用模块S7;
模块S7,用于使子交换系统按照数据分组的row_route_map中对应的有效行号直接分发到对应输出端口,调用模块S8;
模块S8,用于使数据分组通过子交换系统转发到达目的子交换模块,并存入对应输出队列缓存,调用模块S9;
模块S9,用于按照优先级从高到低的顺序,依次检查每个输出队列缓存是否存在队列头部数据分组,直到检测到第一个头部数据分组,则调用模块S10;否则继续下一轮检查;
模块S10,用于使队列头部数据分组得到输出队列仲裁模块仲裁授权,将队列头部数据分组传输到输出总线,完成传输。
所述的数据分组交换系统,其中该地址位图长度为N×M,M和N分别为该交换系统的行数和列数,目的端口记为0到N×M-1,端口状态使用1bit数据表示,1表示有效,0表示无效;数据分组进入位于第i行第j列的子交换模块之后,行多播分组控制模块分别提取该地址位图中各字段的端口状态,并对每段数据做按位或运算,得到该col_route_map;其中0≤i≤M-1、0≤j≤N-1,i和j均为整数。
Claims (6)
1.一种数据分组交换方法,其特征在于,包括:
步骤1、构建由多个子交换模块构成的交换系统,该交换系统的子交换模块按照行列规则排布,且每行子交换模块均设有输入分发模块,该交换系统中每一列的子交换模块两两相连;
步骤2、待交换的数据分组通过输入分发模块进入该交换系统,根据该数据分组携带的目的地址,将该数据分组分发到输入分发模块所在行的子交换模块并将其作为初始交换模块,该初始交换模块将该数据分组存储到单独的一个队列中等待端口仲裁授权;
步骤3、该数据分组被授权后,根据该目的地址将该数据分组分发给该交换系统中某一行的子交换模块并将其作为目的子交换模块,该目的子交换模块将该数据分组存储到另一个单独的队列,等待输出端口仲裁之后输出该数据分组;
该子交换模块包括:输入缓存队列In_Q、输入队列仲裁模块In_Arb、子交换系统Sub_Xbr、子端口仲裁模块P_Arb、输出队列缓存Out_Q、输出队列仲裁模块Out_Arb、行多播分组控制模块Row_Ctrl和列多播分组控制模块Col_Ctrl;
每个该子交换模块对应一个输入端口,数据分组从输入端口进入该子交换模块后,该行多播分组控制模块根据该数据分组的分组类型,将该数据分组缓存到对应输入缓存队列,每个子交换模块共有多个输入缓存队列,每个输入缓存队列按照先入先出的方式存放数据分组;每个输入缓存队列的头部分组竞争输入队列仲裁模块的授权,其中多播分组的竞争优先级高于单播分组,输入队列仲裁模块、子端口仲裁模块和列多播分组控制模块会根据每个参与竞争的头部分组的目的端口是否空闲来授权,综合所有仲裁结果授权给对应的输入缓存队列的头部分组,授权后的数据分组根据其数据分组类型存入该输出队列缓存,每个输出队列缓存按照先入先出的方式存放数据分组;每个输出队列缓存的头部分组竞争输出队列仲裁模块的授权,输出队列缓存的头部分组被授权后输出,到达输出端口,完成传输;
该行多播分组控制模块和列多播分组控制模块,用于对多播分组的分发和授权控制,当多播分组进入子交换模块后,行多播分组控制模块根据多播分组携带的地址位图,将多播分组同时分发到对应的同行的子交换模块中,同时行多播分组控制模块会从地址位图截取相应部分组成新的位图信息,位图信息会随着该多播分组进入子交换模块;该多播分组进入子交换模块后,需要子端口仲裁模块、输出队列仲裁模块和列多播分组控制模块的授权才能进入子交换系统向目的子交换模块传输,其中列多播分组控制模块根据该位图信息来判断目的子交换模块对应的端口是否空闲,从而决定该多播分组的授权结果。
2.如权利要求1所述的数据分组交换方法,其特征在于,仲裁具体流程包括:
步骤S1,该输入队列仲裁模块按照优先级从高到低的顺序,依次检查所有输入缓存队列是否存在队列头部数据分组,若有,则执行步骤S2;否则继续下一轮检查;
步骤S2,该输入队列仲裁模块提取头部分组的row_route_map交给子端口仲裁模块,执行步骤S3;
步骤S3,子端口仲裁模块比对row_route_map与子交换系统中各个输出端口状态,如果row_route_map中每一位有效的行号且与之对应的子交换系统的输出端口处于空闲状态,则仲裁成功,执行步骤S4;否则仲裁失败,执行步骤S1;
步骤S4,子端口仲裁模块将row_route_map交给列多播分组控制模块仲裁,执行步骤S5;
步骤S5,列多播分组控制模块比对row_route_map与对应行的目的子交换模块的对应输出队列缓存状态,如果row_route_map中每一位有效行号且与之对应的输出队列缓存状态空闲,则仲裁成功,执行步骤S6;否则执行步骤S1;
步骤S6,队列头部分组得到仲裁授权后,从输入缓存队列中输出到子交换系统,执行步骤S7;
步骤S7,子交换系统按照数据分组的row_route_map中对应的有效行号直接分发到对应输出端口,执行步骤S8;
步骤S8,数据分组通过子交换系统转发到达目的子交换模块,并存入对应输出队列缓存,执行步骤S9;
步骤S9,输出队列仲裁模块按照优先级从高到低的顺序,依次检查每个输出队列缓存是否存在队列头部数据分组,直到检测到第一个头部数据分组,则执行步骤S10;否则继续下一轮检查;
步骤S10,队列头部数据分组得到输出队列仲裁模块仲裁授权,将队列头部数据分组传输到输出总线,完成传输。
3.如权利要求2所述的数据分组交换方法,其特征在于,该地址位图长度为N×M,M和N分别为该交换系统的行数和列数,目的端口记为0到N×M-1,端口状态使用1bit数据表示,1表示有效,0表示无效;数据分组进入位于第i行第j列的子交换模块之后,行多播分组控制模块分别提取该地址位图中各字段的端口状态,并对每段数据做按位或运算,得到col_route_map;其中0≤i≤M-1、0≤j≤N-1,i和j均为整数。
4.一种数据分组交换系统,其特征在于,包括:
模块1,用于构建由多个子交换模块构成的交换系统,该交换系统的子交换模块按照行列规则排布,且每行子交换模块均设有输入分发模块,该交换系统中每一列的子交换模块两两相连;
模块2,用于将待交换的数据分组通过输入分发模块进入该交换系统,根据该数据分组携带的目的地址,将该数据分组分发到输入分发模块所在行的子交换模块并将其作为初始交换模块,该初始交换模块将该数据分组存储到单独的一个队列中等待端口仲裁授权;
模块3,用于在该数据分组被授权后,根据该目的地址将该数据分组分发给该交换系统中某一行的子交换模块并将其作为目的子交换模块,该目的子交换模块将该数据分组存储到另一个单独的队列,等待输出端口仲裁之后输出该数据分组
其中,该子交换模块包括:输入缓存队列In_Q、输入队列仲裁模块In_Arb、子交换系统Sub_Xbr、子端口仲裁模块P_Arb、输出队列缓存Out_Q、输出队列仲裁模块Out_Arb、行多播分组控制模块Row_Ctrl和列多播分组控制模块Col_Ctrl;
每个该子交换模块对应一个输入端口,数据分组从输入端口进入该子交换模块后,该行多播分组控制模块根据该数据分组的分组类型,将该数据分组缓存到对应输入缓存队列,每个子交换模块共有多个输入缓存队列,每个输入缓存队列按照先入先出的方式存放数据分组;每个输入缓存队列的头部分组竞争输入队列仲裁模块的授权,其中多播分组的竞争优先级高于单播分组,输入队列仲裁模块、子端口仲裁模块和列多播分组控制模块会根据每个参与竞争的头部分组的目的端口是否空闲来授权,综合所有仲裁结果授权给对应的输入缓存队列的头部分组,授权后的数据分组根据其数据分组类型存入该输出队列缓存,每个输出队列缓存按照先入先出的方式存放数据分组;每个输出队列缓存的头部分组竞争输出队列仲裁模块的授权,输出队列缓存的头部分组被授权后输出,到达输出端口,完成传输;
该行多播分组控制模块和列多播分组控制模块,用于对多播分组的分发和授权控制,当多播分组进入子交换模块后,行多播分组控制模块根据多播分组携带的地址位图,将多播分组同时分发到对应的同行的子交换模块中,同时行多播分组控制模块会从地址位图截取相应部分组成新的位图信息,位图信息会随着该多播分组进入子交换模块;该多播分组进入子交换模块后,需要子端口仲裁模块、输出队列仲裁模块和列多播分组控制模块的授权才能进入子交换系统向目的子交换模块传输,其中列多播分组控制模块根据该位图信息来判断目的子交换模块对应的端口是否空闲,从而决定该多播分组的授权结果。
5.如权利要求4所述的数据分组交换系统,其特征在于,仲裁具体包括:
模块S1,用于按照优先级从高到低的顺序,依次检查所有输入缓存队列是否存在队列头部数据分组,若有,则调用模块S2;否则继续下一轮检查;
模块S2,用于提取头部分组的row_route_map交给子端口仲裁模块,调用模块S3;
模块S3,用于比对row_route_map与子交换系统中各个输出端口状态,如果row_route_map中每一位有效的行号且与之对应的子交换系统的输出端口处于空闲状态,则仲裁成功,调用模块S4;否则仲裁失败,调用模块S1;
模块S4,用于将row_route_map交给列多播分组控制模块仲裁,调用模块S5;
模块S5,用于比对row_route_map与对应行的目的子交换模块的对应输出队列缓存状态,如果row_route_map中每一位有效行号且与之对应的输出队列缓存状态空闲,则仲裁成功,调用模块S6;否则调用模块S1;
模块S6,用于在队列头部分组得到仲裁授权后,从输入缓存队列中输出到子交换系统,调用模块S7;
模块S7,用于使子交换系统按照数据分组的row_route_map中对应的有效行号直接分发到对应输出端口,调用模块S8;
模块S8,用于使数据分组通过子交换系统转发到达目的子交换模块,并存入对应输出队列缓存,调用模块S9;
模块S9,用于按照优先级从高到低的顺序,依次检查每个输出队列缓存是否存在队列头部数据分组,直到检测到第一个头部数据分组,则调用模块S10;否则继续下一轮检查;
模块S10,用于使队列头部数据分组得到输出队列仲裁模块仲裁授权,将队列头部数据分组传输到输出总线,完成传输。
6.如权利要求5所述的数据分组交换系统,其特征在于,该地址位图长度为N×M,M和N分别为该交换系统的行数和列数,目的端口记为0到N×M-1,端口状态使用1bit数据表示,1表示有效,0表示无效;数据分组进入位于第i行第j列的子交换模块之后,行多播分组控制模块分别提取该地址位图中各字段的端口状态,并对每段数据做按位或运算,得到col_route_map;其中0≤i≤M-1、0≤j≤N-1,i和j均为整数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111423226.9A CN114257557B (zh) | 2021-11-26 | 2021-11-26 | 一种数据分组交换系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111423226.9A CN114257557B (zh) | 2021-11-26 | 2021-11-26 | 一种数据分组交换系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114257557A CN114257557A (zh) | 2022-03-29 |
CN114257557B true CN114257557B (zh) | 2023-04-11 |
Family
ID=80791273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111423226.9A Active CN114257557B (zh) | 2021-11-26 | 2021-11-26 | 一种数据分组交换系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114257557B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114448917B (zh) * | 2022-04-07 | 2022-06-10 | 沐曦科技(北京)有限公司 | 基于多维仲裁器的数据处理系统和芯片 |
CN116028398B (zh) * | 2022-11-01 | 2023-10-31 | 中科计算技术西部研究院 | 一种互连网络仲裁系统、装置、方法及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102088412A (zh) * | 2011-03-02 | 2011-06-08 | 华为技术有限公司 | 交换单元芯片、路由器及信元信息的发送方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103166863B (zh) * | 2012-12-20 | 2015-10-07 | 上海大学 | 集总式8x8低延迟高带宽交叉点缓存队列片上路由器 |
WO2016105427A1 (en) * | 2014-12-24 | 2016-06-30 | Intel Corporation | Apparatus and method for using multiple multi-drop buses |
-
2021
- 2021-11-26 CN CN202111423226.9A patent/CN114257557B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102088412A (zh) * | 2011-03-02 | 2011-06-08 | 华为技术有限公司 | 交换单元芯片、路由器及信元信息的发送方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114257557A (zh) | 2022-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6813274B1 (en) | Network switch and method for data switching using a crossbar switch fabric with output port groups operating concurrently and independently | |
CN114257557B (zh) | 一种数据分组交换系统和方法 | |
EP1016246B1 (en) | Network apparatus and method for reduction of system latency | |
US5790545A (en) | Efficient output-request packet switch and method | |
JP4006205B2 (ja) | 別々の出力バッファを備えたスイッチング構成および方法 | |
US20030123468A1 (en) | Apparatus for switching data in high-speed networks and method of operation | |
US20030016689A1 (en) | Switch fabric with dual port memory emulation scheme | |
US7142555B2 (en) | Method and apparatus for switching data using parallel switching elements | |
GB2365665A (en) | Switching arrangement for data packets | |
US7408947B2 (en) | Method and apparatus for scheduling packets and/or cells | |
WO2001005123A1 (en) | Apparatus and method to minimize incoming data loss | |
JP2000059366A (ja) | 拡張可能にスケジュ―ルされたセルスイッチ及びスイッチする方法 | |
CN110995598A (zh) | 一种变长报文数据处理方法和调度装置 | |
US8761172B2 (en) | Data switching method and device | |
US20010023469A1 (en) | Distributed type input buffer switch system for transmitting arbitration information efficiently and method for processing input data using the same | |
US7675930B2 (en) | Chip circuit for combined and data compressed FIFO arbitration for a non-blocking switch | |
US8589593B2 (en) | Method and apparatus for processing protocol messages for multiple protocol instances | |
US6643294B1 (en) | Distributed control merged buffer ATM switch | |
US20100002716A1 (en) | Switching method | |
US20020146034A1 (en) | Self-route multi-memory expandable packet switch with overflow processing means | |
US20020089981A1 (en) | Expandable self-route multi-memory packet switch with a configurable multicast mechanism | |
KR20000074195A (ko) | 다중 경로 비동기 전송 모드 스위치를 위한 고속 셀 순서 처리장치 및 방법 | |
US7130302B2 (en) | Self-route expandable multi-memory packet switch | |
CN117135107B (zh) | 一种网络通信拓扑系统、路由方法、设备及介质 | |
CN118175122A (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 |