发明内容
本发明提供了一种基于ECN机制的报文控制方法及设备,在支持ECN机制的发送端降低报文发送速率时,不支持ECN机制的发送端也会降低报文发送速率,从而有效避免接口的网络拥塞。
本发明提供了一种基于明确拥塞通知ECN机制的报文控制方法,应用于包括发送端、接收端、连接发送端与接收端的网络设备的系统中,所述网络设备通过同一出接口发送从两个以上发送端接收的报文,所述两个以上发送端包括一个支持ECN机制的发送端与一个不支持ECN机制的发送端,该方法包括:
当所述出接口满足网络拥塞条件时,所述网络设备从所述出接口转发支持ECN机制与不支持ECN机制的发送端发送的报文,其中所述支持ECN机制的发送端发送的报文内的拥塞标识被修改为CE标识;
所述网络设备存储所述支持ECN机制的发送端发送的报文的TCP连接信息;
所述网络设备监听从所述出接口接收到的ACK报文,判断是否有存储的TCP连接信息与所述ACK报文的TCP连接信息一致;
如果判断结果为是,所述网络设备向所述支持ECN机制的发送端发送所述ACK报文;
如果判断结果为否,所述网络设备复制两份或者两份以上ACK报文并向所述不支持ECN机制的发送端发送,使得所述不支持ECN机制的发送端的TCP连接发送窗口能相应减少。
所述网络设备监听从所述出接口接收到的ACK报文包括:
所述网络设备在预设时间内监听从所述出接口接收到的ACK报文;或者
所述网络设备监听从所述出接口接收到的ACK报文,直到接收到所述支持ECN机制的发送端发送的携带CWR的报文。
在结束对ACK报文的监听后,将所述TCP连接信息保留预先设置的时间后再删除。
一种基于明确拥塞通知ECN机制的报文控制方法,应用于包括发送端、接收端、连接发送端与接收端的网络设备的系统中,所述网络设备通过同一出接口发送从两个以上发送端接收的报文,所述两个以上发送端包括至少一个支持ECN机制的发送端与一个不支持ECN机制的发送端,该方法包括:
当所述出接口满足网络拥塞条件时,所述网络设备从所述出接口转发支持ECN机制的发送端发送的报文,该报文内的拥塞标识被修改为CE标识;
所述网络设备根据预设策略丢弃不支持ECN机制的发送端发送的报文;
所述网络设备向所述不支持ECN机制的发送端转发重复ACK报文,触发所述不支持ECN机制的发送端进入快速恢复过程。
所述网络设备根据预设策略丢弃不支持ECN机制的发送端发送的报文包括:
所述网络设备在预设时间内连续或周期丢弃不支持ECN机制的发送端发送的报文;或者
所述网络设备连续或周期丢弃不支持ECN机制的发送端发送的报文,直到接收到所述支持ECN机制的发送端发送的携带CWR的报文。
一种网络设备,应用于包括发送端、接收端、连接发送端与接收端的网络设备的系统中,所述网络设备通过同一出接口发送从两个以上发送端接收的报文,所述两个以上发送端包括至少一个支持ECN机制的发送端与一个不支持ECN机制的发送端,所述网络设备包括:
第一发送单元,用于当所述出接口满足网络拥塞条件时,从所述出接口转发支持ECN机制与不支持ECN机制的发送端发送的报文,其中支持ECN机制的发送端发送的报文内的拥塞标识被修改为CE标识;
存储单元,用于存储所述支持ECN机制的发送端发送的报文的TCP连接信息;
监听单元,用于监听从所述出接口接收到的ACK报文;
判断单元,用于判断是否有存储的TCP连接信息与所述监听单元监听到的ACK报文的TCP连接信息一致;
复制单元,用于当所述判断单元的判断结果为否时,复制两份或者两份以上ACK报文;
第二发送单元,用于当所述判断单元的判断结果为是时向所述支持ECN机制的发送端发送所述ACK报文;当所述判断单元的判断结果为否时,向不支持ECN机制的发送端发送所述复制单元复制得到的两份或者两份以上ACK报文,使得所述不支持ECN机制的发送端的TCP连接发送窗口能相应减少。
所述监听单元还用于:
在预设时间内监听从所述出接口接收到的ACK报文;或者
监听从所述出接口接收到的ACK报文,直到所述网络设备接收到所述支持ECN机制的发送端发送的携带CWR的报文。
还包括:
删除单元,用于在所述监听单元结束对ACK报文的监听后,经过预先设置的时间再删除所述存储单元存储的TCP连接信息。
一种网络设备,应用于包括发送端、接收端、连接发送端与接收端的网络设备的系统中,所述网络设备通过同一出接口发送从两个以上发送端接收的报文,所述两个以上发送端包括至少一个支持ECN机制的发送端与一个不支持ECN机制的发送端,所述网络设备包括:
第一发送单元,用于当所述出接口满足网络拥塞条件时,从所述出接口转发支持ECN机制的发送端发送的报文,该报文内的拥塞标识被修改为CE标识;
丢弃单元,用于根据预设策略丢弃不支持ECN机制的发送端发送的报文;
第二发送单元,用于向所述不支持ECN机制的发送端转发重复ACK报文,触发所述不支持ECN机制的发送端进入快速恢复过程。
所述丢弃单元还用于:
在预设时间内连续或周期丢弃不支持ECN机制的发送端发送的报文;或者
连续或周期丢弃不支持ECN机制的发送端发送的报文,直到所述网络设备接收到所述支持ECN机制的发送端发送的携带CWR的报文。
与现有技术相比,本发明至少具有以下优点:
本发明中,当网络满足拥塞条件时,网络设备将支持ECN机制的发送端发送的报文内的拥塞标识修改为CE标识,向不支持ECN机制的发送端发送重复ACK报文,从而能够触发支持ECN机制的发送端与不支持ECN机制的发送端进入快速恢复过程,从而避免不支持ECN技术的发送端的TCP连接利用网络拥塞契机不断抢占支持ECN技术的TCP连接的可用带宽。
具体实施方式
下面通过具体实施例来介绍本发明提供的基于ECN机制的报文控制方法。
实施例一
本发明实施例一提供一种基于ECN机制的报文控制方法,该方法应用于图2所示的网络场景,其中,Host A与Host B建立TCP连接,ECN协商结果为支持ECN机制,Host C与Host B建立TCP连接,ECN协商结果为不支持ECN机制。网络设备M的出接口为P。
如图3所示,本发明实施例提供的基于ECN机制的报文控制方法包括以下步骤:
步骤301,网络设备M检测到出接口P满足拥塞条件。
步骤302,网络设备M检测到Host A从出接口P转发的TCP报文中的IP层带有标志ECN(0)或ECN(1),则将该报文段的标识由ECN(0)或ECN(1)修改成CE标识,并存储该报文的TCP连接信息。Host C从出接口P转发的TCP报文中的IP层带有标志00,网络设备M对此不做处理,直接转发。
其中,报文的TCP连接信息包括源IP地址、源端口号、目的IP地址、目的端口号,该TCP连接信息也可以是其他可以唯一标识报文所属的TCP连接的信息,本实施例对此不做限制。
步骤303,网络设备M监听出接口P入方向的TCP ACK报文,若TCP ACK报文带有ECE标识,则执行步骤304;否则,执行步骤205。
其中,ECE标识即TCP报文头中的ECE标志位置1。
步骤304,网络设备M向HostA转发TCPACK报文。
步骤305,网络设备M判断是否有已经存储的TCP连接信息与TCPACK报文的连接信息一致,如果判断结果为是,执行步骤304;如果判断结果为否,执行步骤306。
例如,当TCPACK报文的目的IP地址和源IP地址分别与已存储的连接信息的源IP地址和目的IP地址相同、且TCP ACK报文的入接口和出接口分别与已存储的连接信息的出接口和入接口相同时,网络设备M判定两条连接信息一致。
步骤306,网络设备M将该TCP ACK报文复制2份以上并转发,使得Host C收到3份以上重复的ACK报文,Host C进入快速恢复过程,降低发送窗口。
需要说明,本发明实施例中,网络设备M向发送端发送3份以上重复的ACK报文后,即可以不再监听出接口P入方向的TCP ACK报文。或者,网络设备预设一时间值,在预设时间内监听出接口P入方向的TCP ACK报文,将满足条件的TCP ACK报文复制并发送;该预设时间内网络设备还可以周期性监听出接口P入方向的TCP ACK报文,将满足条件的TCP ACK报文复制并发送。另外,网络设备还可以是否接收到与出接口对应的携带CWR的报文为标准确定是否停止监听出接口P入方向的TCPACK报文,即当接收到与出接口对应的携带CWR的报文后,网络设备停止监听出接口P入方向的TCPACK报文,不再向不支持ECN机制的发送端发送重复ACK报文,而在接收到携带CWR的报文之前,网络设备监听出接口P入方向的TCP ACK报文。
网络设备M停止监听出接口P入方向的TCP ACK报文后,对于存储的TCP报文的连接信息继续保留一段时间后再删除,避免网络出现拥塞->不拥塞->拥塞时反复生成和删除TCP连接信息,该一段时间的具体值可以根据实际需要预先设置。
实施例二
本发明实施例二提供一种基于ECN机制的报文控制方法,应用于图4所示网络场景,如图4所示,该方法包括:
步骤401,网络设备M检测到出接口P满足拥塞条件。
步骤402,网络设备M检测到Host A从出接口P转发的TCP报文中的IP层拥塞标识为ECN(0)或ECN(1),执行步骤403;检测到Host C从出接口P转发的TCP报文中的IP层拥塞标识为00,执行步骤404。
步骤403,网络设备M将Host A发送的报文的拥塞标识由ECN(0)或ECN(1)修改成CE标识,向接收端发送报文。
步骤404,网络设备M根据预设策略丢弃Host C发送的报文。
具体的,网络设备M可以随机丢弃该报文。或者,网络设备M在预设时间内连续或者周期丢弃满足上述条件的报文。或者,在接收到与出接口对应的携带CWR的报文(即Host A发送的携带CWR的报文)之前,网络设备M丢弃满足上述条件的报文,直到接收到与出接口对应的携带CWR的报文。
步骤405,网络设备M转发收到的TCP ACK报文。
对于Host C,由于发送的报文被丢弃,因此Host B向Host C发送重复ACK报文,触发Host C进入快速恢复过程,降低发送窗口。对于Host A,Host B发送携带ECE标识的ACK报文,触发Host B降低报文发送速率。
本发明实施例中,当网络满足拥塞条件时,网络设备将支持ECN机制的发送端发送的报文内的拥塞标识修改为CE标识,向不支持ECN机制的发送端发送重复ACK报文,从而能够避免不支持ECN技术的发送端的TCP连接利用网络拥塞契机不断抢占支持ECN技术的TCP连接的可用带宽,并触发支持ECN机制的发送端与不支持ECN机制的发送端进入快速恢复过程,从而有效解决网络拥塞。
基于与上述方法实施例相同的技术构思,本发明还提供下述装置实施例。
实施例三
本发明实施例三提供一种网络设备,应用于包括发送端、接收端、连接发送端与接收端的网络设备的系统中,所述网络设备通过同一出接口发送从两个以上发送端接收的报文,所述两个以上发送端包括至少一个支持ECN机制的发送端与一个不支持ECN机制的发送端,如图5所示,所述网络设备包括:
第一发送单元11,用于当所述出接口满足网络拥塞条件时,从所述出接口转发支持ECN机制与不支持ECN机制的发送端发送的报文,其中支持ECN机制的发送端发送的报文内的拥塞标识被修改为CE标识;
存储单元12,用于存储所述支持ECN机制的发送端发送的报文的TCP连接信息;
监听单元13,用于监听从所述出接口接收到的ACK报文;
判断单元14,用于判断是否有存储的TCP连接信息与所述监听单元13监听到的ACK报文的TCP连接信息一致;
复制单元15,用于当所述判断单元的判断结果为否时,复制两份或者两份以上ACK报文;
第二发送单元16,用于当所述判断单元14的判断结果为是时向所述支持ECN机制的发送端发送所述ACK报文;当所述判断单元14的判断结果为否时,向不支持ECN机制的发送端发送所述复制单元15复制得到的两份或者两份以上ACK报文,使得所述不支持ECN机制的发送端的TCP连接发送窗口能相应减少。
所述判断单元14还用于:
判断所述ACK报文内是否携带ECE标识;
如果所述ACK报文内携带有ECE标识,则通知所述第二发送单元向所述支持ECN机制的发送端发送所述ACK报文;
如果所述ACK报文内没有携带ECE标识,判断是否有存储的TCP连接信息与所述ACK报文的TCP连接信息一致。
所述监听单元13还用于:
在预设时间内监听从所述出接口接收到的ACK报文;或者
监听从所述出接口接收到的ACK报文,直到所述网络设备接收到所述支持ECN机制的发送端发送的携带CWR的报文。
还包括:
删除单元17,用于在所述监听单元结束对ACK报文的监听后,经过预先设置的时间再删除所述存储单元存储的TCP连接信息。
实施例四
本发明实施例四提供一种网络设备,应用于包括发送端、接收端、连接发送端与接收端的网络设备的系统中,所述网络设备通过同一出接口发送从两个以上发送端接收的报文,所述两个以上发送端包括至少一个支持ECN机制的发送端与一个不支持ECN机制的发送端,如图6所示,所述网络设备包括:
第一发送单元21,用于当所述出接口满足网络拥塞条件时,从所述出接口转发支持ECN机制的发送端发送的报文,该报文内的拥塞标识被修改为CE标识;
丢弃单元22,用于根据预设策略丢弃不支持ECN机制的发送端发送的报文;
第二发送单元23,用于向所述不支持ECN机制的发送端转发重复ACK报文,触发所述不支持ECN机制的发送端进入快速恢复过程。
所述丢弃单元22还用于:
在预设时间内连续或周期丢弃不支持ECN机制的发送端发送的报文;或者
连续或周期丢弃不支持ECN机制的发送端发送的报文,直到所述网络设备接收到所述支持ECN机制的发送端发送的携带CWR的报文。
本发明实施例中,当网络满足拥塞条件时,网络设备将支持ECN机制的发送端发送的报文内的拥塞标识修改为CE标识,向不支持ECN机制的发送端发送重复ACK报文,从而能够避免不支持ECN技术的发送端的TCP连接利用网络拥塞契机不断抢占支持ECN技术的TCP连接的可用带宽,并触发支持ECN机制的发送端与不支持ECN机制的发送端进入快速恢复过程,从而有效解决网络拥塞。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。