一种数据流传输方法与流程

文档序号:12132042阅读:312来源:国知局
一种数据流传输方法与流程

本发明涉及通信技术领域,具体涉及一种数据流传输方法。



背景技术:

对于数据中心,网路拥塞一直是应用中需要面对的问题。特别是越来越多新型数据中心采用大量相对廉价的交换机代替传统的昂贵且不易扩展的设备后,核心层和汇聚层的交换网路变得更加复杂,数据拥塞更是亟待解决的问题。

造成数据拥塞的原因有多种,最主要是存在多对一的情况(比如,图1中核心层和汇聚层之间)。现有的一些路径选择等技术可以减少这种情况发生,但无法完全避免。

现有提高带宽利用率的技术大多为基于软件的压缩技术,缺点为:1)需要占用较多的处理器(CPU)运算时间和带宽;2)性能往往不如基于硬件的压缩技术;3)一台网络设备的多个端口同时进行压缩/解压缩时,处理器的带宽和运算能力会成为瓶颈(如图2示例)。



技术实现要素:

为此,本发明提出一项基于硬件的,在相邻两台网络设备数据链路上对数据流进行传输的方法,通过提高数据带宽的利用率,从而缓解数据拥塞的情况。

具体方案如下:

一种数据流传输方法,包括步骤:

接收端判断数据流是否需要被压缩,若是,则建立有效映射关系,将需要压缩的数据流写入映射表,映射表存储在发送端和接收端,若否,则不建立有效映射关系;

发送端通过查询映射表判断当前数据流是否能被压缩,若是,则用可被压缩数据流在映射表中对应的索引来压缩该数据流,并发送压缩后的数据流,若否,则直接发送未被压缩数据流;

接收端接收发送端发送的数据流,判断接收到的数据流是否为被压缩的数据流,若是,则在被压缩数据流中提取映射表的索引,并通过查询映射表获取被压缩数据流内容,从而解压缩数据流,若否,则不需要解压缩数据流;

接收端判断数据流是否不再需要被压缩,若是,则将映射表中相应的映射关系设为无效,若否,则保持该映射关系为有效。

进一步的,所述的接收端判断数据流是否需要被压缩,若是,则建立有效映射关系,将需要压缩的数据流写入映射表,映射表存储在发送端和接收端,若否,则不建立有效映射关系具体包括:

接收端查询映射表判断映射表是否具有该数据流内容,若否且映射表存在空数据存储位,则将该数据流内容写入映射表;

获取接收到该数据流内容的频率;

比较接收到该数据流内容的频率与预设的第一阈值的大小,若接收到该数据流内容的频率大于预设的第一阈值,则数据流需要被压缩,否则不需要被压缩;

若数据流需要被压缩,则将映射表中的相应映射关系设为有效,若数据流不需要被压缩,则该映射关系无效,对应的映射表中的数据存储位仍可用于建立新的映射关系;

发送端映射表建立与接收端同样的映射关系。

进一步的,所述的发送端映射表建立与接收端同样的映射关系的具体方法是:

接收端发送注册包至发送端,注册包包含需要压缩的数据流内容以及映射表的索引;

发送端收到注册包后,将需要压缩的数据流内容写入映射表相应索引处;

发送端发送ACK包给接收端。

进一步的,所述的用可被压缩数据流在映射表中对应的索引来压缩该数据流的具体方法是:

用索引值替换需要压缩数据流内容;

在被压缩数据流中设置相应标志位或者标志段,用预先设定的不同值,来区分被压缩数据流和未被压缩数据流。

进一步的,所述的判断接收到的数据流是否为被压缩的数据流的具体方法是:

根据接收到的数据流中上述标志位或者标志段的值,判断是否为被压缩数据流。

进一步的,所述的接收端判断数据流是否不再需要被压缩的具体方法是:

接收端检测映射表各数据存储位对应的压缩数据内容传输的频率,并比较各个压缩数据内容传输频率与预设的第二阈值的大小,若某个压缩数据内容传输频率小于预设的第二阈值,则将接收端映射表中该压缩数据内容对应的数据存储位设为空,即将相应的映射关系设为无效;

将发送端映射表中该压缩数据内容对应的数据存储位设为空。

进一步的,所述的将发送端映射表中该压缩数据内容对应的数据存储位设为空的具体方法是:

接收端发送注销包至发送端;

发送端收到注销包后,将发送端的映射表的数据存储位设为空,停止压缩该数据流的数据包,并发送ACK包给接收端;

接收端收到ACK包后,也将接收端的映射表的相应栏设为空。

其中,所述的压缩数据流内容包括但不限于源MAC地址、目的MAC地址、源IP地址、目的IP地址、TCP源端口地址和TCP目的端口地址。

优选的,所述存储发送端映射表的存储介质是寄存器或者三态内容寻址存储器,所述存储接收端映射表的存储介质是寄存器或者静态随机存取存储器。

本发明的有益效果如下:通过不断更新的映射表,形成自适应机制对数据流进行压缩传输,极大提升了压缩效果以及传输效率,在数据包长度较短时,压缩效果明显;在链路两端MAC电路之间自动进行,对上层软件透明,所以数据包不需要送到处理器就能完成压缩和解压缩,与基于软件的压缩技术相比,该技术不需要处理器参与;一台网络设备的多个端口可以同时进行压缩和解压缩,而基于软件的压缩技术由于需要处理器参与,在多个端口同时进行压缩或解压缩时,处理器带宽和运算能力都可能成为瓶颈。

附图说明

图1为Fat Tree网络拓扑结构示意图;

图2为多个端口同时进行压缩/解压缩的示意图;

图3为以太网帧结构示意图;

图4为IP首部结构示意图;

图5为TCP首部结构示意图;

图6为一实施例映射表;

图7为以太网数据包格式示意图;

图8为压缩后的以太网数据包示意图;

图9为压缩和解压缩的整体结构图;

图10为注册流程图;

图11为注销流程图。

具体实施方式

为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。现结合附图和具体实施方式对本发明进一步说明。

本发明的压缩技术依据如下:以TCP/IP协议来举例,在实际的应用中,两个终端之间的一个数据流会持续一段时间。同一个数据流中的数据包(如图3所示的以太网帧)有很多栏位是一致的,比如以太网首部中的源/目的MAC地址、IP首部(图4)中的部分栏位、以及TCP首部(图5)中的部分栏位。如果相邻两台设备之间能建立相同的映射表,将相同的数据栏位(较长)用标签位(较短)代替,那就能在相邻两台设备间实现数据压缩与解压缩,从而提高带宽利用率。映射表由硬件来实现,通过查对应的映射表,可以快速有效的实现数据的压缩和解压缩。

基于上述的压缩依据,本发明提出一种数据流传输方法,包括步骤:

接收端判断数据流是否需要被压缩,若是,则建立有效映射关系,将需要压缩的数据流写入映射表,映射表存储在发送端和接收端,若否,则不建立有效映射关系;

发送端通过查询映射表判断当前数据流是否能被压缩,若是,则用可被压缩数据流在映射表中对应的索引来压缩该数据流,并发送压缩后的数据流,若否,则直接发送未被压缩数据流;

接收端接收发送端发送的数据流,判断接收到的数据流是否为被压缩的数据流,若是,则在被压缩数据流中提取映射表的索引,并通过查询映射表获取被压缩数据流内容,从而解压缩数据流,若否,则不需要解压缩数据流;

接收端判断数据流是否不再需要被压缩,若是,则将映射表中相应的映射关系设为无效,若否,则保持该映射关系为有效。

进一步的,所述的接收端判断数据流是否需要被压缩,若是,则建立有效映射关系,将需要压缩的数据流写入映射表,映射表存储在发送端和接收端,若否,则不建立有效映射关系具体包括:

接收端查询映射表判断映射表是否具有该数据流内容,若否且映射表存在空数据存储位,则将该数据流内容写入映射表;

获取接收到该数据流内容的频率;

比较接收到该数据流内容的频率与预设的第一阈值的大小,若接收到该数据流内容的频率大于预设的第一阈值,则数据流需要被压缩,否则不需要被压缩;

若数据流需要被压缩,则将映射表中的相应映射关系设为有效,若数据流不需要被压缩,则该映射关系无效,对应的映射表中的数据存储位仍可用于建立新的映射关系;

发送端映射表建立与接收端同样的映射关系。

进一步的,所述的发送端映射表建立与接收端同样的映射关系的具体方法是:

接收端发送注册包至发送端,注册包包含需要压缩的数据流内容以及映射表的索引;

发送端收到注册包后,将需要压缩的数据流内容写入映射表相应索引处;

发送端发送ACK包给接收端。

进一步的,所述的用可被压缩数据流在映射表中对应的索引来压缩该数据流的具体方法是:

用索引值替换需要压缩数据流内容;

在被压缩数据流中设置相应标志位或者标志段,用预先设定的不同值,来区分被压缩数据流和未被压缩数据流。

进一步的,所述的判断接收到的数据流是否为被压缩的数据流的具体方法是:

根据接收到的数据流中上述标志位或者标志段的值,判断是否为被压缩数据流。

进一步的,所述的接收端判断数据流是否不再需要被压缩的具体方法是:

接收端检测映射表各数据存储位对应的压缩数据内容传输的频率,并比较各个压缩数据内容传输频率与预设的第二阈值的大小,若某个压缩数据内容传输频率小于预设的第二阈值,则将接收端映射表中该压缩数据内容对应的数据存储位设为空,即将相应的映射关系设为无效;

将发送端映射表中该压缩数据内容对应的数据存储位设为空。

进一步的,所述的将发送端映射表中该压缩数据内容对应的数据存储位设为空的具体方法是:

接收端发送注销包至发送端;

发送端收到注销包后,将发送端的映射表的数据存储位设为空,停止压缩该数据流的数据包,并发送ACK包给接收端;

接收端收到ACK包后,也将接收端的映射表的相应栏设为空。

其中,所述的压缩数据流内容包括但不限于源MAC地址、目的MAC地址、源IP地址、目的IP地址、TCP源端口地址和TCP目的端口地址。

优选的,所述存储发送端映射表的存储介质是寄存器或者三态内容寻址存储器,所述存储接收端映射表的存储介质是寄存器或者静态随机存取存储器。

以下为基于本发明方法一实施例的具体实现过程:

同一个数据流中,数据包的源/目的MAC地址(共12字节)、源/目的IP地址(共8字节)、以及TCP源/目的端口地址(共4字节)都是相同的,总共有24字节。通过将这24字节映射到更短的字段,可以实现数据的压缩。具体的映射方法为:根据交换机的一个端口上可能运行的数据流数目,设定一个最多能压缩的数据流数目,比如8。建立一张相应深度为8的映射表,将这24字节内容映射成3比特的索引(index),如图6所示,在本实施例中,SA = 源MAC地址; DA = 目的MAC地址; SIP = 源IP地址; DIP =目的IP地址;SP=TCP源端口地址; DP = TCP目的端口地址,其中,每一组需要被压缩的内容(比如,{SA5, DA5, SIP5, DIP5, SP5, DP5})分别对应一个索引(比如,5)。

表的深度越深,能同时容纳的不同数据流就越多,能被压缩的内容也就越多。但表的深度越深,被压缩内容对应的索引所需的比特位就越多,而且建立表所需的硬件开销也相应更大。需要根据实际应用情况设定最合适的深度。

建立映射表后,下一步是如何用索引来替换需要被压缩的内容,以下举例说明一种替换方式:

图7为以太网数据包格式。其中源MAC地址有个特点,即多播地址不可以作为源MAC地址。正常的数据包都不会违反这个规定。利用这个特点,我们可以通过让压缩后的数据包违反这个规定,从而使得接收端能分辨出经过压缩的数据包和未经压缩的数据包。

举例来说,如果原始的数据包满足{SA5, DA5, SIP5, DIP5, SP5, DP5},映射表中对应的索引为5。那数据包经过压缩之后可以变成如图8所示的以太网数据包,其中,前导码、帧开始符:保持不变;目的MAC地址:前面5字节可以填充任意数值,最后1字节插入索引(0x05);源MAC地址:保留1字节,第一比特位为’1’即可,如0xFF。这样就违反了源MAC地址不能为多播地址的规定,从而接收端就能辨认出这是压缩后的数据包;长度/类型:保持不变;负载:原始数据中扣除源/目的IP地址(SIP5/DIP5),以及TCP源/目的端口地址(SP5、DP5);校验:保持不变。

通过这个变换,数据包长度缩短了17字节。原始数据包越短,压缩效果越明显。

图9是压缩和解压缩的整体结构图。发送端(TX端)的映射表因为需要将被压缩内容和表中的每一项内容进行比较,需要用寄存器或者TCAM实现。接收端(RX端)因为只需要根据索引读取被压缩内容,所以可以用寄存器或者SRAM实现。

在发送端,通过查表将 {MAC地址、IP地址、端口地址} 映射到索引,从而压缩数据包。在接收端,通过查表将索引映射到{MAC地址、IP地址、端口地址},恢复(解压缩)成原来的数据包。需要说明的是,压缩功能可以开启或关闭。

结合图10和图11,映射表的具体建立过程如下:

1)当RX端接收到一个具有新的{MAC地址、IP地址、端口地址}组合的数据包,且表格中有空闲时,将这个新的{MAC地址、IP地址、端口地址}写入到映射表中。持续观察一段时间,根据收到具有这个组合的数据包的速率,与一个静态或动态设定的阈值比较,来决定是否需要对该数据流进行压缩。

2)若RX端决定对该数据流进行压缩,则将映射表的该栏设成有效,并发送一个注册包给TX端。注册包包含索引和{MAC地址、IP地址、端口地址}组合。TX端收到注册包后将内容填入到映射表的相应栏中,并回复ACK包给RX端。

3)当一个映射关系在TX端和RX端都写入映射表后,就可以开始对后续的数据包进行压缩和解压缩。

4)在RX端对映射表的每一个栏进行速率检测,若命中某个栏的压缩包速率低于要求(意味着对该数据流进行压缩不再有意义),则发送注销包给TX端。

5)TX端收到注销包后,将映射表的相应栏设为空,停止压缩这个流的数据包。并发送ACK包给RX端。

6)RX端收到注销ACK包后,也将映射表的相应栏设为空。空出来栏可以用来添加新的{MAC地址、IP地址、端口地址}组合。

尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1