CN117544585A - 一种交换芯片、数据处理方法及交换设备 - Google Patents
一种交换芯片、数据处理方法及交换设备 Download PDFInfo
- Publication number
- CN117544585A CN117544585A CN202210912774.6A CN202210912774A CN117544585A CN 117544585 A CN117544585 A CN 117544585A CN 202210912774 A CN202210912774 A CN 202210912774A CN 117544585 A CN117544585 A CN 117544585A
- Authority
- CN
- China
- Prior art keywords
- data
- header data
- unit
- forwarding
- packet 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 11
- 238000000034 method Methods 0.000 claims abstract description 51
- 238000012545 processing Methods 0.000 claims description 113
- 230000005540 biological transmission Effects 0.000 claims description 47
- 238000003860 storage Methods 0.000 abstract description 26
- 230000008569 process Effects 0.000 abstract description 18
- 238000010521 absorption reaction Methods 0.000 abstract description 6
- 238000013461 design Methods 0.000 description 29
- 238000010586 diagram Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 230000002688 persistence Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种交换芯片、数据处理方法及交换设备,该交换芯片内包括数据切片单元,该数据切片单元可以用于从至少一个数据包中获取至少一个包首数据和至少一个载荷,以及可以将至少一个包首数据写入第一缓存单元,将至少一个载荷写入第二缓存单元。因此,第一缓存单元(例如,前级过冲吸收缓存单元)只需存储待交换数据包的包首数据,而待交换数据包的载荷可以存储在另一缓存单元(例如第二缓存单元)。如此,存储在第一缓存单元的内容较少,可以降低第一缓存单元存储的数据量超出其存储极限的概率,进而降低了第一缓存单元产生反压的概率,可以防止多个交换芯片之间的数据交换呈现死锁状态,提高了交换芯片的数据交换过程的持续性。
Description
技术领域
本申请涉及芯片技术领域,尤其涉及一种交换芯片、数据处理方法及交换设备。
背景技术
大规模分布式的交换网络是目前大容量高端路由器的核心技术之一,为了达到T比特以上的大交换容量需求,通常采用多级互联的交换网络,多级互联的交换网络包括多个交换芯片,多个交换芯片之间对待交换数据进行传输。其中,交换芯片内通常设置了缓存结构,为了避免缓存结构中的数据拥塞,还设置了反压机制。在反压机制中,交换芯片中的缓存结构在其存储的数据量即将达到其存储极限时,会向交换芯片的前级芯片发送停流指示;前级芯片接收到该停流指示后,停止向交换芯片发送数据。
然而,如果交换芯片的后级芯片中的缓存结构也产生停流指示,会导致交换芯片及其后级芯片的缓存结构存储的数据均超过各自的存储极限,则交换芯片及其后级芯片无法存储数据,因此交换芯片的前级芯片需等待交换芯片释放存储资源、以及交换芯片又需等待其后级芯片释放存储资源,导致交换芯片上的数据流持续阻塞,这种情况视为交换芯片、交换芯片的前级芯片、以及交换芯片的后级芯片之间的数据交换呈现死锁状态。由于死锁状态,使得交换芯片的数据交换流程中断。
因此,如何降低交换芯片中的缓存结构产生反压的概率,防止多个交换芯片之间的数据交换呈现死锁状态,以提高交换芯片的数据交换过程的持续性,是本领域技术人员需要考虑的问题。
发明内容
本申请实施例提供一种交换芯片、数据处理方法及交换设备,用于降低交换芯片中的缓存结构产生反压的概率,防止多个交换芯片之间的数据交换呈现死锁状态,提高交换芯片的数据交换过程的持续性。
第一方面,本申请实施例提供了一种交换芯片,包括:接收单元,用于接收至少一个数据包,并将至少一个数据包发送至数据切片单元;数据切片单元,用于从至少一个数据包中获取至少一个包首数据和至少一个载荷,以及,还用于将至少一个包首数据写入第一缓存单元,将至少一个载荷写入第二缓存单元;调度单元,用于从第一缓存单元获取待转发的第一包首数据,并将第一包首数据发送至处理单元,其中,第一包首数据是至少一个包首数据中的一个;处理单元,用于根据所述第一包首数据和预设的传输协议,得到转发包首数据,以及,将转发包首数据发送至交换单元;交换单元,用于根据转发包首数据,从第二缓存单元获取第一包首数据对应的转发载荷,并根据转发载荷和转发包首数据,得到转发数据包。
其中,交换单元根据转发载荷和转发包首数据,得到转发数据包。具体可以是对转发载荷和转发包首数据进行串链,在形成的转发数据包中转发载荷和转发包首数据之间可以连续或不连续。以及,在转发载荷被切分为多个切片的情况下,转发载荷可以放在多个载荷段中。例如,转发载荷包括N切片对应的载荷,则转发载荷可以放在多个转发载荷字段中。
本申请实施例中,由于交换芯片内包括数据切片单元,因此第一缓存单元(例如,前级过冲吸收(over subscription absorption,OSA)缓存单元)只需存储待交换数据包的包首数据,而待交换数据包的载荷可以存储在另一缓存单元(例如第二缓存单元)。相对于在第一缓存单元内存储整个数据包的方案,本申请实施例中存储在第一缓存单元的内容较少,降低了第一缓存单元存储的数据量超出其存储极限的概率,进而降低了第一缓存单元产生反压的概率,可以防止多个交换芯片之间的数据交换呈现死锁状态,提高了交换芯片的数据交换过程的持续性。
在一种可能的设计中,所述交换芯片还包括转发单元;所述交换单元,还用于将所述转发数据包发送至所述转发单元;所述转发单元,用于将所述转发数据包转发到目的端口。其中,转发单元可以根据转发数据包中的目的地址或路由表信息将转发数据包转发到目的端口。
在一种可能的设计中,第一缓存单元是交换芯片的片上缓存单元。在该设计中,第一缓存单元是交换芯片的片上缓存单元,由于第一缓存单元只需存储数据包的包首数据,可以有效降低交换芯片的功耗。以及,由于第一缓存单元只需存储数据包的包首数据,可以将第一缓存单元的存储容量设置的较小,从而使得第一缓存单元在交换芯片中占用的面积减小,进而有效降低交换芯片的成本和功耗。
可以理解的是,上述第二缓存单元可以是交换芯片的片上缓存单元,也可以是交换芯片的片外缓存单元。
在一种可能的设计中,至少一个包首数据包括第一包首数据;数据切片单元将至少一个包首数据写入第一缓存单元,包括:在调度单元中与第一包首数据对应的第一端口对应的数据不为空时,将第一包首数据写入第一缓存单元;数据切片单元,还用于:在第一端口对应的数据为空时,将第一包首数据发送至调度单元;调度单元,还用于将来自数据切片单元的第一包首数据发送至处理单元。其中,“调度单元中与所述第一包首数据对应的第一端口”可以理解为调度单元的源端口队列中与第一包首数据的源地址相同的端口。如此,若第一端口的数据为空,数据切片单元可以直接将第一包首数据发送至调度单元,进而调度单元可以直接对该第一包首数据进行调度,无需从第一缓存单元中获取,如此可以有效降低第一缓存单元的访问率,从而降低第一缓存单元的功耗,进一步降低交换芯片的功耗。
在一种可能的设计中,所述处理单元将所述转发包首数据发送至所述交换单元的顺序与所述处理单元接收到所述第一包首数据的顺序相同。在该设计中,处理单元采用先入先出的方式对包首数据进行调度,可以有效降低处理单元调度数据的复杂度。
在一种可能的设计中,第一包首数据包括第一预留字节;相应的,所述处理单元根据所述第一包首数据和预设的传输协议,得到转发包首数据,包括:基于预设的传输协议,确定第一包首数据待编辑的第一内容;在第一内容所占用的字节数小于或等于第一预留字节的数量时,将第一内容放在第一预留字节内,以形成转发包首数据。在该设计中,数据切片单元还具有数据移位功能,进而数据切片单元从至少一个数据包中获取第一包首数据时,可以在第一包首数据中设置第一预留字节,使得后续对第一包首数据进行编辑时,可以直接将待编辑的第一内容放入该第一预留字节,无需再对第一包首数据进行数据移位,有效提升第一包首数据的编辑效率。
在一种可能的设计中,所述交换单元在根据所述转发载荷和所述转发包首数据,得到转发数据包之前,还用于删除所述转发包首数据中的第二预留字节,第二预留字节是第一预留字节中未使用的字节。在该设计中,交换单元可以删除第一预留字节中未使用的字节,有效节约通信资源。
在一种可能的设计中,第一包首数据包括第一预留字节;相应的,所述处理单元根据所述第一包首数据和预设的传输协议,得到转发包首数据,包括:基于预设的传输协议,确定第一包首数据待编辑的第一内容;在第一内容所占用的字节数大于第一预留字节的数量时,将第一内容中的部分内容放在第一预留字节内,以及将第一内容中除部分内容之外的第二内容放在新增的第一字节,以形成转发包首数据。在该设计中,数据切片单元还具有数据移位功能,进而数据切片单元从至少一个数据包中获取第一包首数据时,可以在第一包首数据中设置第一预留字节,并且在后续对第一包首数据进行编辑时,若待编辑的第一内容所占用的字节数大于第一预留字节的数量,可以新增第一字节来放多余的第二内容。如此,第一预留字节的数量无需设置的较多,也可以完成对第一包首数据的编辑,以及可以使得第一数据包的数据总线宽度满足用户带宽需求。
在一种可能的设计中,交换单元,还用于:在转发包首数据包括第一字节的情况下,且得到转发数据包之后,将转发数据包输入至数据切片单元;数据切片单元,还用于从转发数据包中获取待转发的第二包首数据和第一载荷;以及,将所述第二包首数据写入所述第一缓存单元,将所述第一载荷写入所述第二缓存单元;其中,所述第二包首数据中包括第三预留字节,所述第三预留字节是根据所述第一字节确定的。在该设计中,若转发包首数据中包括新增的第一字节,交换单元根据转发载荷和转发包首数据,得到转发数据包之后,还可以将转发数据包输入至数据切片单元,进而数据切片单元可以从转发数据包中获取第二包首数据,并在第二数据包中设置第三预留字节。由于第三预留字节是根据第一字节(即待编辑的第二内容)确定的,可以使得第二包首数据的数据总线宽度满足用户带宽需求,进而可以有效平衡带宽限制,以及减少第二包首数据的长包首所导致的性能下降。
在一种可能的设计中,所述处理单元包括第一子单元和第二子单元;所述处理单元根据所述第一包首数据和预设的传输协议,得到转发包首数据,以及,将所述转发包首数据发送至交换单元,包括:所述第一子单元,用于接收来自所述调度单元的所述第一包首数据,并基于预设的传输协议,确定所述第一包首数据对应的编辑命令,并将所述编辑命令发送至所述第二子单元;所述第二子单元,用于基于所述编辑命令,对所述第一包首数据进行编辑,得到所述转发包首数据,并将所述转发包首数据发送至所述交换单元。在该设计中,处理单元中设置了第一子单元和第二子单元,第一子单元和第二子单元可以配合实现对第一包首数据的编辑。
第二方面,本申请实施例还提供了一种数据处理方法,应用于交换芯片,交换芯片包括接收单元、数据切片单元、调度单元、处理单元、和交换单元;该方法包括:通过所述接收单元接收至少一个数据包,并发送至所述数据切片单元;通过所述数据切片单元从所述至少一个数据包中获取至少一个包首数据和至少一个载荷,以及,将所述至少一个包首数据写入第一缓存单元,将所述至少一个载荷写入第二缓存单元;通过所述调度单元从所述第一缓存单元获取待转发的第一包首数据,并将所述第一包首数据发送至所述处理单元,其中,所述第一包首数据是所述至少一个包首数据中的一个;通过所述处理单元根据所述第一包首数据和预设的传输协议,得到转发包首数据;以及,将所述转发包首数据发送至交换单元;通过所述交换单元根据所述转发包首数据,从所述第二缓存单元获取与所述第一包首数据对应的转发载荷,并根据所述转发载荷和所述转发包首数据,得到转发数据包。
在一种可能的设计中,所述交换芯片还包括转发单元;所述方法还包括:通过所述交换单元将所述转发数据包发送至所述转发单元;以及,通过所述转发单元将所述转发数据包转发到目的端口。
在一种可能的设计中,第一缓存单元是交换芯片的片上缓存单元。
在一种可能的设计中,所述至少一个包首数据包括所述第一包首数据;通过所述数据切片单元将所述至少一个包首数据写入第一缓存单元,包括:在所述调度单元中与所述第一包首数据对应的第一端口对应的数据不为空时,通过所述数据切片单元将所述第一包首数据写入第一缓存单元;在将所述第一包首数据写入第一缓存单元之前,所述方法还包括:在所述第一端口对应的数据为空时,通过所述数据切片单元将所述第一包首数据发送至所述调度单元;通过所述调度单元将来自所述数据切片单元的所述第一包首数据发送至所述处理单元。
在一种可能的设计中,所述处理单元将所述转发包首数据发送至所述交换单元的顺序与所述处理单元接收到所述第一包首数据的顺序相同。
在一种可能的设计中,第一包首数据包括第一预留字节;通过所述处理单元根据所述第一包首数据和预设的传输协议,得到转发包首数据,包括:基于预设的传输协议,确定所述第一包首数据待编辑的第一内容;在所述第一内容所占用的字节数小于或等于所述第一预留字节的数量时,将所述第一内容放在所述第一预留字节内,以形成所述转发包首数据。
在一种可能的设计中,在所述交换单元根据所述转发载荷和所述转发包首数据,得到转发数据包之前,所述方法还包括:通过所述交换单元删除所述转发包首数据中的第二预留字节,所述第二预留字节是所述第一预留字节中未使用的字节。
在一种可能的设计中,第一包首数据包括第一预留字节;通过所述处理单元根据所述第一包首数据和预设的传输协议,得到转发包首数据,包括:基于预设的传输协议,确定所述第一包首数据待编辑的第一内容;在所述第一内容所占用的字节数大于所述第一预留字节的数量时,将所述第一内容中的部分内容放在所述第一预留字节内,以及将所述第一内容中除所述部分内容之外的第二内容放在新增的第一字节,以形成所述转发包首数据。
在一种可能的设计中,上述方法还包括:在所述转发包首数据中包括所述第一字节的情况下,所述交换单元得到所述转发数据包之后,通过所述交换单元将所述转发数据包发送至所述数据切片单元;通过所述数据切片单元从所述转发数据包中获取待转发的第二包首数据和第一载荷;以及,通过所述数据切片单元将所述第二包首数据写入所述第一缓存单元,将所述第一载荷写入所述第二缓存单元;其中,所述第二包首数据中包括第三预留字节,所述第三预留字节是根据所述第一字节确定的。
在一种可能的设计中,所述处理单元包括第一子单元和第二子单元;通过所述处理单元根据所述第一包首数据和预设的传输协议,得到转发包首数据,以及,将所述转发包首数据发送至交换单元,包括:通过所述第一子单元接收来自所述调度单元的所述第一包首数据,以及基于所述预设的传输协议,确定所述第一包首数据对应的编辑命令,并将所述编辑命令发送至所述第二子单元;通过所述第二子单元基于所述编辑命令,对所述第一包首数据进行编辑,得到所述转发包首数据,并将所述转发包首数据发送至所述交换单元。
第三方面,还提供了一种交换设备,包括如第一方面以及第一方面任一可选的设计中所述的交换芯片。
另外,第二方面以及第二方面中任一种可能设计方式所带来的技术效果可参见第一方面中不同设计方式所带来的技术效果,此处不再赘述。
附图说明
图1为一种交换网络的系统架构示意图;
图2A为本申请实施例提供的一种交换芯片的结构示意图;
图2B为本申请实施例提供的一种交换网络的架构示意图;
图2C为本申请中数据切片的过程示意图;
图2D为本申请中数据移位的过程示意图;
图2E为本申请实施例提供的第一包首数据的编辑示意图之一;
图2F为本申请实施例提供的第一包首数据的编辑示意图之二;
图2G为本申请实施例提供的交换单元拼接数据包的过程示意图之一;
图2H为本申请实施例提供的交换单元拼接数据包的过程示意图之二;
图2I为本申请实施例提供的交换单元拼接数据包的过程示意图之三;
图3为另一种交换网络的系统架构示意图;
图4为本申请实施例提供的另一种交换网络的架构示意图;
图5为本申请实施例提供的一种数据处理方法的流程示意图;
图6为本申请实施例提供的一种数据处理方法的流程示意图;
图7为本申请实施例提供的一种交换设备的结构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例作进一步地详细描述。
以下,对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
1、反压,也可以称作停流指示或反压信号。在一些实施例中,交换芯片中的后级缓存结构在其存储的数据量即将达到其存储极限时,可以向交换芯片中的前级缓存结构发送停流指示,以使前级缓存结构接收到该停流指示后,停止发送向后级缓存结构发送数据包,从而达到多级缓存结构的配合控制。在另一些实施例中,交换芯片中的前级过冲吸收(oversubscription absorption,OSA)缓存单元在其存储的数据量即将达到其存储量的极限时,可以向交换芯片的前级芯片发送停流指示,以使前级芯片停止向该交换芯片发送数据包。
2、反压响应时间(round trip time,RTT),后级缓存结构产生反压到后级缓存结构停止接收来自前级芯片的数据包的时间。在本申请实施例中,RTT例如可以是OSA缓存单元产生反压到OSA缓存单元接收来自前级芯片的数据包的时间。
3、最大包长(max transfer packet unit,MTU),可以理解为交换芯片中传输的数据包的最大长度。
4、数据流,包括一个或多个数据包。数据包通常分为短包(也称作小包)和长包。在一些实施例中,短包占用4个字节,长包占用6~65541个字节。
长包中包括一个32位的包首(packet header,PH)、一个字节数可变的载荷(payload)、以及一个16位的包尾(packet footer),其中,包首包括一个8位的数据标识符(data identifer,DI)、一个16位的字数(word count,WC)和一个8位的错误校验码(errorcorrection code,ECC),包尾包括一个16位的校验和(checksum)。其中,DI包括载荷的虚拟信道(virtual channel,VC)和载荷的数据类型(data type,DT)。短包中包括一个字节的DI、两个字节的载荷、以及一个字节的ECC。
5、最大处理包率,交换芯片中的包处理器(packet processor,PP)处理数据包的速率。
6、输入包率,交换芯片中的PP接收到数据包的速率。
7、数据总线宽度,是指数据总线在芯片内部数据传送的宽度,而数据总线宽度则决定了处理器与二级缓存、内存以及输入/输出设备之间一次数据传输的信息量。
8、基于优先级的流量控制(priority-based flow control,PFC)反压,即交换芯片中的缓存结构向该交换芯片的前级芯片产生的一种停流指示。其中,PFC是指基于预设的优先级,控制交换网链路上的两个交换芯片之间的虚拟通道暂停、重启、以及控制虚拟通道中的流量通断。
9、本申请实施例中的术语“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a和b,a和c,b和c,或a和b和c。
以及,在本申请实施例的描述中,以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
由背景技术描述可知,交换芯片内通常设置了缓存结构,为了避免缓存结构中的数据拥塞,还设置了反压机制。在反压机制中,交换芯片中的缓存结构在其存储的数据量即将达到其存储极限时,会向交换芯片的前级芯片发送停流指示;前级芯片接收到该停流指示后,停止向交换芯片发送数据。
示例性的,图1为一种交换网络的系统架构示意图,该交换网络中包括前级芯片100、交换芯片200、和后级芯片300。如图1所示,交换芯片200包括媒体访问控制层聚合(media access control address aggregation,MAG)单元201、处理单元202、前级过冲(over subscription absorption,OSA)缓存单元203、调度单元204、处理单元205、交换单元206、交换缓存单元207、和MAG单元208。其中,MAG单元201接收数据流1(即待交换数据),并将数据流1输入处理单元202;处理单元202对数据流1进行预处理后,输入OSA缓存单元203;调度单元204从OSA缓存单元203中获取数据流1,并将数据流1输入处理单元205;处理单元205可以对数据流1的包首进行编辑,得到数据流2,并将数据流2输入交换单元206;交换单元206将数据流2写入交换缓存单元207,以实现数据包的拥塞管理、包交换、包调度;以及,交换单元206从交换缓存单元207中读取数据流2,并将数据流2输入MAG单元208;MAG单元208将数据流2转发至后级芯片300中的目的端口。可以通理解的是,前级芯片100和后级芯片300的结构与交换芯片200的结构类似,这里不再赘述。
其中,OSA缓存单元203作为交换芯片200中的缓存结构,可以存储MAG单元201向OSA缓存单元203输入的数据包。当OSA缓存单元203中存储的数据包超出其存储极限时,OSA缓存单元203会产生反压1(即PFC反压),并通过MAG单元201将反压1传递给交换芯片200的前级芯片100,以使该前级芯片100停止向交换芯片200发送数据包。然而,若后级芯片300的缓存结构也产生反压1,会导致交换芯片200及其后级芯片300的缓存结构存储的数据均超过各自的存储极限,则交换芯片200及其后级芯片300无法存储数据,因此前级芯片100需等待交换芯片200释放存储资源、以及交换芯片200又需等待其后级芯片300释放存储资源,导致交换芯片200上的数据流持续阻塞,这种情况视为交换芯片200、前级芯片100、以及后级芯片300之间的数据交换呈现死锁状态。由于死锁状态,使得交换芯片的数据交换流程中断。
并且,为了支持多个端口的数据缓存,通常将交换芯片200中的OSA缓存单元203的容量设置的较大,使得OSA缓存单元203占用交换芯片较大的面积,增大了交换芯片200的成本和功耗。以及,如果在一段时间内,前级芯片100通过MAG单元201输入OSA缓存单元203的数据包中存在大量小包,会导致OSA缓存单元203中的数据堆积,进而导致数据包的转发时延增大。
综上可知,上述交换芯片200中存在如下问题:
一、当大量长包输入OSA缓存单元203时,OSA缓存单元203产生反压的概率较大。
二、OSA缓存单元203占用交换芯片较大的面积,导致交换芯片的成本和功耗增加。
三、当大量小包输入OSA缓存单元203时,会导致OSA缓存单元203中的数据堆积,进而使得数据包的转发时延增大。
针对技术问题一,本申请实施例提供了一种交换芯片,该交换芯片中,由于交换芯片内包括数据切片单元,该数据切片单元可以将数据包切分为包首数据和载荷,使得交换芯片中的缓存结构只需存储待交换数据包的包首数据,而待交换数据包的载荷可以存储在另一缓存单元(例如第二缓存单元)。相对于在第一缓存单元内存储整个数据包的方案,本申请实施例中存储在第一缓存单元的内容较少,降低了第一缓存单元存储的数据量超出其存储极限的概率,进而降低了第一缓存单元产生反压的概率,可以防止多个交换芯片之间的数据交换呈现死锁状态,提高了交换芯片的数据交换过程的持续性。
进一步的,针对技术问题二,在交换芯片中的缓存结构为交换芯片的片上缓存单元时,由于本申请实施例提供的交换芯片内包括数据切片单元,该数据切片单元可以将数据包切分为包首数据和载荷,使得交换芯片中的缓存结构(例如,第一缓存单元)只需存储待交换数据包的包首数据,而待交换数据包的载荷可以存储在另一缓存单元(例如第二缓存单元),可以将交换芯片中的缓存结构的存储容量设置的较小,从而可以使得交换芯片中的缓存结构在交换芯片中占用的面积减小,进而有效降低交换芯片的成本和功耗。
以及,针对技术问题三,由于本申请实施例提供的交换芯片中的缓存结构(例如,第一缓存单元)只需存储待交换数据包的包首数据,使得交换芯片中的缓存结构只需输出包首数据,相对于交换芯片中的缓存结构输出整个数据包的方案,可以减少交换芯片中的缓存结构输出数据的时长,降低包转发的时延。如此,即使输入交换芯片中的缓存结构的数据包中小包较多,也不会导致交换芯片中的缓存结构出现的数据堆积。
下面将结合附图对本申请实施例作进一步地详细描述。
请参见图2A,为本申请实施例提供的一种交换芯片的系统架构示意图,该交换芯片400包括接收单元401、数据切片单元402、第一缓存单元403、调度单元404、处理单元405、交换单元406、第二缓存单元407和转发单元408。其中,接收单元401用于从交换芯片400的前级芯片接收至少一个数据包,并将至少一个数据包发送至数据切片单元402;数据切片单元402用于从至少一个数据包中获取至少一个包首数据和至少一个载荷,以及将至少一个包首数据写入第一缓存单元403,将至少一个载荷写入第二缓存单元407;调度单元404用于从第一缓存单元403获取待转发的第一包首数据,并将第一包首数据发送至处理单元405;处理单元405用于根据第一包首数据和预设的传输协议,得到转发包首数据;以及,将转发包首数据发送至交换单元;交换单元406用于根据转发包首数据,从第二缓存单元获取第一包首数据对应的转发载荷,并根据转发载荷和转发包首数据,得到转发数据包,以及将转发数据包发送至转发单元408;进而转发单元408可以将转发数据包转发到目的端口。
在本申请实施例中,“目的端口”可以理解为交换芯片400的后级芯片600支持的端口,该后级芯片600可以和交换芯片400集成于相同或不同的交换设备中。
需要说明的是,由于交换芯片400中存在数据切片单元402,该数据切片单元402从待交换数据包中获取至少一个包首数据和至少一个载荷,以及将至少一个包首数据写入第一缓存单元403,并将至少一个载荷写入第二缓存单元407。因此,第一缓存单元403(即OSA缓存单元)中只需存储待交换数据包的包首数据,使得数据包在第一缓存单元403中占用的容量减少,降低了第一缓存单元403中存储的数据量超出其存储极限的概率,进而降低了第一缓存单元403产生反压1的概率,从而可以防止交换芯片中的缓存结构向前级芯片500发送反压信号所导致的死锁问题,提升交换芯片400的数据交换过程的持续性。
下面对交换芯片400中的各个单元进行详细的介绍。
一、接收单元401和转发单元408。
接收单元401或转发单元408可以是由多个MAC层电路聚合而成,每个MAC层电路可以通过逻辑电路或模拟电路实现。
如图2B所示,接收单元401可以视为入端口的MAC层电路,进而接收单元401可以通过多条串行总线与交换芯片400的前级芯片500连接,并接收该前级芯片500输入交换芯片400的至少一个数据包,并对其进行相应处理(例如对至少一个数据包进行校验、将至少一个数据包中的包首数据取出等)。转发单元408可以视为出端口的MAC层电路,进而转发单元408可以通过多条串行总线与交换芯片400的后级芯片600连接,转发单元408对交换芯片400将要输出的转发数据包进行处理,并转发至该后级芯片600。相应的,接收单元401接收的至少一个数据包可以是经过串行器/解串器(serializer/deserializer,SERDES)进行串行处理后得到的数据包。转发单元408输出的转发数据包可以是经过SERDES进行解串处理后的数据保。
需要说明的是,交换芯片400、交换芯片400的前级芯片500、和交换芯片400的后级芯片600可以集成于相同或不同的交换设备中,本申请实施例不作限制。前级芯片500和后级芯片600的具体结构可以与交换芯片400的结构类似,这里不再赘述。
二、数据切片单元402。
在一些可能实施例中,数据切片单元402具备数据切片功能,可以对其从接收单元401接收的至少一个数据包进行切片处理,从至少一个数据包中获取至少一个载荷和至少一个包首数据,以及将至少一个包首数据写入第一缓存单元403,将至少一个载荷写入第二缓存单元407。
示例性的,如图2C所示,至少一个数据包中包括数据包1,数据切片单元402对数据包1进行切片处理后,可以得到N个切片,其中,切片1为数据包1的包首数据,切片2-切片N为数据包1的载荷,进而数据切片单元402将切片1写入第一缓存单元403,以及将切片2-切片N写入第二缓存单元407。其中,N为大于2的正整数。
在另一些可能的实施例中,数据切片单元402同时具备数据切片功能和数据移位功能,进而数据切片单元402从至少一个数据包中获取第一包首数据时,可以对第一包首数据进行数据移位,在第一包首数据中设置第一预留字节。如此,后续对第一包首数据进行编辑时,可以将第一包首数据待编辑的内容放入该第一预留字节,不需要再对第一包首数据进行数据移位,可以有效提升第一包首数据的编辑效率。
示例性的,如图2D所示,至少一个数据包中包括数据包1,第一预留字节以3个字节为例。数据切片单元402对数据包1进行切片处理后,可以得到N个切片;其中,切片1为数据包1的包首数据,数据切片单元402可以在切片1后面中增加3个字节,形成数据包1的包首数据,并将切片1写入第一缓存单元403;切片2-切片N为数据包1的载荷,进而数据切片单元402将切片2-切片N写入第二缓存单元407。
三、第一缓存单元403。
在本申请实施例中,第一缓存单元403可以是交换芯片400中的OSA缓存单元,进而当第一缓存单元403中存储的数据达到其存储容量的极限值时,第一缓存单元403可以产生反压1(即PFC反压),并通过接收单元401传递给交换芯片400的前级芯片500,以使该前级芯片500停止向交换芯片400发送数据包。
进一步的,在本申请实施例中,第一缓存单元403可以是交换芯片400的片上缓存单元。如此,第一缓存单元403只需存储数据包的包首数据的情况下,可以有效降低交换芯片400的功耗;以及可以将第一缓存单403元的存储容量设置的较小,从而使得第一缓存单元403在交换芯片400中占用的面积减小,进而有效降低交换芯片400的成本。
例如,在一些技术方案中,第一缓存单元403存储整个数据包,则第一缓存单元403的存储容量=(2*RTT*Bandwidth(带宽)+3*MTU)*1.3*交换芯片400支持的端口数。而本申请实施例提供的技术方案中,由于第一缓存单元403(即OSA缓存单元)中只需存储数据包的包首数据,可以将第一缓存单元403的存储容量设置为(2*RTT*Bandwidth+2*MTU)*1.3*交换芯片400支持的端口数。如此,在交换芯片400支持的端口数和Bandwidth不变的情况下,将交换芯片400中传输的数据包占用的长度设置为2*MTU,可以有效减小第一缓存单元403所需的存储容量,进而有效降低交换芯片400的成本。
四、调度单元404。
调度单元404,也可以称作源端口调度器。在本申请实施例中调度单元404可以设置多个源端口队列,每个源端口队列用于对一个数据包的包首数据进行调度。
在一些可能的实施例中,调度单元404可以从第一缓存单元403中获取待转发的第一包首数据,并将第一包首数据发送至处理单元405。应理解,在具体实现时,在第一缓存单元403未产生反压1,且第一缓存单元403中数据不为空时,调度单元404才从第一缓存单元403中获取第一包首数据。
在另一些可能的实施例中,数据切片单元402在将第一包首数据写入第一缓存单元403之前,如果调度单元404中与第一包首数据对应的第一端口对应的数据为空,数据切片单元402还可以直接将第一包首数据发送至调度单元404,进而调度单元404可以将第一包首数据发送至处理单元。如此,调度单元404可以直接对该第一包首数据进行调度,无需从第一缓存单元403中获取,如此可以有效降低第一缓存单元403的访问率,从而降低第一缓存单元403的功耗,进一步降低交换芯片400的功耗。其中,“调度单元中与第一包首数据对应的第一端口”可以理解为调度单元的源端口队列中与第一包首数据的源地址相同的端口。示例性的,调度单元404中设置了128个源端口队列,这个128个源端口队列中与第一包首数据的源地址相同的端口为端口7,数据切片单元402在将第一包首数据写入第一缓存单元403之前,会读取的端口7的存储状态,若端口7的数据为空,则将当前待调度的第一包首数据直接发送至端口7。
五、处理单元405。
处理单元405,可以通过逻辑电路实现。
其中,处理单元405根据第一包首数据和预设的传输协议,得到转发包首数据,包括但不限于以下实施方式:
实施方式1中,处理单元405可以基于预设的传输协议,确定第一包首数据待编辑的第一内容;在第一内容所占用的字节数小于或等于第一预留字节的数量时,则处理单元405将第一内容放在第一预留字节内,以形成转发包首数据。如此,若待编辑的第一内容所占用的字节数小于或等于第一预留字节的数量,可以直接将第一包首数据待编辑的第一内容放在第一预留字节内,无需对第一包首数据进行移位处理,从而有效提升第一包首数据的编辑效率。
示例性的,预设的传输协议为用户数据报协议(user datagram protocol,UDP),进而处理单元405可以基于该用户数据报协议,确定第一包首数据待编辑的第一内容。请参见图2E,第一包首数据待编辑的第一内容所占用的字节数为2个字节,第一预留字节的数量为3个字节,则处理单元405将第一内容放在第一预留字节内,形成转发包首数据。进一步,交换单元406可以删除转发包首数据中未使用的字节。
实施方式2中,处理单元405可以基于预设的传输协议,确定第一包首数据待编辑的第一内容;在第一内容所占用的字节数大于第一预留字节的数量时,处理单元405确定将第一内容中的部分内容放在第一预留字节内,以及将第一内容中除部分内容之外的第二内容放在新增的第一字节,以形成转发包首数据。如此,若待编辑的第一内容所占用的字节数大于第一预留字节的数量,可以新增第一字节来放第二内容。进而第一预留字节的数量无需设置的较多,也可以完成对第一包首数据的编辑,以及可以使得第一数据包的数据总线宽满足用户带宽需求。
其中,第一字节是根据第一内容所占用的字节数与第一预留字节的数量确定的。例如,第一字节的数量大于或等于第一内容所占用的字节数与第一预留字节的数量之间的差值,进而第一字节可以用于存放第二内容。示例性的,第一预留字节以8个字节为例,第一内容所占用的字节为10个,则新增的第一字节为2个字节。相应的,第一预留字节放入第一内容中的部分内容,第一内容中除该部分内容以外的第二内容则放入新增的2个字节。
示例性的,请参见图2F,第一包首数据待编辑的第一内容所占用的字节数为5个字节,第一预留字节的数量为3个字节,则处理单元405将第一内容中的部分内容放在预留的3个字节内,以及将第一内容中除部分内容之外的第二内容放在新增的2个字节(即第一字节),形成转发包首数据。
可选的,上述处理单元405将转发包首数据发送至交换单元的顺序与处理单元405接收到第一包首数据的顺序相同。换而言之,处理单元405对第一包首数据进行编辑,得到转发包首数据后,可以按照处理单元405其接收到第一包首数据的顺序将转发包首数据发送至交换单元。
示例性的,第一包首数据以包首数据1和包首数据2为例,处理单元405首先接收到包首数据1,然后再接收到包首数据2;其中,处理单元405对包首数据1进行编辑后,得到包首数据3;处理单元405对包首数据2进行编辑后,得到包首数据4;则处理单元405可以先将包首数据3发送至交换单元,再先将包首数据4发送至交换单元。如此,处理单元405采用先入先出(first input first output,FIFO)的方式对包首数据进行调度,可以有效降低处理单元405的调度复杂度。
六、交换单元406。
在本申请实施例中,在处理单元405或编辑单元409对第一数据包进行编辑得到第二数据包之后,交换单元406可以根据第二包首数据,从第二缓存单元407获取第一载荷,并对第一载荷和第二包首数据进行拼接,得到第二数据流,并通过转发单元408将第二数据流转发至交换芯片400的后级芯片中的目的端口。
在一种可能的实施方式中,交换单元406可以根据转发包首数据中的原始包首数据(即第一包首数据)的地址信息或路由信息,生成读取指令,并将该读取指令发送至第二缓存单元407,进而从第二缓存单元407获取与该地址信息对应的转发载荷,并对转发载荷以及转发包首数据对齐串链,实现数据包的重组,得到转发数据包。其中,该地址信息可以是第一包首数据对应的源地址或目的地址。其中,交换单元406得到的转发数据包中转发载荷和转发包首数据之间可以连续或不连续。以及,在转发载荷被切分为多个切片的情况下,转发载荷可以放在多个载荷段中。例如,转发载荷包括N切片对应的载荷,则转发载荷可以放在多个转发载荷字段中。
示例1,如图2G所示,转发包首数据以包首数据A11、包首数据B11、包首数据C11、和包首数据D11为例,交换单元406依次接收到包首数据A11、包首数据B11、包首数据C11、和包首数据D11,包首数据A11、包首数据B11、包首数据C11、和包首数据D11各自对应的第一包首数据的地址信息分别为地址1、地址2、地址3、和地址4,进而交换单元406可以依次生成读取指令1、读取指令2、读取指令3、和读取指令4;其中,交换单元406基于读取指令1,从第二缓存单元407获取与包首数据A11的地址信息相匹配的载荷A2,并将载荷A2和包首数据A11进行串链,得到数据包A1,并且数据包A1中载荷A2和包首数据A11是连续的,不存在间隔;以及,交换单元406基于读取指令2,从第二缓存单元407获取与包首数据B11的地址信息相匹配的载荷B2,将载荷B2和包首数据B11进行串链,得到数据包B1,并且数据包B1中载荷B2和包首数据B11是连续的,不存在间隔;交换单元406基于读取指令1,从第二缓存单元407获取与包首数据C11的地址信息相匹配的载荷C2,将载荷C2和包首数据C11进行串链,得到数据包C1,并且数据包C1中载荷C2和包首数据C11是连续的,不存在间隔;交换单元406基于读取指令1,从第二缓存单元407获取与包首数据D11的地址信息相匹配的载荷D2,将载荷D2和包首数据D11进行串链,得到数据包D1,并且数据包D1中载荷D2和包首数据D11是连续的,不存在间隔;进而交换单元406可以将数据包A1、数据包B1、数据包C1和数据包D1依次发送至转发单元408,转发单元408可以将数据包A1、数据包B1、数据包C1和数据包D1转发至后级芯片中的目的端口。
示例2,如图2H所示,转发包首数据以包首数据A11、包首数据B11、包首数据C11、和包首数据D11为例,交换单元406依次接收到包首数据A11、包首数据B11、包首数据C11、和包首数据D11,包首数据A11、包首数据B11、包首数据C11、和包首数据D11各自对应的第一包首数据的地址信息分别为地址1、地址2、地址3、和地址4,进而交换单元406可以依次生成读取指令1、读取指令2、读取指令3、和读取指令4;其中,交换单元406基于读取指令1,从第二缓存单元407获取与包首数据A11的地址信息相匹配的载荷A2,并将载荷A2和包首数据A11进行串链,得到数据包A1,并且数据包A1中载荷A2和包首数据A11是不连续的,存在1比特间隔;以及,交换单元406基于读取指令2,从第二缓存单元407获取与包首数据B11的地址信息相匹配的载荷B2,将载荷B2和包首数据B11进行串链,得到数据包B1,并且数据包B1中载荷B2和包首数据B11是不连续的,存在1比特间隔;交换单元406基于读取指令1,从第二缓存单元407获取与包首数据C11的地址信息相匹配的载荷C2,将载荷C2和包首数据C11进行串链,得到数据包C1,并且数据包C1中载荷C2和包首数据C11是不连续的,存在1比特间隔;交换单元406基于读取指令1,从第二缓存单元407获取与包首数据D11的地址信息相匹配的载荷D2,将载荷D2和包首数据D11进行串链,得到数据包D1,并且数据包D1中载荷D2和包首数据D11是不连续的,存在1比特间隔;进而交换单元406可以将数据包A1、数据包B1、数据包C1和数据包D1依次发送至转发单元408,转发单元408可以将数据包A1、数据包B1、数据包C1和数据包D1转发至后级芯片中的目的端口。
示例3,如图2I所示,转发包首数据以包首数据A11为例,交换单元406接收到包首数据A11后,从第二缓存单元407获取与包首数据A11的地址信息相匹配的转发载荷A2,转发载荷A2包括切片1至切片5,则交换单元406将转发载荷A2和包首数据A11进行串链,得到数据包A1,并且在数据包A1中,转发载荷A2中的一个切片放置在一个转发载荷字段中。
可选的,交换单元406在将转发载荷和转发包首数据进行串链之前,若转发包首数据中存在第二预留字节,该第二预留字节是第一预留字节中未使用的字节,则交换单元406还可以删除该第二预留字节。示例性的,若第一包首数据中设置的第一预留字节为8个字节,第一包首数据待编辑的第一内容所占用的字节数为6个字节,则将第一内容放入第一包首数据之后,形成的第二包首数据中还包括2个未使用的字节,则交换单元406可以将这2个未使用的字节删除。如此,可以有效减少数据包的信令开销,进而节约通信资源。
七、第二缓存单元407。
第二缓存单元407,用于存储待交换数据包的载荷。其中,第二缓存单元407可以是交换芯片400的片上缓存单元或片外缓存单元,本申请实施例不作具体的限制。
需要说明的是,在一些情况中,交换芯片200还包括编辑单元209(如图3所示)。在图3中,调度单元204可以从OSA缓存单元203中获取数据流1,并将数据流1分别发送至处理单元205和编辑单元209;处理单元205可以生成数据流1对应的包编辑命令,并将该包编辑命令发送至编辑单元209;进而编辑单元209可以根据该包编辑命令,对数据流1的包首进行编辑,得到数据流2,并将数据流2发送至交换单元206。然而,编辑单元209将包首数据编辑好的数据流输出给交换单元206,需要2个或2个以上时钟周期(Clock Cycle),在此期间,编辑单元209可能接收到多个数据包的编辑命令,因此编辑单元209需要为编辑命令设置端口队列,当该端口队列中的编辑命令对应的数据包编辑完成时,编辑单元209需要将这些数据包按切片交织调度的方式发送至交换单元206,使得编辑单元209的数据调度较为复杂。因此,如何降低交换芯片200中的编辑单元209的数据调度复杂度,是亟需解决的问题。
如图4所示,在本申请的一些实施例中,在一种可能的设计中,处理单元405处理单元包括第一子单元4051和第二子单元4052;处理单元405根据第一包首数据和预设的传输协议,得到转发包首数据,以及,将转发包首数据发送至交换单元,包括:第一子单元4051接收第一包首数据,并基于预设的传输协议,确定第一包首数据对应的第一编辑命令,并将第一编辑命令发送至第二子单元4052;第二子单元4052基于第一编辑命令,对第一包首数据进行编辑,得到转发包首数据,并将转发包首数据发送至交换单元406。
其中,第一子单元4051根据第一包首数据,确定第一编辑命令,包括但不限于以下实施方式:
实施方式1中,第一子单元4051可以基于预设的传输协议,确定第一包首数据待编辑的第一内容;在第一内容所占用的字节数小于或等于第一预留字节的数量时,则第一子单元4051确定的第一编辑命令用于指示将第一内容放在第一预留字节内,以形成第二包首数据。
实施方式2中,第一子单元4051可以基于预设的传输协议,确定第一包首数据待编辑的第一内容;在第一内容所占用的字节数大于第一预留字节的数量时,处理单元405确定的第一编辑命令用于指示将第一内容中的部分内容放在第一预留字节内,以及指示将第一内容中除部分内容之外的第二内容放在新增的第一字节,以形成第二包首数据。
类似的,结合上述第一子单元4051确定的第一编辑指令可知,第二子单元4052对第一包首数据进行编辑,得到第二包首数据,包括但不限于以下实施方式:
示例1,在第一包首数据待编辑的第一内容所占用的字节数小于或等于第一预留字节的数量时,第二子单元4052将第一内容放在第一预留字节内,以形成第二包首数据。
示例2,在第一包首数据待编辑的第一内容所占用的字节数大于第一预留字节的数量时,第二子单元4052将第一内容中的部分内容放在第一预留字节内,以及将第一内容中除部分内容之外的第二内容放在新增的第一字节,以形成第二包首数据。
可选的,上述第二子单元4052将第二包首数据发送至交换单元的顺序与第二子单元4052接收到第一包首数据的顺序相同。换而言之,第二子单元4052对第一数据包进行编辑,得到第二数据包后,可以按照第二子单元4052接收到第一包首数据的顺序将第二包首数据发送至交换单元。示例性的,第一包首数据以包首数据1和包首数据2为例,第二子单元4052首先接收到包首数据1,然后再接收到包首数据2;其中,第二子单元4052对包首数据1进行编辑后,得到包首数据3;第二子单元4052对包首数据2进行编辑后,得到包首数据4;则第二子单元4052可以先将包首数据3发送至交换单元,再先将包首数据4发送至交换单元。如此,第二子单元4052采用FIFO的方式对包首数据进行调度,可以有效降低第二子单元4052的调度复杂度。
为了便于理解,下面结合具体的示例对交换芯片400进行详细的介绍。
示例性的,至少一个数据包以数据包A、数据包B、数据包C、和数据包D为例,至少一个转发数据包以数据包A1、数据包B1、数据包C1和数据包D1为例。
接收单元401从交换芯片400的前级芯片依次接收数据包A、数据包B、数据包C、和数据包D,并按照接收这些数据包的顺序将数据包A、数据包B、数据包C、和数据包D依次发送至数据切片单元402。
数据切片单元402从数据包A中获取包首数据A1和载荷A2,以及从数据包B中获取包首数据B1和载荷B2,从数据包C中获取包首数据C1和载荷C2,从数据包D中获取包首数据D1和载荷D2;并且数据切片单元402还可以将包首数据A1、包首数据B1、包首数据C1、和包首数据D1依次写入第一缓存单元403,以及将载荷A2、载荷B2、载荷C2、和载荷D2依次写入第二缓存单元407。
调度单元404可以从第一缓存单元403依次获取包首数据A1、包首数据B1、包首数据C1、和包首数据D1,并将包首数据A1、包首数据B1、包首数据C1、和包首数据D1依次发送至处理单元405。
处理单元405基于预设的传输协议,生成包首数据A1对应的编辑命令1,并基于编辑命令1对包首数据A1进行编辑,得到编辑后的包首数据A11;处理单元405基于预设的传输协议,生成包首数据B1对应的编辑命令2,并基于编辑命令2对包首数据B2进行编辑,得到编辑后的包首数据B11;处理单元405基于预设的传输协议,生成包首数据C1对应的编辑命令3,并基于编辑命令3对包首数据C1进行编辑,以得到编辑后的包首数据C11;处理单元405基于预设的传输协议,生成包首数据D1对应的编辑命令4,并基于编辑命令4对包首数据D1进行编辑,得到编辑后的包首数据D11。然后,处理单元405将包首数据A11、包首数据B11、包首数据C11和包首数据D11依次发送至交换单元406。
或者,处理单元405生成包首数据A1对应的编辑命令1、包首数据B1对应的编辑命令2、包首数据C1对应的编辑命令3以及包首数据D1对应的编辑命令4,并将编辑命令1、编辑命令2、编辑命令3、和编辑命令4发送编辑单元409;进而编辑单元409可以基于编辑命令1对包首数据A1进行编辑,得到编辑后的包首数据A11;以及,编辑单元409基于编辑命令2对包首数据B2进行编辑,得到编辑后的包首数据B11;编辑单元409基于编辑命令3对包首数据C1进行编辑,以得到编辑后的包首数据C11;编辑单元409基于编辑命令4对包首数据D1进行编辑,得到编辑后的包首数据D11。然后,编辑单元409将包首数据A11、包首数据B11、包首数据C11和包首数据D11依次发送至交换单元406。
交换单元406可以根据包首数据A11,从第二缓存单元407获取载荷A2,将载荷A2和包首数据A11进行拼接,得到数据包A1;以及,交换单元406可以根据包首数据B11,从第二缓存单元407获取载荷B2,将载荷B2和包首数据B11进行拼接,得到数据包B1;交换单元406可以根据包首数据C11,从第二缓存单元407获取载荷C2,将载荷C2和包首数据C11进行拼接,得到数据包C1;交换单元406可以根据包首数据D11,从第二缓存单元407获取载荷D2,将载荷D2和包首数据D11进行拼接,得到数据包D1。然后,交换单元406可以将数据包A1、B1、C1和D1依次发送至转发单元408。
转发单元408将数据包A1、B1、C1和D1依次转发到各个数据包对应的目的端口。
需要说明的是,上述处理单元405在对第一包首数据进行编辑,得到转发包首数据之后,若在转发包首数据中新增了用于存放第二内容的第一字节,则需要对转发包首数据进行二次编辑。因此,交换单元406在对转发载荷和转发包首数据进行串链得到转发数据包之后,还可以将转发数据包发送至数据切片单元402(如图4所示),以实现对转发包首数据进行二次处理。其中,对转发数据包中的转发包首数据进行二次处理的过程包括以下步骤:
(1)、数据切片单元402从转发数据包中获取第二包首数据和第一载荷,并将第二包首数据写入第一缓存单元403,将第一载荷写入第二缓存单元407。
类似的,数据切片单元402可以对转发数据包进行切片处理,从中获取第二包首数据和第一载荷。并且数据切片单元402可以在第二包首数据中设置第三预留字节。其中,第三预留字节是根据上述第一字节确定的,例如第三预留字节的数量可以大于或等于第一字节的数量。如此,后续在对第二包首数据进行编辑的过程中,可以将新增的内容放在第三预留字节,无需对第二包首数据进行移位操作。
(2)、调度单元404从第一缓存单元获取待转发的第二包首数据,并将第二包首数据发送至处理单元405。
可以理解的是,调度单元404是在第一缓存单元没有产生反压1的情况下,从第一缓存单元403获取第三包首数据。
(3)、处理单元405根据第二包首数据,确定第二编辑命令,并基于该第二编辑命令对第二包首数据进行编辑,以得到二次转发包首数据。
类似的,处理单元405根据第二包首数据,确定第二编辑命令的过程可以是:处理单元405基于第二包首数据的传输协议,确定第二包首数据待编辑的第三内容,并生成第二编辑命令,该第二编辑命令用于指示将第三内容放在第三预留字节内,以形成二次转发包首数据。
(4)、处理单元405将二次转发包首数据发送至交换单元406。
(5)、交换单元406根据二次转发包首数据,从第二缓存单元407获取第二载荷,将第二载荷和二次转发包首数据进行拼接,得到二次转发数据包,并将二次转发数据包发送至转发单元408。
(6)、转发单元408可以将二次转发数据包转发到目的端口。
以上过程中,通过对上述转发数据包进行二次处理,可以得到符合传输协议的二次转发数据包,且在第二包首数据中设置相应的第三预留字节,在对第二包首数据进行编辑时,可以将第二包首数据待编辑的内容放入该第三预留字节,使得第二数据包的数据总线宽度满足用户带宽需求,进而可以有效平衡带宽限制,以及减少数据包的长包首所导致的性能下降。
基于同一发明构思,本申请实施例还提供了一种数据处理方法,该方法可以应用于上述图2A或图2B所示的交换芯片400,用以实现对待交换数据的转发。请参见图5,该方法包括:
S601、接收单元401获取至少一个数据包,并发送至数据切片单元402。
其中,至少一个数据包可以包括一个或多个数据包。
S602、数据切片单元402从至少一个数据包中获取至少一个包首数据和至少一个载荷。
S603、数据切片单元402将至少一个包首数据写入第一缓存单元403。
S604、数据切片单元402将至少一个载荷写入第二缓存单元407。
S605、调度单元404从第一缓存单元403获取待转发的第一包首数据。
S606、调度单元404将第一包首数据发送至处理单元405。
S607、处理单元405根据第一包首数据和预设的传输协议,得到转发包首数据。
S608、处理单元405将转发包首数据发送至交换单元406。
S609、交换单元406从第二缓存单元407获取与第一包首数据对应的转发载荷。
S610、交换单元406根据转发载荷和转发包首数据,得到转发数据包。
S611、交换单元406将转发数据包发送至转发单元408。
S612、转发单元408将转发数据包转发到目的端口。
需要说明的是,在图5所示的方法可以视为图2A或图2B中交换芯片400中各个单元所执行的方法,图5所示的方法中未详尽描述的实现方式及技术效果可以参见图2A或图2B所示的交换芯片400的相关描述,此处不再赘述。
基于同一发明构思,本申请实施例还提供了另一种数据处理方法,该方法可以应用于上述图4所示的交换芯片400,用以实现对待交换数据的转发。请参见图6,该方法包括:
S701、接收单元401获取至少一个数据包并发送至数据切片单元402。
其中,至少一个数据包可以包括一个或多个数据包。
S702、数据切片单元402从至少一个数据包中获取至少一个包首数据和至少一个载荷。
S703、数据切片单元402将至少一个包首数据写入第一缓存单元403。
S704、数据切片单元402将至少一个载荷写入第二缓存单元407。
S705、调度单元404从第一缓存单元403获取待转发的第一包首数据。
S706、调度单元404将第一包首数据发送至第一子单元4051。
S707、调度单元404将第一包首数据发送至第二子单元4052。
S708、处理单元405根据第一包首数据和预设的传输协议,确定第一编辑命令。
S709、处理单元405将第一编辑命令发送至第二子单元4052。
S710、第二子单元4052基于第一编辑命令,对第一包首数据进行编辑,得到转发包首数据。
S711、第二子单元4052将转发包首数据发送至交换单元406。
S712、交换单元406从第二缓存单元407获取与第一包首数据对应的转发载荷。
S713、交换单元406根据转发载荷和转发包首数据,得到转发数据包。
S714、交换单元406将转发数据包发送至转发单元408。
S715、转发单元408将转发数据包转发到目的端口。
需要说明的是,在图6所示的方法可以视为图4中交换芯片400中各个单元所执行的方法,图6所示的方法中未详尽描述的实现方式及技术效果可以参见图4所示的交换芯片400的相关描述,此处不再赘述。其中,图5和图6的区别在于,图6中处理单元405包括第一子单元4051和第二子单元4052,第一子单元4051和第二子单元4052配合实现对第一包首数据的编辑,得到转发数据包。
基于同一发明构思,本申请实施例还提供一种交换设备,该交换设备包括如上述实施例中的一个或多个交换芯片400。
示例性的,如图7所示,该交换设备800包括多个交换接入芯片801以及交换网板802,交换网板802上集成有多个交换芯片和控制器802a。
其中,多个交换芯片中的至少一个交换芯片为前述交换芯片400,多个交换接入芯片801分别与多个交换芯片中的每一个交换芯片直接连接或交换芯片400间接连接;控制器802a用于向交换芯片400发送控制信号,该控制信号用于指示交换芯片400将其接收到的数据流输出至交换芯片400的后级芯片。
也就是说,在交换设备800中,交换芯片可以全部采用图2A、图2B、或图4所述的交换芯片400的结构(图7中以此方式进行示意),也可以部分采用交换芯片400的结构、部分采用现有技术中的交换芯片的结构。交换接入芯片801需要与每一个交换芯片实现连接,对于特定的某一个交换接入芯片801以及某一个交换芯片来说,它们之间的连接方式可以是直接连接,也可以是通过交换芯片400间接连接,采用间接连接方式时,交换芯片400作为中继SE。
交换设备800中,交换芯片400的具体处理过程可以参见前面实施例中的描述,此处不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储单元、CD-ROM、光学存储单元等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理单元以产生一个机单元,使得通过计算机或其他可编程数据处理设备的处理单元执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储单元中,使得存储在该计算机可读存储单元中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (21)
1.一种交换芯片,其特征在于,包括:
接收单元,用于接收至少一个数据包,并将所述至少一个数据包发送至数据切片单元;
所述数据切片单元,用于从所述至少一个数据包中获取至少一个包首数据和至少一个载荷,以及,还用于将所述至少一个包首数据写入第一缓存单元,将至少一个载荷写入第二缓存单元;
调度单元,用于从所述第一缓存单元获取待转发的第一包首数据,并将所述第一包首数据发送至处理单元,其中,所述第一包首数据是所述至少一个包首数据中的一个;
所述处理单元,用于根据所述第一包首数据和预设的传输协议,得到转发包首数据,以及,将所述转发包首数据发送至交换单元;
所述交换单元,用于根据所述转发包首数据,从所述第二缓存单元获取所述第一包首数据对应的转发载荷,并根据所述转发载荷和所述转发包首数据,得到转发数据包。
2.如权利要求1所述的交换芯片,其特征在于,所述交换芯片还包括转发单元:
所述交换单元,还用于将所述转发数据包发送至所述转发单元;
所述转发单元,用于将所述转发数据包转发到目的端口。
3.如权利要求1或2所述的交换芯片,其特征在于,所述第一缓存单元是所述交换芯片的片上缓存单元。
4.如权利要求1-3任一项所述的交换芯片,其特征在于,所述至少一个包首数据包括所述第一包首数据;
所述数据切片单元将所述至少一个包首数据写入第一缓存单元,包括:在所述调度单元中与所述第一包首数据对应的第一端口对应的数据不为空时,将所述第一包首数据写入第一缓存单元;
所述数据切片单元,还用于:在所述第一端口对应的数据为空时,将所述第一包首数据发送至所述调度单元;所述调度单元,还用于将来自所述数据切片单元的所述第一包首数据发送至所述处理单元。
5.如权利要求1-4任一项所述的交换芯片,其特征在于,所述处理单元将所述转发包首数据发送至所述交换单元的顺序与所述处理单元接收到所述第一包首数据的顺序相同。
6.如权利要求1-5任一项所述的交换芯片,其特征在于,所述第一包首数据包括第一预留字节;
所述处理单元根据所述第一包首数据和预设的传输协议,得到转发包首数据,包括:
基于所述预设的传输协议,确定所述第一包首数据待编辑的第一内容;
在所述第一内容所占用的字节数小于或等于所述第一预留字节的数量时,将所述第一内容放在所述第一预留字节内,以形成所述转发包首数据。
7.如权利要求6所述的交换芯片,其特征在于,所述交换单元在根据所述转发载荷和所述转发包首数据,得到转发数据包之前,还用于:
删除所述转发包首数据中的第二预留字节,所述第二预留字节是所述第一预留字节中未使用的字节。
8.如权利要求1-5任一项所述的交换芯片,其特征在于,所述第一包首数据包括第一预留字节;
所述处理单元根据所述第一包首数据和预设的传输协议,得到转发包首数据,包括:
基于所述预设的传输协议,确定所述第一包首数据待编辑的第一内容;
在所述第一内容所占用的字节数大于所述第一预留字节的数量时,将所述第一内容中的部分内容放在所述第一预留字节内,以及将所述第一内容中除所述部分内容之外的第二内容放在新增的第一字节,以形成所述转发包首数据。
9.如权利要求8所述的交换芯片,其特征在于,
所述交换单元,还用于:在所述转发包首数据中包括所述第一字节的情况下,得到所述转发数据包之后,将所述转发数据包发送至所述数据切片单元;
所述数据切片单元,还用于从所述转发数据包中获取待转发的第二包首数据和第一载荷;以及,将所述第二包首数据写入所述第一缓存单元,将所述第一载荷写入所述第二缓存单元;其中,所述第二包首数据中包括第三预留字节,所述第三预留字节是根据所述第一字节确定的。
10.如权利要求1-9中任一项所述的交换芯片,其特征在于,所述处理单元包括第一子单元和第二子单元;
所述处理单元根据所述第一包首数据和预设的传输协议,得到转发包首数据,以及,将所述转发包首数据发送至交换单元,包括:
所述第一子单元,用于接收来自所述调度单元的所述第一包首数据,并基于所述预设的传输协议,确定所述第一包首数据对应的编辑命令,并将所述编辑命令发送至所述第二子单元;
所述第二子单元,用于基于所述编辑命令,对所述第一包首数据进行编辑,得到所述转发包首数据,并将所述转发包首数据发送至所述交换单元。
11.一种数据处理方法,其特征在于,应用于交换芯片,所述交换芯片包括接收单元、数据切片单元、调度单元、处理单元、和交换单元;
所述方法包括:
通过所述接收单元接收至少一个数据包,并发送至所述数据切片单元;
通过所述数据切片单元从所述至少一个数据包中获取至少一个包首数据和至少一个载荷,以及,将所述至少一个包首数据写入第一缓存单元,将所述至少一个载荷写入第二缓存单元;
通过所述调度单元从所述第一缓存单元获取待转发的第一包首数据,并将所述第一包首数据发送至所述处理单元,其中,所述第一包首数据是所述至少一个包首数据中的一个;
通过所述处理单元根据所述第一包首数据和预设的传输协议,得到转发包首数据;以及,将所述转发包首数据发送至交换单元;
通过所述交换单元根据所述转发包首数据,从所述第二缓存单元获取与所述第一包首数据对应的转发载荷,并根据所述转发载荷和所述转发包首数据,得到转发数据包。
12.如权利要求11所述的方法,其特征在于,所述交换芯片还包括转发单元;所述方法还包括:
通过所述交换单元将所述转发数据包发送至所述转发单元;
通过所述转发单元将所述转发数据包转发到目的端口。
13.如权利要求11或12所述的方法,其特征在于,所述第一缓存单元是所述交换芯片的片上缓存单元。
14.如权利要求11-13任一项所述的方法,其特征在于,所述至少一个包首数据包括所述第一包首数据;
通过所述数据切片单元将所述至少一个包首数据写入第一缓存单元,包括:
在所述调度单元中与所述第一包首数据对应的第一端口对应的数据不为空时,通过所述数据切片单元将所述第一包首数据写入第一缓存单元;
在将所述第一包首数据写入第一缓存单元之前,所述方法还包括:
在所述第一端口对应的数据为空时,通过所述数据切片单元将所述第一包首数据发送至所述调度单元;通过所述调度单元将来自所述数据切片单元的所述第一包首数据发送至所述处理单元。
15.如权利要求11-14任一项所述的方法,其特征在于,所述处理单元将所述转发包首数据发送至所述交换单元的顺序与所述处理单元接收到所述第一包首数据的顺序相同。
16.如权利要求11-15任一项所述的方法,其特征在于,所述第一包首数据包括第一预留字节;
通过所述处理单元根据所述第一包首数据和预设的传输协议,得到转发包首数据,包括:
基于所述预设的传输协议,确定所述第一包首数据待编辑的第一内容;
在所述第一内容所占用的字节数小于或等于所述第一预留字节的数量时,将所述第一内容放在所述第一预留字节内,以形成所述转发包首数据。
17.如权利要求16所述的方法,其特征在于,在所述交换单元根据所述转发载荷和所述转发包首数据,得到转发数据包之前,所述方法还包括:
通过所述交换单元删除所述转发包首数据中的第二预留字节,所述第二预留字节是所述第一预留字节中未使用的字节。
18.如权利要求11-15任一项所述的方法,其特征在于,所述第一包首数据包括第一预留字节;
通过所述处理单元根据所述第一包首数据和预设的传输协议,得到转发包首数据,包括:
基于所述预设的传输协议,确定所述第一包首数据待编辑的第一内容;
在所述第一内容所占用的字节数大于所述第一预留字节的数量时,将所述第一内容中的部分内容放在所述第一预留字节内,以及将所述第一内容中除所述部分内容之外的第二内容放在新增的第一字节,以形成所述转发包首数据。
19.如权利要求18所述的方法,其特征在于,所述方法还包括:
在所述转发包首数据中包括所述第一字节的情况下,所述交换单元得到所述转发数据包之后,通过所述交换单元将所述转发数据包发送至所述数据切片单元;
通过所述数据切片单元从所述转发数据包中获取待转发的第二包首数据和第一载荷;以及,通过所述数据切片单元将所述第二包首数据写入所述第一缓存单元,将所述第一载荷写入所述第二缓存单元;
其中,所述第二包首数据中包括第三预留字节,所述第三预留字节是根据所述第一字节确定的。
20.如权利要求11-19中任一项所述的方法,其特征在于,所述处理单元包括第一子单元和第二子单元;
通过所述处理单元根据所述第一包首数据和预设的传输协议,得到转发包首数据,以及,将所述转发包首数据发送至交换单元,包括:
通过所述第一子单元接收来自所述调度单元的所述第一包首数据,以及基于所述预设的传输协议,确定所述第一包首数据对应的编辑命令,并将所述编辑命令发送至所述第二子单元;
通过所述第二子单元基于所述编辑命令,对所述第一包首数据进行编辑,得到所述转发包首数据,并将所述转发包首数据发送至所述交换单元。
21.一种交换设备,其特征在于,包括如权利要求1-10任一项所述的交换芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210912774.6A CN117544585A (zh) | 2022-07-31 | 2022-07-31 | 一种交换芯片、数据处理方法及交换设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210912774.6A CN117544585A (zh) | 2022-07-31 | 2022-07-31 | 一种交换芯片、数据处理方法及交换设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117544585A true CN117544585A (zh) | 2024-02-09 |
Family
ID=89784737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210912774.6A Pending CN117544585A (zh) | 2022-07-31 | 2022-07-31 | 一种交换芯片、数据处理方法及交换设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117544585A (zh) |
-
2022
- 2022-07-31 CN CN202210912774.6A patent/CN117544585A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8131950B2 (en) | Low latency request dispatcher | |
US7352694B1 (en) | System and method for tolerating data link faults in a packet communications switch fabric | |
US10355996B2 (en) | Heterogeneous channel capacities in an interconnect | |
US7227841B2 (en) | Packet input thresholding for resource distribution in a network switch | |
EP2893678B1 (en) | Apparatus for transferring packets between interface control modules of line cards | |
US7042891B2 (en) | Dynamic selection of lowest latency path in a network switch | |
US8553684B2 (en) | Network switching system having variable headers and addresses | |
US8819265B2 (en) | Managing flow control buffer | |
US20030026267A1 (en) | Virtual channels in a network switch | |
US8014401B2 (en) | Electronic device and method of communication resource allocation | |
US7969985B1 (en) | Method and system for scheduling, transporting, and receiving inbound packets efficiently in networks with cyclic packet scheduling | |
US20030026206A1 (en) | System and method for late-dropping packets in a network switch | |
US8996724B2 (en) | Context switched route look up key engine | |
US20020131412A1 (en) | Switch fabric with efficient spatial multicast | |
US6947413B2 (en) | Switching apparatus, communication apparatus, and communication system | |
CN117544585A (zh) | 一种交换芯片、数据处理方法及交换设备 | |
CN111434079B (zh) | 一种数据通信方法及装置 | |
US20030099242A1 (en) | Switch fabric capable of aggregating multiple chips and links for high bandwidth operation | |
KR100745674B1 (ko) | 다중 스위칭 포트 지원 구조의 패킷 처리장치, 방법 및 그장치를 적용한 패킷 처리시스템 | |
WO2011026508A1 (en) | Method for distributing data traffic over radio links | |
CN114208131B (zh) | 流量均衡方法、网络设备及电子设备 | |
CN113014498A (zh) | 一种收发数据的方法及装置 | |
US7009973B2 (en) | Switch using a segmented ring | |
KR950009428B1 (ko) | 적응 소거노드 기능을 갖는 분산큐이중버스 통신시스템의 트래픽 부하 측정방법 | |
CN116032421A (zh) | 以太网链路控制装置和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |