接收装置及其封包处理方法转让专利

申请号 : CN201510993042.4

文献号 : CN106921618B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 林嘉宏杨昌轩雷奕晖林群皓

申请人 : 瑞昱半导体股份有限公司

摘要 :

本案提供一种预处理片段数据封包成数据封包的接收装置。接收装置包括封包剖析器、数据存储器、解密单元、传输引擎、标头处理单元与控制器。封包剖析器自片段数据封包的片段封包标头取出片段封包标头信息。解密单元对每一片段数据封包的加密数据进行解密,以获得片段负载数据以及包括顺序信息的QUIC私密标头。传输引擎将片段负载数据输出至系统存储器的特定位置。标头处理单元根据QUIC私密标头计算封包信息,并更新数据存储器的片段封包标头,以产生封包标头。控制器根据顺序信息控制传输引擎将封包标头输出至系统存储器以产生数据封包。

权利要求 :

1.一种接收装置,用以接收至少一片段数据封包,并预处理该至少一片段数据封包成一数据封包,包括:一封包剖析器,用以自该至少一片段数据封包的片段封包标头取出至少一片段封包标头信息;

一数据存储器,用以存储该至少一片段封包标头;

一解密单元,用以选择性地对每一片段数据封包的一加密数据进行解密,以获得至少一QUIC私密标头以及至少一片段负载数据,其中该至少一QUIC私密标头包括该至少一片段数据封包的顺序信息;

一传输引擎,用以将该至少一片段负载数据输出至一系统存储器的至少一特定位置;

一标头处理单元,用以根据该至少一QUIC私密标头计算至少一封包信息,并更新该至少一片段封包标头,以产生一封包标头;以及一控制器,用以根据该至少一顺序信息控制该传输引擎将该封包标头输出至该系统存储器,以将该封包标头以及该至少一片段负载数据组合成该数据封包。

2.如权利要求1的接收装置,其中该封包剖析器更根据该片段封包标头信息判断对应的片段数据封包是否为一QUIC封包;若该片段数据封包是一QUIC封包,该数据存储器存储该片段封包标头信息,且该解密单元解密对应的片段数据封包的该加密数据。

3.如权利要求1的接收装置,其中该控制器根据该至少一顺序信息的每一者所载的封包编号判断是否将该至少一片段负载数据合并;若该至少一片段数据封包的一第一片段数据封包与一第二片段数据封包的封包编号为不连续,该控制器控制该传输引擎分别将该第一片段数据封包的一第一片段负载数据与该第二片段数据封包的一第二片段负载数据存储至该系统存储器的不同的存储空间。

4.如权利要求3的接收装置,其中若该第一片段数据封包与该第二片段数据封包的封包编号为不连续,该控制器控制该数据存储器分别将该第一片段数据封包的一第一片段封包标头与该第二片段数据封包的一第二片段封包标头存储至该数据存储器的不同的存储空间。

5.如权利要求1的接收装置,其中该控制器根据该至少一顺序信息的每一者所载的封包编号判断是否将该至少一片段负载数据合并;若该至少一片段数据封包的一第一片段数据封包与一第二片段数据封包的封包编号为连续,该控制器控制该传输引擎将该第一片段数据封包的一第一片段负载数据与该第二片段数据封包的一第二片段负载数据合并并存储至该系统存储器的一存储空间。

6.如权利要求5的接收装置,其中若该第一片段数据封包与该第二片段数据封包的封包编号为连续,该控制器将该第一片段数据封包的一第一片段封包标头与该第二片段数据封包的一第二片段封包标头合并,并将合并后的封包标头存储至该数据存储器的一存储空间。

7.如权利要求1的接收装置,其中该标头处理单元将该至少一QUIC私密标头及该至少一封包信息写回该数据存储器,借以更新对应的片段封包标头,其中该封包信息包括该片段数据封包的一校对和、一封包长度、一片段负载数据长度及一位元组偏移的至少其中一者。

8.如权利要求1的接收装置,其中当该控制器检测到该至少一片段封包标头包括一结束位元时,该至少一片段封包标头包括该结束位元且该数据存储器中无未合并的片段封包标头时,或该至少一片段封包标头包括该结束位元且该系统存储器中无未合并的片段负载数据时,该控制器控制该传输引擎将该封包标头输出至该系统存储器。

9.如权利要求1的接收装置,其中当该接收装置接收该至少一片段数据封包的其中一者经过一预定时间而没有收到下一个片段数据封包,该控制器控制该传输引擎将该数据存储器中的该至少一片段封包标头输出至该系统存储器。

10.一种封包处理方法,适用于一接收装置,该接收装置用以接收至少一片段数据封包,并预处理该至少一片段数据封包成一数据封包,该封包处理方法包括:步骤A:接收至少一片段数据封包,并自该至少一片段数据封包的片段封包标头取出至少一片段封包标头信息;

步骤B:存储该至少一片段封包标头至该接收装置的一数据存储器;

步骤C:选择性地对每一片段数据封包的一加密数据进行解密,以获得至少一QUIC私密标头以及至少一片段负载数据,其中该至少一QUIC私密标头包括该至少一片段数据封包的顺序信息;

步骤D:将该至少一片段负载数据输出至一系统存储器的至少一特定位置;

步骤E:根据该至少一QUIC私密标头计算至少一封包信息,并更新该数据存储器的至少一片段封包标头,以产生一封包标头;

步骤F:根据该至少一顺序信息将该封包标头输出至该系统存储器,以将该封包标头以及该至少一片段负载数据组合成该数据封包。

说明书 :

接收装置及其封包处理方法

技术领域

[0001] 本案涉及一种接收装置,且特别涉及一种支援QUIC(Quick UDP Internet Connection)通信协议的接收装置及其封包处理方法。

背景技术

[0002] QUIC通信协议系一种基于UDP协议的低时延的网路传输层协议。支援QUIC通信协议的通信装置先从其他通信装置接收至少一片段数据封包,并将片段数据封包存储到通信装置的系统存储器。通信装置对每一个片段数据封包进行解密,以获得片段数据封包中所载的负载数据。
[0003] 目前的通信装置系利用通信装置的中央处理器对片段数据封包进行解密,因需解密每一个片段数据封包,中央处理器的使用率将提高,且目前的通信装置需要耗费通信装置的系统存储器的存储空间来存储片段数据封包的标头,造成系统存储器可使用的空间大幅降低。

发明内容

[0004] 本案提供一种预处理片段数据封包成数据封包的接收装置。接收装置包括封包剖析器、数据存储器、解密单元、传输引擎、标头处理单元以及控制器。封包剖析器自片段数据封包的片段封包标头取出片段封包标头信息。数据存储器存储片段封包标头。解密单元选择性地对每一片段数据封包的加密数据进行解密,以获得QUIC私密标头以及片段负载数据。QUIC私密标头包括片段数据封包的顺序信息。传输引擎将片段负载数据输出至系统存储器的至少一特定位置。标头处理单元根据QUIC私密标头计算封包信息,并更新片段封包标头,以产生封包标头。控制器根据顺序信息控制传输引擎将封包标头输出至系统存储器,以将封包标头以及片段负载数据组合成数据封包。
[0005] 本案提供一种封包处理方法。封包处理方法包括以下步骤。步骤A:接收片段数据封包,并自片段数据封包的片段封包标头取出片段封包标头信息。步骤B:存储片段封包标头至接收装置的数据存储器。步骤C:选择性地对每一片段数据封包的加密数据进行解密,以获得QUIC私密标头以及片段负载数据。QUIC私密标头包括片段数据封包的顺序信息。步骤D:将片段负载数据输出至系统存储器的至少一特定位置。步骤E:根据QUIC私密标头计算至少一封包信息,并更新片段封包标头,以产生封包标头。步骤F:根据顺序信息控制传输引擎将封包标头输出至系统存储器,以将封包标头以及片段负载数据组合成数据封包。

附图说明

[0006] 图1是本案一实施例提供的接收装置的系统方块图。
[0007] 图2是本案一实施例提供的片段数据封包的示意图。
[0008] 图3是本案一实施例提供的解密后的片段数据封包的示意图。
[0009] 图4是本案一实施例提供的封包处理方法的流程图。
[0010] 图5A~5B是本案一实施例提供的处理片段数据封包的示意图。
[0011] 其中,附图标记说明如下:
[0012] 10:接收装置
[0013] 11:系统存储器
[0014] 100:封包剖析器
[0015] 101:数据存储器
[0016] 102:解密单元
[0017] 103:传输引擎
[0018] 104:标头处理单元
[0019] 105:控制器
[0020] 2_1、2_2、2_3、2_1’、2_2’、2_3’:片段数据封包
[0021] 20_1、20_2、20_3、20_1’、20_2’、20_3’:IP标头
[0022] 21_1、21_2、21_3、21_1’、21_2’、21_3’:UDP标头
[0023] 22_1、22_2、22_3、22_1’、22_2’、22_3’:QUIC公开标头
[0024] 23_1、23_2、23_3:加密数据
[0025] 24_1、24_2、24_3:QUIC私密标头
[0026] 25_1、25_2、25_3:片段负载数据
[0027] 26_1、26_2、26_3:片段封包标头
[0028] S401~S416:步骤

具体实施方式

[0029] 参阅图1,图1是本案一实施例提供的接收装置10的系统方块图。接收装置10包括封包剖析器100、数据存储器101、解密单元102、传输引擎103、标头处理单元104与控制器105。数据存储器101耦接封包剖析器100、解密单元102、传输引擎103、标头处理单元104与控制器105。解密单元102耦接传输引擎103、标头处理单元104与控制器105。传输引擎103耦接控制器105与系统存储器11。标头处理单元104耦接控制器105。
[0030] 接收装置10设置于任何可支援QUIC通信协议的通信装置。接收装置10从其他的通信装置接收至少一片段数据封包,并预处理片段数据封包成数据封包。系统存储器11可为任一种存储媒体,设置于上述通信装置中,用以存储接收装置10输出的数据封包。
[0031] 一并参阅图2,图2是本案一实施例提供的片段数据封包的示意图。片段数据封包的结构系由IP标头、UDP标头、QUIC公开标头以及加密数据所组成。IP标头、UDP标头、QUIC公开标头各自包括封包传输过程中需要用到的信息,例如封包大小、来源位址、目的地位址、使用的传输协议等信息。加密数据则包括通信装置欲传输且经加密后的信息。
[0032] 封包剖析器100自片段数据封包取出片段封包标头(此处为IP标头、UDP标头及QUIC公开标头),并根据片段封包标头分析出片段封包标头信息,随后将片段封包标头信息存储于数据存储器101,其中,片段封包标头信息包括封包类型、目的地位址、循环冗余校验码(cyclic redundancy check)的至少其中一者。
[0033] 在一些实施例中,封包剖析器100还根据片段封包标头信息判断对应的片段数据封包是否为QUIC封包。举例来说,封包剖析器100根据封包类型判断对应的片段数据封包是否为QUIC封包,若是,数据存储器101存储此片段封包标头信息;若否(如TCP封包),对应的片段数据封包会由传输引擎103输出至系统存储器11,或是由接收装置10的其他电路(未示出)处理。
[0034] 在一些实施例中,封包剖析器100还可根据片段封包标头信息包含的目的地位址来判断片段数据封包的目的地是否错误,或是根据片段封包标头信息包含的循环冗余校验码判断片段数据封包是否正确地传输,借以决定是否丢弃/删除对应的片段数据封包。
[0035] 数据存储器101例如为任一种存储媒体,用以接收片段数据封包与封包剖析器100输出的片段封包标头信息。在一些实施例中,片段数据封包与片段封包标头信息存储于数据存储器101的相同区块。
[0036] 解密单元102用以选择性地对每一片段数据封包的加密数据进行解密,以获得QUIC私密标头以及片段负载数据。举例来说,若片段数据封包为QUIC封包,解密单元102根据进阶加解密标准(Advanced Encryption Standard)或Salsa20加解密标准对其加密数据进行解密,并输出解出的QUIC私密标头至标头处理单元104,以及输出片段负载数据至传输引擎103。此外,解密单元102亦可根据解出的QUIC私密标头判断片段数据封包的顺序,进而将顺序的信息输出至控制器105。
[0037] 一并参阅图2~3,图3是本案一实施例提供的解密后的片段数据封包的示意图。解密单元102对加密数据23_1进行解密,以获得QUIC私密标头24_1以及片段负载数据25_1,使得第2图中的片段数据封包可被视为图3所示的片段数据封包。其中,以片段数据封包2_1’为例,IP标头20_1’、UDP标头21_1’、QUIC公开标头22_1’与QUIC私密标头24_1定义为片段封包标头26_1,其中,IP标头20_1’、UDP标头21_1’、QUIC公开标头22_1’系IP标头20_1、UDP标头21_1、QUIC公开标头22_1经标头处理单元104更新过后的数据(细节详述如下)。
[0038] 同理,解密单元102分别对加密数据23_2及加密数据23_3进行解密,图2的片段数据封包2_2、2_3将可视为图3的片段数据封包2_2’、2_3’。
[0039] 传输引擎103根据控制器105的输出将片段负载数据输出至系统存储器11的特定位置。在一些实施例中,传输引擎103更可将封包剖析器100判断为非QUIC封包的片段数据封包输出至系统存储器11。
[0040] 在一些实施例中,解密单元102解密后的片段负载数据亦可先写回数据存储器101,待接收装置10预处理片段数据封包成数据封包后,再将完整数据封包写回系统存储器
11。
[0041] 标头处理单元104用以根据QUIC私密标头更新数据存储器101的片段封包标头。进一步来说,标头处理单元104根据QUIC私密标头及原数据存储器101的IP标头、UDP标头及QUIC公开标头计算更新后的IP校对和(checksum)、UDP校对和、封包长度、片段负载数据长度及位元组偏移(byte offset)的至少其中一者,并将计算出的封包信息覆写至数据存储器101的IP标头、UDP标头及QUIC公开标头的对应位置,将QUIC私密标头写回至数据存储器101中,借以产生数据存储器101的片段封包标头。值得注意的是,当数据存储器101的片段封包标头更新完毕后(即无接续的片段数据封包),或是当片段封包标头完成一段时间或一定次数的更新后,数据存储器101的更新完后的片段封包标头可视为一封包标头。
[0042] 控制器105可例如为微控制器,用以接收标头处理单元104计算出的封包信息及解密单元102输出的顺序信息(如封包编号),并根据顺序信息控制传输引擎103将封包标头及至少一片段负载数据输出至系统存储器11。至于控制器105如何控制其他元件将于下方段落配合图4做详细说明。
[0043] 系统存储器11可为任一种存储媒体,用以存储封包标头以及片段负载数据。
[0044] 一并参阅图4,图4是本案一实施例提供的封包处理方法的流程图。封包处理方法适用于接收装置10。于步骤S401,封包剖析器100与数据存储器101接收一片段数据封包,封包剖析器100自片段数据封包取出片段封包标头信息。
[0045] 于步骤S402,封包剖析器100根据片段封包标头信息判断片段数据封包是否为QUIC封包。若是,进入步骤S403。若否,片段数据封包由传输引擎104传输至系统存储器11,并回到步骤S401。
[0046] 于步骤S403,数据存储器101存储片段封包标头信息。
[0047] 于步骤S404,解密单元102对片段数据封包的加密数据进行解密,以获得QUIC私密标头以及片段负载数据。解密单元102将QUIC私密标头输出至标头处理单元104,并将片段负载数据输出至传输引擎103。
[0048] 于步骤S405,控制器105判断片段负载数据是否为控制数据,控制数据可能系由其他通信装置传输给此通信装置执行特定动作的命令。若片段负载数据为控制数据,进入步骤S406。若片段负载数据并非控制数据,进入步骤S407。
[0049] 于步骤S406,传输引擎103将控制数据输出至系统存储器11,而标头处理单元104根据QUIC私密标头更新数据存储器101内的片段封包标头,并由传输引擎103输出至系统存储器11。
[0050] 于步骤S407,控制器105根据每一个片段数据封包的封包编号判断是否将目前的片段负载数据与系统存储器11存储的其他片段负载数据合并。若控制器105判断此片段负载数据可与其他片段负载数据合并,进入步骤S408。
[0051] 于步骤S408,控制器105控制传输引擎103将片段负载数据依序输出至系统存储器的第一存储空间,其中,第一存储空间为另一片段负载数据的存储空间,另一片段负载数据的封包编号与传输引擎103输出的片段负载数据具有连续的封包编号。
[0052] 于步骤S409,控制器105检测并判断系统存储器11中是否有其他片段负载数据可合并。若系统存储器11中有其他片段负载数据可合并,进入步骤S410。若系统存储器11中没有其他片段负载数据可合并,进入步骤S411。
[0053] 于步骤S410,控制器105通过传输引擎103合并系统存储器11的片段负载数据。
[0054] 于步骤S411,数据存储器101根据QUIC私密标头及数据存储器中101的片段封包标头更新片段封包标头。
[0055] 回到步骤S407,若控制器105判断片段负载数据无法与系统存储器11中的其他片段负载数据合并,进入步骤S412。
[0056] 于步骤S412,控制器105控制传输引擎13将片段负载数据25_3存储至系统存储器11的第二存储空间,其中,第二存储空间为系统存储器11中未使用的存储空间。
[0057] 于步骤S413,标头处理单元104根据QUIC私密标头计算片段数据封包的校对和、封包长度、片段负载数据长度及位元组偏移的至少其中一者,并更新至数据存储器101的片段封包标头。
[0058] 于步骤S414,控制器105判断是否结束合并流程。若是,进入步骤S415。若否,回到步骤S401。
[0059] 于一些实施例中,若控制器105检测到片段封包标头包括结束位元,控制器105判断要结束片段封包合并流程。其中,结束位元仅存在于最后一个片段封包标头,故控制器105可根据结束位元来判断是否收到最后一个片段数据封包。在一些实施例中,由于最后一个片段封包标头可能不是接收装置10最后收到的片段封包标头,故在控制器105检测到片段封包标头包括结束位元且数据存储器101中无其他未合并的片段封包标头,或在控制器
105检测到片段封包标头包括结束位元且系统存储器11中无其他未合并的片段负载数据,控制器105判断要结束片段封包合并流程。
[0060] 于一些实施例中,控制器105可以利用内部的计时器计算收到每一个片段数据封包的间隔时间,或是利用计数器来计算收到了几个片段数据封包,借以判断是否决定结束片段封包合并流程。举例来说,当接收装置10接收一片段数据封包后,经过预定时间而没有收到下一个片段数据封包,控制器105判断要结束片段封包合并流程。反的,若在预定时间内有收到下一片段数据封包,控制器105将判断不结束片段封包合并流程。
[0061] 于步骤S415,传输引擎103将封包标头(即合并完的片段封包标头)输出至系统存储器11,使得控制器105将封包标头与负载数据(即合并完的片段负载数据)组合成数据封包。于步骤S416,控制器105回报封包处理方法已经结束的信息给包含接收装置10的通信装置。
[0062] 举例来说,一并参阅图5A~5B,图5A~5B是本案一实施例提供的处理片段数据封包的示意图。其中图5A~5B仅示出图1的系统存储器11及数据存储器101,借以方便说明图1的接收装置10如何处理如图2所示的三个片段数据封包2_1、2_2、2_3。在本实施例中,接收装置10的接收顺序为片段数据封包2_1、2_3、2_2,其中,三个片段数据封包2_1、2_2、2_3包含的片段负载数据25_1、25_2、25_3均非为控制数据。
[0063] 首先,接收装置10先接收片段数据封包2_1,并经由图4中的步骤S401~S404进行处理,借以产生图3的QUIC私密标头24_1及片段负载数据25_1。由于片段负载数据25_1非为控制数据,且片段数据封包2_1为接收装置10最早接收的片段数据封包,因此,接收装置10将根据步骤S405、S407、S412、S413进行处理,使得片段负载数据25_1及片段封包标头26_1分别存储于系统存储器11及数据存储器101中。在步骤S414,由于片段封包标头26_1未包含结束位元,控制器105将判断片段封包合并流程尚未结束。
[0064] 接着,接收装置10接收片段数据封包2_3,并经由图4中的S401~S404进行处理,借以产生图3的QUIC私密标头24_3及片段负载数据25_3。如图5A所示,由于片段负载数据25_3非为控制数据,且片段数据封包2_1、2_3非为连续的片段数据封包(即片段数据封包2_1、2_3包含的封包编号不连续),因此,接收装置10将根据步骤S405、S407、S412、S413进行处理,使得片段负载数据25_3存储于系统存储器11中的另一存储空间,片段封包标头26_3存储于数据存储器101的另一存储空间。在步骤S414,虽片段封包标头26_3包含结束位元,但于系统存储器11或是数据存储器101均有离散的存储数据,因此控制器105将判断片段封包合并流程尚未结束。
[0065] 随后,接收装置10接收片段数据封包2_2,并经由图4中的S401~S404进行处理,借以产生图3的QUIC私密标头24_2及片段负载数据25_2。如图5B所示,由于片段负载数据25_2非为控制数据,且片段数据封包2_1、2_2为连续的片段数据封包(即片段数据封包2_1、2_2包含的封包编号为连续),因此,接收装置10将根据步骤S405、S407、S408进行处理,以将片段负载数据25_1、25_2合并。接着,在步骤S409中,因系统存储器11包含另一连续的片段负载数据25_3,故接收装置10将系统存储器11的片段负载数据25_3将与片段负载数据25_1、25_2合并,并执行步骤S411以合并片段封包标头26_1、26_2、26_3,合并后的片段封包标头与片段封包标头26_1具有相同的封包长度。
[0066] 最后在步骤S414,由于合并后的片段封包标头(包含片段封包标头26_3的信息)具有结束位元,且系统存储器11或是数据存储器101无离散的存储数据,因此控制器105将判断片段封包合并流程结束,使得控制器105将控制传输引擎103,以将合并后的封包标头输出至系统存储器11,并回报封包处理方法已经结束的信息给包含接收装置105的通信装置。
[0067] 综上所述,本案实施例所提供的接收装置及其封包处理方法可以透过接收装置对片段数据封包做解密,并预处理片段数据封包成数据封包。只要搭载本案实施例所提供的接收装置,通信装置的中央处理器的工作量可以被减少,进而降低中央处理器的利用率。
[0068] 此外,片段数据封包的片段封包标头系存储于接收装置的数据存储器,故系统存储器不需要花费存储空间来存放每一个片段数据封包的片段封包标头。因此,系统存储器可以释放更多存储空间来存储其他数据,使得系统存储器的存储空间可以更灵活地被运用。