一种以太网报文流量控制方法

文档序号:7866390阅读:384来源:国知局
专利名称:一种以太网报文流量控制方法
技术领域
本发明涉及一种网络控制方法,尤其是涉及一种以太网报文流量控制方法。
背景技术
在网络通信设备中,需要对接入用户的收发速率进行控制,使整个网络正常合理地运行。传统的设计中,将准备通过的报文长度换算成需要花费的时间,然后通过查看时间标尺令牌桶,确定报文是否能够通过。这种设计的精度受CPU系统时钟频率的影响较大。 传统的设计中,流量控制将超过当前速率的报文存入缓存区中,缓冲区报文由定时器发送,那么后期到来的报文有可能在缓存区报文之前发送,这样会导致报文乱序。

发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种高精度、使报文保持有序的以太网报文流量控制方法。本发明的目的可以通过以下技术方案来实现一种以太网报文流量控制方法,该方法首先设定一个字节时间表,当报文进入时,以当前时间标尺为索引,通过查表方式获取该时间标尺内可通过的字节数,然后根据缓存区中报文的状态,判断报文的处理方式通过、存入缓存区或者被丢弃。该方法具体包括以下步骤a.报文进入后,根据上次报文到来时间点和当前的时间点,计算出时间标尺UiTickDiff ;b.以时间标尺UiTickDiff作为索引,从字节时间表auiByteTable中,获取当前时间标尺内可通过的字节数UiByteAvail ;C.将UiByteAvail累加到可通过的总字节数g_uiByteAvail中;d.判断g_UiByteAVail的长度是否大于或等于当前报文的总长度,若是,则进行步骤e,若否,则进入步骤f;e.判断缓存区中是否存在报文,若是,贝U进入步骤f,若否,贝1JWg_uiByteAvail中减去报文的长度,并且允许报文通过,报文处理结束;f.判断缓冲区是否已满,若是,则丢弃报文,报文处理结束,若否,则将报文存入缓存区,报文处理结束。所述的步骤f中将报文存入缓存区后,启动系统定时器,按照当前设置的传输速率来发送缓存区中的报文。所述的字节时间表auiByteTable为数组形式,其索引为时间标尺,每个单元的数值表示对应时间标尺内可通过的字节数。所述的字节时间表中每个单元的数值的计算方式如下对于字节时间表中的第一个单元auiByteTable [I]auiByteTable [I] = ((S*1024)/8)/N,表示单位时间标尺内可通过的字节数,S为当前设置的传输速率,N为字节时间表的单元数目;对于字节时间表中的第i个单元,i = [2,N]auiByteTable [i] = i*auiByteTable[I]。与现有技术相比,本发明具有以下优点I)拥有更高精度的流量控制功能,且受CPU系统时钟频率影响较小;2)本发明提供报文保序机制,确保流量控制前后报文的顺序一致。


图I为本发明的流程示意图。
具体实施例方式下面结合附图和具体实施例对本发明进行详细说明。实施例如图I所示,一种以太网报文流量控制方法,该方法首先设定一个字节时间表,当报文进入时,以当前时间标尺为索引,通过查表方式获取该时间标尺内可通过的字节数,然后根据缓存区中报文的状态,判断报文的处理方式通过、存入缓存区或者被丢弃。该方法具体包括以下步骤在步骤a中,报文进入后,根据上次报文到来时间点和当前的时间点,计算出时间标尺 UiTickDiff ;在步骤b中,以时间标尺UiTickDiff作为索引,从字节时间表auiByteTable中,获取当前时间标尺内可通过的字节数UiByteAvail ; 在步骤c中,将UiByteAvail累加到可通过的总字节数g_uiByteAvail中在步骤d中,判断g_uiByteAvail的长度是否大于或等于当前报文的总长度,若是,则进行步骤e,若否,则进入步骤f ;在步骤e中,判断缓存区中是否存在报文,若是,则进入步骤f,若否,则从g_UiByteAvail中减去报文的长度uiPktLen,并且允许报文通过,报文处理结束;在步骤f中,判断缓冲区是否已满,若是,则丢弃报文,报文处理结束,若否,则将报文存入缓存区,报文处理结束。所述的步骤f中将报文存入缓存区后,启动系统定时器,按照当前设置的传输速率来发送缓存区中的报文。所述的字节时间表auiByteTable为数组形式,其索引为时间标尺,每个单元的数值表示对应时间标尺内可通过的字节数。本实施例中时间标尺的单位为毫秒(ms),字节时间表包含的单元数目为1000,当前设置的传输速率为S kbps,则所述的字节时间表中每个单元的数值的计算方式如下对于字节时间表中的第一个单元auiByteTable [I](第O个单元auiByteTable [O]不使用)auiByteTable [I] = ((S*1024)/8)/1000,表不单位时间标尺(即每一毫秒)内可通过的字节数;对于字节时间表中的第i个单元,i = [2,999]
auiByteTable[i]_i*auiByteTable[I]。 本实施例中时间标尺单位、字节时间表的大小等参数为本发明方案的一个优先实施例,对其进行的修改应当属于本发明方案的保护范围。
权利要求
1.一种以太网报文流量控制方法,其特征在于,该方法首先设定一个字节时间表,当报文进入时,以当前时间标尺为索引,通过查表方式获取该时间标尺内可通过的字节数,然后根据缓存区中报文的状态,判断报文的处理方式通过、存入缓存区或者被丢弃。
2.根据权利要求I所述的一种以太网报文流量控制方法,其特征在于,该方法具体包括以下步骤 a.报文进入后,根据上次报文到来时间点和当前的时间点,计算出时间标尺UiTickDiff ; b.以时间标尺UiTickDiff作为索引,从字节时间表auiByteTable中,获取当前时间标尺内可通过的字节数UiByteAvail ; c.将UiByteAvail累加到可通过的总字节数g_uiByteAvail中; d.判断g_uiByteAvail的长度是否大于或等于当前报文的总长度,若是,则进行步骤e,若否,则进入步骤f; e.判断缓存区中是否存在报文,若是,贝U进入步骤f,若否,贝1JWg_uiByteAvail中减去报文的长度,并且允许报文通过,报文处理结束; f.判断缓冲区是否已满,若是,则丢弃报文,报文处理结束,若否,则将报文存入缓存区,报文处理结束。
3.根据权利要求2所述的一种以太网报文流量控制方法,其特征在于,所述的步骤f中将报文存入缓存区后,启动系统定时器,按照当前设置的传输速率来发送缓存区中的报文。
4.根据权利要求2所述的一种以太网报文流量控制方法,其特征在于,所述的字节时间表auiByteTable为数组形式,其索引为时间标尺,每个单元的数值表示对应时间标尺内可通过的字节数。
5.根据权利要求4所述的一种以太网报文流量控制方法,其特征在于,所述的字节时间表中每个单元的数值的计算方式如下 对于字节时间表中的第一个单元auiByteTable [I] auiByteTable [I] = ((S*1024)/8)/N,表示单位时间标尺内可通过的字节数,S为当前设置的传输速率,N为字节时间表的单元数目; 对于字节时间表中的第i个单元,i = [2, N]auiByteTable[i] = i*auiByteTable[I]。
全文摘要
本发明涉及一种以太网报文流量控制方法,该方法首先设定一个字节时间表,当报文进入时,以当前时间标尺为索引,通过查表方式获取该时间标尺内可通过的字节数,然后根据缓存区中报文的状态,判断报文的处理方式;通过、存入缓存区或者被丢弃。与现有技术相比,本发明具有高精度、使报文保持有序等优点。
文档编号H04L12/861GK102970246SQ20121048344
公开日2013年3月13日 申请日期2012年11月23日 优先权日2012年11月23日
发明者钟华清 申请人:上海寰创通信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1