著录项信息
专利名称 | 一种网络流量控制方法、装置及局域网系统 |
申请号 | CN201010164946.3 | 申请日期 | 2010-04-30 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2010-09-08 | 公开/公告号 | CN101827033A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L12/801 | IPC分类号 | H;0;4;L;1;2;/;8;0;1;;;H;0;4;L;1;/;0;0查看分类表>
|
申请人 | 北京搜狗科技发展有限公司 | 申请人地址 | 北京市海淀区中关村东路1号院9号楼搜狐网络大厦9层01房间
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京搜狗科技发展有限公司 | 当前权利人 | 北京搜狗科技发展有限公司 |
发明人 | 孙卓;蒋又新 |
代理机构 | 北京集佳知识产权代理有限公司 | 代理人 | 逯长明;王宝筠 |
摘要
本发明公开了一种网络流量控制方法、装置及局域网系统,其中,所述方法包括:监测新到来的待发送上行数据包;当满足需要进行流量控制的触发条件时,按照以下方式对所述待发送上行数据包进行流量控制:当所述待发送上行数据包为来自预置的高优先级网络应用的第一上行数据包时,将所述第一上行数据包加入到上行发送缓存队列;当所述待发送上行数据包为来自预置的非高优先级网络应用的第二上行数据包时,根据当前的带宽占用情况,判断是否允许发送所述第二上行数据包,如果是,则将所述第二上行数据包加入到上行发送缓存队列,否则将所述第二上行数据包丢弃。通过本发明,能够降低个别网络应用对其他网络应用的影响。
1.一种网络流量控制方法,其特征在于,包括:
监测新到来的待发送上行数据包;
当满足需要进行流量控制的触发条件时,按照以下方式对所述待发送上行数据包进行流量控制:当所述待发送上行数据包为来自预置的高优先级网络应用的第一上行数据包时,将所述第一上行数据包加入到上行发送缓存队列,所述上行发送缓存队列由上行数据包组成;当所述待发送上行数据包为来自预置的非高优先级网络应用的第二上行数据包时,根据当前的带宽占用情况,判断是否允许发送所述第二上行数据包,如果是,则将所述第二上行数据包加入到上行发送缓存队列,否则将所述第二上行数据包丢弃;
所述根据当前的带宽占用情况,判断是否允许发送所述第二上行数据包,包括:获得本机上行发送缓存队列的当前水位值;其中,所述当前水位值为:上一统计时刻获得的水位值与从所述上一统计时刻到当前统计时刻流出的数据量之差;所述流出的数据量为:所述上一统计时刻到当前统计时刻的时间差与数据量流出速率之积;判断所述当前水位值与所述第二上行数据包所占数据量之和是否小于预置的水位阈值,如果是,则允许发送所述第二上行数据包;其中,所述数据量流出速率及预置的水位阈值根据实际网络环境的数据包上传速率确定;或,
所述方法还包括:将预置时间段设置为一个时间片,滑动窗口内包括多个时间片,每经过一个时间片将所述滑动窗口向后移动一个时间片;所述当所述待发送上行数据包为来自预置的高优先级网络应用的第一上行数据包时还包括:将所述第一上行数据包所占数据量加入到所述监测时刻所在的时间片中;所述根据当前的带宽占用情况,判断是否允许发送所述第二上行数据包包括:获得所述滑动窗口内当前各时间片中的总数据量;判断所述总数据量与所述第二上行数据包所占数据量之和是否小于预置的数据量阈值,如果是,则允许发送所述第二上行数据包,并将所述第二上行数据包所占数据量加入到对应的时间片中;其中,所述数据量阈值根据实际网络环境的数据包上传速率确定。
2.根据权利要求1所述的方法,其特征在于,所述非高优先级网络应用包括多个优先级级别,各个优先级级别具有不同的预置水位阈值;所述判断所述当前水位值与所述第二上行数据包所占数据量之和是否小于预置的水位阈值包括:
确定所述第二上行数据包的优先级级别及该优先级级别对应的水位阈值;
判断所述当前水位值与所述第二上行数据包所占数据量之和是否小于该优先级级别对应的水位阈值。
3.根据权利要求1或2所述的方法,其特征在于,当所述待发送上行数据包为来自预置的高优先级网络应用的第一上行数据包时,还包括:
降低所述数据量流出速率,以便提高所述获得的当前水位值。
4.根据权利要求3所述的方法,其特征在于,还包括:
如果从降低所述数据量流出速率时起的第一预置时间段内,没有监测到所述第一上行数据包,则按照预置的速率恢复步长,恢复所述数据量流出速率。
5.根据权利要求1、2或4任一项所述的方法,其特征在于,还包括:
如果从监测到第一上行数据包时起的第二预置时间段内,没有监测到新到来的所述第一上行数据包,则将所述数据量流出速率提高到预置的足够大的值。
6.根据权利要求1所述的方法,其特征在于,所述当满足需要进行流量控制的触发条件时包括:
当监测到有所述第一上行数据包需要发送时,则满足需要进行流量控制的触发条件;
和/或,
当接收局域网内的服务器或者其他终端发送的流量控制触发消息时,则满足需要进行流量控制的触发条件。
7.一种网络流量控制装置,其特征在于,包括:
监测单元,用于监测新到来的待发送上行数据包;
流量控制单元,用于当满足需要进行流量控制的触发条件时,按照以下方式对所述待发送上行数据包进行流量控制:当所述待发送上行数据包为来自预置的高优先级网络应用的第一上行数据包时,将所述第一上行数据包加入到上行发送缓存队列,所述上行发送缓存队列由上行数据包组成;当所述待发送上行数据包为来自预置的非高优先级网络应用的第二上行数据包时,根据当前的带宽占用情况,判断是否允许发送所述第二上行数据包,如果是,则将所述第二上行数据包加入到上行发送缓存队列,否则将所述第二上行数据包丢弃;
所述流量控制单元包括:水位值获得子单元,用于获得上行发送缓存队列的当前水位值;其中,所述当前水位值为:上一统计时刻获得的水位值与从所述上一统计时刻到当前统计时刻流出的数据量之差;所述流出的数据量为:所述上一统计时刻到当前统计时刻的时间差与数据量流出速率之积;水位值判断子单元,用于判断所述当前水位值与所述第二上行数据包所占数据量之和是否小于预置的水位阈值,如果是,则允许发送所述第二上行数据包;其中,所述数据量流出速率及预置的水位阈值根据实际网络环境的数据包上传速率确定;或,
所述装置还包括滑动窗口移动单元,用于将预置时间段设置为一个时间片,滑动窗口内包括多个时间片,每经过一个时间片将所述滑动窗口向后移动一个时间片;所述流量控制单元包括:数据量更新子单元,用于将所述第一上行数据包所占数据量加入到所述监测时刻所在的时间片中;数据量获得子单元,用于获得所述滑动窗口内当前各时间片中的总数据量;数据量判断子单元,用于判断所述总数据量与所述第二上行数据包所占数据量之和是否小于预置的数据量阈值,如果是,则允许发送所述第二上行数据包,并将所述第二上行数据包所占数据量加入到对应的时间片中;其中,所述数据量阈值根据实际网络环境的数据包上传速率确定。
8.根据权利要求7所述的装置,其特征在于,所述非高优先级网络应用包括多个优先级级别,各个优先级级别具有不同的预置水位阈值;所述水位值判断子单元包括:
优先级确定子单元,用于确定所述第二上行数据包的优先级级别及该优先级级别对应的水位阈值;
判断子单元,用于判断所述当前水位值与所述第二上行数据包所占数据量之和是否小于该优先级级别对应的水位阈值。
9.根据权利要求7或8所述的装置,其特征在于,当所述待发送上行数据包为来自预置的高优先级网络应用的第一上行数据包时,还包括:
流速调整单元,用于降低所述数据量流出速率,以便提高所述获得的当前水位值。
10.根据权利要求9所述的装置,其特征在于,还包括:
流速恢复单元,用于如果从降低所述数据量流出速率时起的第一预置时间段内,没有监测到所述第一上行数据包,则按照预置的速率恢复步长,恢复所述数据量流出速率。
11.根据权利要求7、8或10任一项所述的装置,其特征在于,还包括:
流速提高单元,用于如果从监测到第一上行数据包时起的第二预置时间段内,没有监测到新到来的所述第一上行数据包,则将所述数据量流出速率提高到预置的足够大的值。
12.根据权利要求7所述的装置,其特征在于,所述流量控制单元包括:
第一触发单元,用于当监测到有所述第一上行数据包需要发送时,则触发对所述待发送上行数据包进行流量控制;
和/或,
第二触发单元,用于当接收局域网内的服务器或者其他终端发送的流量控制触发消息时,则触发对所述待发送上行数据包进行流量控制。
13.一种局域网系统,至少包括第一终端及第二终端,其特征在于:
所述第一终端包括:监测单元,用于监测所述第一终端的待发送上行数据包;通信单元,用于当满足需要进行流量控制的触发条件时,向所述第二终端发送流量控制触发消息;
所述第二终端包括:流量控制单元,用于接收到所述流量控制触发消息后,按照以下方式对所述第二终端的待发送上行数据包进行流量控制:当所述待发送上行数据包为来自预置的高优先级网络应用的第一上行数据包时,将所述第一上行数据包加入到上行发送缓存队列,所述上行发送缓存队列由上行数据包组成;当所述待发送上行数据包为来自预置的非高优先级网络应用的第二上行数据包时,根据当前的带宽占用情况,判断是否允许发送所述第二上行数据包,如果是,则将所述第二上行数据包加入到上行发送缓存队列,否则将所述第二上行数据包丢弃;
所述流量控制单元包括:水位值获得子单元,用于获得上行发送缓存队列的当前水位值;其中,所述当前水位值为:上一统计时刻获得的水位值与从所述上一统计时刻到当前统计时刻流出的数据量之差;所述流出的数据量为:所述上一统计时刻到当前统计时刻的时间差与数据量流出速率之积;水位值判断子单元,用于判断所述当前水位值与所述第二上行数据包所占数据量之和是否小于预置的水位阈值,如果是,则允许发送所述第二上行数据包;其中,所述数据量流出速率及预置的水位阈值根据实际网络环境的数据包上传速率确定;或,
所述第二终端还包括滑动窗口移动单元,用于将预置时间段设置为一个时间片,滑动窗口内包括多个时间片,每经过一个时间片将所述滑动窗口向后移动一个时间片;所述流量控制单元包括:数据量更新子单元,用于将所述第一上行数据包所占数据量加入到所述监测时刻所在的时间片中;数据量获得子单元,用于获得所述滑动窗口内当前各时间片中的总数据量;数据量判断子单元,用于判断所述总数据量与所述第二上行数据包所占数据量之和是否小于预置的数据量阈值,如果是,则允许发送所述第二上行数据包,并将所述第二上行数据包所占数据量加入到对应的时间片中;其中,所述数据量阈值根据实际网络环境的数据包上传速率确定。
14.根据权利要求13所述的局域网系统,其特征在于,所述通信单元包括:
条件判断子单元,用于当监测到所述第一终端有来自预置的高优先级网络应用的第一上行数据包需要发送时,确定满足需要进行流量控制的触发条件;
发送子单元,用于向所述第二终端发送流量控制触发消息。
15.一种局域网系统,包括至少两个终端,其特征在于,还包括服务器,其中,所述服务器包括:监测单元,用于监测所述局域网系统内各终端的待发送上行数据包;
通信单元,用于当满足需要进行流量控制的触发条件时,向所述局域网系统内的终端发送流量控制触发消息;
所述终端包括:流量控制单元,用于接收到所述流量控制触发消息后,按照以下方式对所述各自的待发送上行数据包进行流量控制:当所述待发送上行数据包为来自预置的高优先级网络应用的第一上行数据包时,将所述第一上行数据包加入到上行发送缓存队列,所述上行发送缓存队列由上行数据包组成;当所述待发送上行数据包为来自预置的非高优先级网络应用的第二上行数据包时,根据当前的带宽占用情况,判断是否允许发送所述第二上行数据包,如果是,则将所述第二上行数据包加入到上行发送缓存队列,否则将所述第二上行数据包丢弃;
所述流量控制单元包括:水位值获得子单元,用于获得上行发送缓存队列的当前水位值;其中,所述当前水位值为:上一统计时刻获得的水位值与从所述上一统计时刻到当前统计时刻流出的数据量之差;所述流出的数据量为:所述上一统计时刻到当前统计时刻的时间差与数据量流出速率之积;水位值判断子单元,用于判断所述当前水位值与所述第二上行数据包所占数据量之和是否小于预置的水位阈值,如果是,则允许发送所述第二上行数据包;其中,所述数据量流出速率及预置的水位阈值根据实际网络环境的数据包上传速率确定;或,
所述终端还包括滑动窗口移动单元,用于将预置时间段设置为一个时间片,滑动窗口内包括多个时间片,每经过一个时间片将所述滑动窗口向后移动一个时间片;所述流量控制单元包括:数据量更新子单元,用于将所述第一上行数据包所占数据量加入到所述监测时刻所在的时间片中;数据量获得子单元,用于获得所述滑动窗口内当前各时间片中的总数据量;数据量判断子单元,用于判断所述总数据量与所述第二上行数据包所占数据量之和是否小于预置的数据量阈值,如果是,则允许发送所述第二上行数据包,并将所述第二上行数据包所占数据量加入到对应的时间片中;其中,所述数据量阈值根据实际网络环境的数据包上传速率确定。
16.根据权利要求15所述的局域网系统,其特征在于,所述通信单元包括:
条件判断子单元,用于当监测到所述某终端有来自预置的高优先级网络应用的第一上行数据包需要发送时,确定满足需要进行流量控制的触发条件;
发送子单元,用于向所述局域网系统内的终端发送流量控制触发消息。
一种网络流量控制方法、装置及局域网系统\n技术领域\n[0001] 本发明涉及通信技术领域,特别是涉及一种网络流量控制方法、装置及局域网系统。\n背景技术\n[0002] 在ADSL(Asymmetric Diqital Subscriber Line,非对称数字用户环路)等带宽有限的网络环境中,有些网络应用(比如常见的P2P应用,包括流媒体、BT下载等)通常会占用大量的上行下行带宽,导致其它的网络应用请求阻塞或者受到干扰。\n[0003] 现有技术采用的带宽调度方法有多种,其中一种方法是在网卡端进行控制。例如,对于上行带宽,预先设置上行带宽限制阈值,将拦截到的上行数据包存入上行数据缓存队列,每拦截到一个上行数据包时,判断上行数据缓存队列中的数据包所占带宽是否超过预置的上行带宽限制阈值,如果超过,则将该拦截到的上行数据包丢弃,否则,将该上行数据包加入到上行缓存队列中等待发送。这样,使得上行缓存队列中的数据包始终保持在上行带宽限制阈值内。对于下行带宽,也采用类似的方法进行控制。\n[0004] 但是,对于下行数据包而言,由于先到达调制解调器,再到达网卡,而主要的网络带宽瓶颈在于调制解调器(通常下行速率都是1-2M),而不是网卡(目前一般都采用1000M网卡),因此,在该现有技术中,通过在网卡端进行的下行带宽调度,无法解决下行数据阻塞问题。对于上行数据包而言,虽然能够避免上行数据的阻塞,但是无法控制下行数据包对下行带宽的占用,同样可能会造成下行数据阻塞;例如,当上行数据缓存队列中包含大量的P2P应用数据时(虽然可能已经被丢弃了一部分),那么下行带宽仍然可能会被P2P应用的下行数据包占满,使得其他网络应用无法接收到下行数据。可见,该现有技术无法避免个别网络应用对其他网络应用的影响。\n发明内容\n[0005] 本发明提供一种网络流量控制方法、装置及局域网系统,能够降低个别网络应用对其他网络应用的影响。\n[0006] 本发明提供了如下方案:\n[0007] 一种网络流量控制方法,包括:\n[0008] 监测新到来的待发送上行数据包;\n[0009] 当满足需要进行流量控制的触发条件时,按照以下方式对所述待发送上行数据包进行流量控制:当所述待发送上行数据包为来自预置的高优先级网络应用的第一上行数据包时,将所述第一上行数据包加入到上行发送缓存队列,所述上行发送缓存队列由上行数据包组成;当所述待发送上行数据包为来自预置的非高优先级网络应用的第二上行数据包时,根据当前的带宽占用情况,判断是否允许发送所述第二上行数据包,如果是,则将所述第二上行数据包加入到上行发送缓存队列,否则将所述第二上行数据包丢弃。\n[0010] 优选的,所述根据当前的带宽占用情况,判断是否允许发送所述第二上行数据包,包括:\n[0011] 获得本机上行发送缓存队列的当前水位值;其中,所述当前水位值为:上一统计时刻获得的水位值与从所述上一统计时刻到当前统计时刻流出的数据量之差;所述流出的数据量为:所述上一统计时刻到当前统计时刻的时间差与数据量流出速率之积;\n[0012] 判断所述当前水位值与所述第二上行数据包所占数据量之和是否小于预置的水位阈值,如果是,则允许发送所述第二上行数据包;其中,所述数据量流出速率及预置的水位阈值根据实际网络环境的数据包上传速率确定。\n[0013] 优选的,所述非高优先级网络应用包括多个优先级级别,各个优先级级别具有不同的预置水位阈值;所述判断所述当前水位值与所述第二上行数据包所占数据量之和是否小于预置的水位阈值包括:\n[0014] 确定所述第二上行数据包的优先级级别及该优先级级别对应的水位阈值;\n[0015] 判断所述当前水位值与所述第二上行数据包所占数据量之和是否小于该优先级级别对应的水位阈值。\n[0016] 优选的,当所述待发送上行数据包为来自预置的高优先级网络应用的第一上行数据包时,还包括:\n[0017] 降低所述数据量流出速率,以便提高所述获得的当前水位值。\n[0018] 优选的,还包括:\n[0019] 如果从降低所述数据量流出速率时起的第一预置时间段内,没有监测到所述第一上行数据包,则按照预置的速率恢复步长,恢复所述数据量流出速率。\n[0020] 优选的,还包括:\n[0021] 如果从监测到第一上行数据包时起的第二预置时间段内,没有监测到新到来的所述第一上行数据包,则将所述数据量流出速率提高到预置的足够大的值。\n[0022] 优选的:将预置时间段设置为一个时间片,滑动窗口内包括多个时间片,每经过一个时间片将所述滑动窗口向后移动一个时间片;\n[0023] 所述当所述待发送上行数据包为来自预置的高优先级网络应用的第一上行数据包时还包括:将所述第一上行数据包所占数据量加入到所述监测时刻所在的时间片中;\n[0024] 所述根据当前的带宽占用情况,判断是否允许发送所述第二上行数据包包括:获得所述滑动窗口内当前各时间片中的总数据量;判断所述总数据量与所述第二上行数据包所占数据量之和是否小于预置的数据量阈值,如果是,则允许发送所述第二上行数据包,并将所述第二上行数据包所占数据量加入到对应的时间片中;其中,所述数据量阈值根据实际网络环境的数据包上传速率确定。\n[0025] 优选的,所述当满足需要进行流量控制的触发条件时包括:\n[0026] 当监测到有所述第一上行数据包需要发送时,则满足需要进行流量控制的触发条件;和/或,\n[0027] 当接收局域网内的服务器或者其他终端发送的流量控制触发消息时,则满足需要进行流量控制的触发条件。\n[0028] 一种网络流量控制装置,包括:\n[0029] 监测单元,用于监测新到来的待发送上行数据包;\n[0030] 流量控制单元,用于当满足需要进行流量控制的触发条件时,按照以下方式对所述待发送上行数据包进行流量控制:当所述待发送上行数据包为来自预置的高优先级网络应用的第一上行数据包时,将所述第一上行数据包加入到上行发送缓存队列,所述上行发送缓存队列由上行数据包组成;当所述待发送上行数据包为来自预置的非高优先级网络应用的第二上行数据包时,根据当前的带宽占用情况,判断是否允许发送所述第二上行数据包,如果是,则将所述第二上行数据包加入到上行发送缓存队列,否则将所述第二上行数据包丢弃。\n[0031] 优选的,所述流量控制单元包括:\n[0032] 水位值获得子单元,用于获得上行发送缓存队列的当前水位值;其中,所述当前水位值为:上一统计时刻获得的水位值与从所述上一统计时刻到当前统计时刻流出的数据量之差;所述流出的数据量为:所述上一统计时刻到当前统计时刻的时间差与数据量流出速率之积;\n[0033] 水位值判断子单元,用于判断所述当前水位值与所述第二上行数据包所占数据量之和是否小于预置的水位阈值,如果是,则允许发送所述第二上行数据包;其中,所述数据量流出速率及预置的水位阈值根据实际网络环境的数据包上传速率确定。\n[0034] 优选的,所述非高优先级网络应用包括多个优先级级别,各个优先级级别具有不同的预置水位阈值;所述水位值判断子单元包括:\n[0035] 优先级确定子单元,用于确定所述第二上行数据包的优先级级别及该优先级级别对应的水位阈值;\n[0036] 判断子单元,用于判断所述当前水位值与所述第二上行数据包所占数据量之和是否小于该优先级级别对应的水位阈值。\n[0037] 优选的,当所述待发送上行数据包为来自预置的高优先级网络应用的第一上行数据包时,还包括:\n[0038] 流速调整单元,用于降低所述数据量流出速率,以便提高所述获得的当前水位值。\n[0039] 优选的,还包括:\n[0040] 流速恢复单元,用于如果从降低所述数据量流出速率时起的第一预置时间段内,没有监测到所述第一上行数据包,则按照预置的速率恢复步长,恢复所述数据量流出速率。\n[0041] 优选的,还包括:\n[0042] 流速提高单元,用于如果从监测到第一上行数据包时起的第二预置时间段内,没有监测到新到来的所述第一上行数据包,则将所述数据量流出速率提高到预置的足够大的值。\n[0043] 优选的,还包括:滑动窗口移动单元,用于将预置时间段设置为一个时间片,滑动窗口内包括多个时间片,每经过一个时间片将所述滑动窗口向后移动一个时间片;\n[0044] 所述流量控制单元包括:数据量更新子单元,用于将所述第一上行数据包所占数据量加入到所述监测时刻所在的时间片中;数据量获得子单元,用于获得所述滑动窗口内当前各时间片中的总数据量;数据量判断子单元,用于判断所述总数据量与所述第二上行数据包所占数据量之和是否小于预置的数据量阈值,如果是,则允许发送所述第二上行数据包,并将所述第二上行数据包所占数据量加入到对应的时间片中;其中,所述数据量阈值根据实际网络环境的数据包上传速率确定。\n[0045] 优选的,所述流量控制单元包括:\n[0046] 第一触发单元,用于当监测到有所述第一上行数据包需要发送时,则触发对所述待发送上行数据包进行流量控制;\n[0047] 和/或,\n[0048] 第二触发单元,用于当接收局域网内的服务器或者其他终端发送的流量控制触发消息时,则触发对所述待发送上行数据包进行流量控制。\n[0049] 一种局域网系统,至少包括第一终端及第二终端,\n[0050] 所述第一终端包括:监测单元,用于监测所述第一终端的待发送上行数据包;通信单元,用于当满足需要进行流量控制的触发条件时,向所述第二终端发送流量控制触发消息;\n[0051] 所述第二终端包括:流量控制单元,用于接收到所述流量控制触发消息后,按照以下方式对所述第二终端的待发送上行数据包进行流量控制:当所述待发送上行数据包为来自预置的高优先级网络应用的第一上行数据包时,将所述第一上行数据包加入到上行发送缓存队列,所述上行发送缓存队列由上行数据包组成;当所述待发送上行数据包为来自预置的非高优先级网络应用的第二上行数据包时,根据当前的带宽占用情况,判断是否允许发送所述第二上行数据包,如果是,则将所述第二上行数据包加入到上行发送缓存队列,否则将所述第二上行数据包丢弃。\n[0052] 优选的,所述通信单元包括:\n[0053] 条件判断子单元,用于当监测到所述第一终端有来自预置的高优先级网络应用的第一上行数据包需要发送时,确定满足需要进行流量控制的触发条件;\n[0054] 发送子单元,用于向所述第二终端发送流量控制触发消息。\n[0055] 一种局域网系统,包括至少两个终端,还包括服务器,其中,\n[0056] 所述服务器包括:监测单元,用于监测所述局域网系统内各终端的待发送上行数据包;通信单元,用于当满足需要进行流量控制的触发条件时,向所述局域网系统内的终端发送流量控制触发消息;\n[0057] 所述终端包括:流量控制单元,用于接收到所述流量控制触发消息后,按照以下方式对所述各自的待发送上行数据包进行流量控制:当所述待发送上行数据包为来自预置的高优先级网络应用的第一上行数据包时,将所述第一上行数据包加入到上行发送缓存队列,所述上行发送缓存队列由上行数据包组成;当所述待发送上行数据包为来自预置的非高优先级网络应用的第二上行数据包时,根据当前的带宽占用情况,判断是否允许发送所述第二上行数据包,如果是,则将所述第二上行数据包加入到上行发送缓存队列,否则将所述第二上行数据包丢弃。\n[0058] 优选的,所述通信单元包括:\n[0059] 条件判断子单元,用于当监测到所述某终端有来自预置的高优先级网络应用的第一上行数据包需要发送时,确定满足需要进行流量控制的触发条件;\n[0060] 发送子单元,用于向所述局域网系统内的终端发送流量控制触发消息。\n[0061] 根据本发明提供的具体实施例,本发明公开了以下技术效果:\n[0062] 本发明通过对上行数据包的发送进行控制,使得高优先级网络应用的上行数据包全部可以加入到上行发送缓存队列等待发送,而低优先级网络应用的数据包只有在带宽允许的情况下才会被发送,如果带宽不允许则将其丢弃。这样,由于可以将低优先级网络应用的上行数据包丢弃一部分或者全部丢弃,因此,低优先级网络应用的上行数据包会让出一部分上行带宽,使得高优先级网络应用的上行数据包优先发送出去,避免低优先级网络应用的上行数据包对上行带宽的抢占;同时,由于低优先级网络应用的上行数据包被丢弃了一部分或者是全部,因此,针对该低优先级网络应用的下行数据包由于收不到应答而减少发送或不发送,因此,低优先级网络应用也会让出一部分下行带宽,从而间接地保证了高优先级网络应用下行链路的畅通。可见,通过网络应用优先级的划分,以及对低优先级上行数据包发送情况的控制,可以降低个别网络应用对其他网络应用的影响。\n附图说明\n[0063] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。\n[0064] 图1是本发明实施例提供的方法的流程图;\n[0065] 图2是本发明实施例提供的装置的示意图;\n[0066] 图3是本发明实施例提供的局域网系统的示意图;\n[0067] 图4是本发明实施例提供的另一局域网系统的示意图。\n具体实施方式\n[0068] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。\n[0069] 在本发明实施例中,可以根据实际情况需要对网络应用进行不同优先级的划分。\n需要说明的是,具体哪些网络应用划分为高优先级,哪些划分为非高优先级,是根据实际情况需要而定的,而且可以调整,所以,本发明实施例对如何划分网络应用的不同优先级没有限制。下面给出的一种优先级划分,仅仅是一种示例。例如,可以将浏览器、即时通信软件等网络应用划分为高优先级,将其他的对数据实时性要求较低、并且对网络带宽的需求较大、容易对其他网络应用造成影响的网络应用(如P2P等)确定为非高优先级。然后,在进行流量控制过程中,对不同优先级的网络应用的上行数据包进行区别对待,以降低个别网络应用对其他网络应用的影响。\n[0070] 例如,对于非高优先级网络应用的上行数据包,可以根据当前的带宽占用情况进行控制,如果当前带宽已经被占用很多,则将其上行数据包丢弃;但是,对于高优先级网络应用的上行数据包,则不会被丢弃;这样可以使得非高优先级的网络应用让出一部分上行带宽,保证高优先级网络应用的上行数据包能够发出;同时,由于丢弃了部分非高优先级的上行数据包,因此针对该非高优先级网络应用的下行数据包也会相应的减少,使得非高优先级网络应用也可以让出一部分下行带宽,使得高优先级网络应用能够接收到网络对端发送的下行数据。\n[0071] 总之,本发明实施例在需要进行网络流量控制时,通过对上行数据包的发送进行控制,使得高优先级网络应用的上下行链路都得到优化,降低个别网络应用对其他网络应用的影响。下面通过具体的实施例对如何对上行数据包进行控制进行详细地介绍。\n[0072] 实施例一\n[0073] 首先需要说明的是,对于上行数据包而言,由于是先到达网卡,再经调制解调器发送到网络中,而网卡的上传速率远大于调制解调器的上传速率,因此,在网卡处存在一个缓存器,用于缓存已经到达网卡但尚未被调制解调器发送的上行数据包,缓存器中的上行数据包组成上行缓存队列。基于上述特点,在本发明实施例一中,可以预先设置一个参数:上行发送缓存队列的水位值,该水位值相当于是缓存器中的当前各个上行数据包所占数据量(所占数据单位数目,如字节数、比特数等)的总和,由于缓存器中的上行数据包在不断地上传,因此,调制解调器的上传速率S’相当于是数据量的流出速率S。\n[0074] 同时,还可以根据当前所处的网络环境设置一水位阈值N。通常情况下,N的取值可以与调制解调器的上传速率相关,例如,当用户使用1Mbps的带宽时,则理论上个人用户所能独享的最大上传速率为512Kbps(即调制解调器的最大上传速率),将比特换算为字节之后,该最大上传速率为64Kbytes/s。由于实际应用中会有一些损耗,因此实际的上传速率可能无法达到该理论上的最大值,因此,本发明实施例中的水位阈值可以取略小于\n64Kbytes的值,例如可以取40Kbytes等。\n[0075] 然后,就可以按照上述设置对上行数据包的发送进行控制了。具体的,可以预先设定各网络应用的优先级,对上行数据包进行监测,并判断各个数据包来自于哪个网络应用及其优先级;当发现有高优先级的网络应用需要上传数据包时,则启动数据包的流量控制策略。例如,来自高优先级的网络应用的上行数据包(为便于描述,本文将来自高优先级的网络应用的上行数据包称为第一上行数据包)可以不进行处理,直接加入到上行缓存队列中等待发送,同时更新水位值,即在当前水位值的基础上加上该数据包所占数据量;而对于来自非高优先级的网络应用的上行数据包(为便于描述,下文将来自非高优先级的网络应用的上行数据包称为第二上行数据包)则需要进行一定的处理,判断是否可以被发送,如果可以,则将其加入到上行缓存队列中等待发送,同时更新水位值;否则,将其丢弃,即该数据包不会加入到网卡的缓存器中,水位值也不会更新。\n[0076] 其中,上述判断过程可以按照以下步骤进行:\n[0077] 步骤1:当监测到一个第二上行数据包时,利用公式(1)计算当前水位L:\n[0078] L=L1-(T-T1)*S (1)\n[0079] 其中,L1为上一统计时刻的水位值;\n[0080] T为当前的时间;\n[0081] T1为上一统计时刻的时间;\n[0082] S为数据量的流出速率。\n[0083] 其中,S可以取为调制解调器的上传速率S’。可见,(T-T1)*S代表从上一统计时刻到当前统计时刻流出的数据量,因此,利用上一统计时刻的水位值减去该流出的数据量,就得到上行发送缓存队列的当前水位值。\n[0084] 步骤2:利用上述计算出的当前水位值加上当前监测到的第二上行数据包的大小,将所得结果与预先设置的水位阈值进行比较,如果小于该水位阈值,则该第二上行数据包可以被发送,否则,将该第二上行数据包丢弃。\n[0085] 之所以按照上述方式进行判断,是因为,当前水位值没有达到水位阈值时,则意味着来自高优先级网络应用的第一上行数据包可能比较少,相应的,该高优先级网络应用所需的上下行带宽也比较小,如果仅保留第一上行数据包,则会造成可用带宽的浪费。因此,为了提高上下行带宽的利用率,可以在上行发送缓存队列的当前水位值比较小时,允许上传一些第二上行数据包,将空闲的带宽利用起来。\n[0086] 按照上述方法进行控制之后,如果第二上行数据包都被丢弃,则对高优先级的网络应用不会造成任何影响,并且即使上述允许发送出去部分第二上行数据包,甚至这部分第二上行数据包为P2P等对下行带宽需求较高的网络应用的数据包,也不会对高优先级的网络应用造成太大的影响。这是因为:假设需要发送的下行数据大小共为a,而发送这些数据时通常会被分为多个数据包,发送第一个下行数据包时通常是在收到下载该数据的请求之后进行的,之后每发送一个下行数据包时,需要在接收到针对上一个下行数据包的反馈之后,才会继续后续下行数据包的发送。例如,如果使用TCP/IP协议进行数据传输,则协议中规定,每一个下行数据包,都需要有acknowledqe(ACK)消息的回传,也就是说,传输的下行数据包,需要接收到对方发送的一个代表收到数据包的消息回复之后,才能决定后面的传输速度,或者决定是否重新传输遗失的数据包。换言之,虽然P2P等网络应用可能会占用较大的下行带宽,但是在传输下行数据包的过程中,需要不断地接收上行的反馈数据包,因此,如果上行的反馈数据包丢失,则上次发送的下行数据包可能会进行两三次重传尝试,如果仍未收到针对反馈数据包,则可能就不再发送了,直到再次接收到请求数据包时,再继续进行剩余下行数据包的发送。\n[0087] 而利用上述方法,由于第一上行数据包会全部进入到上行发送缓存队列中,因此,随着第一上行数据包的增加,上行发送缓存队列水位值可能会不断上升,根据公式(1)进行判断时,能够被发送的第二上行数据包会越来越少。也即,使得非高优先级网络应用的对端接收不到所需的上行数据包,下行数据包也就不会发送,或者接收到的很少,只能发送少量的下行数据包,因此,也就不会占用太多的下行带宽,从而避免对高优先级网络应用造成太大的影响。\n[0088] 例如,假设某时刻监测到一个P2P的上行数据包P′1(假设该数据包为针对已经接收到的下行数据包P1的ACK数据包),按照前述方法判断时,结果是能够被发送,因此将该数据包P′1发送出去;对端在接收到该上行数据包P′1之后,会发送下一个下行数据包P2,此时P2P网络应用占用的下行带宽为该下行数据包P2占用的带宽;客户端的网络应用在接收到该下行数据包P2之后,需要针对此次接收生成一个ACK数据包P′2,并通过上行通道返回给对端。此时,仍然会监测该上行数据包P′2并判断是否能够发送;由于从监测到P′1到监测到P′2这一过程中,可能已经将多个第一上行数据包加入了上行发送缓存队列中,因此上行发送缓存队列的当前水位可能会高于监测到P′1时的水位,所以,判断的结果可能是该第二上行数据包P′2不能够被发送,从而将其丢弃。这样,网络对端无法接收到第二上行数据包P′2,重传多次后仍然无法收到ack,即认为此连接失效,不再发送下行数据包P3、P4等。当然,每个数据包的大小可能是不同的,因此,到监测到P′2时,即使上行发送缓存队列的水位没有上升,也是有可能被丢弃的,这里不再赘述。\n[0089] 如前文所述,第二上行数据包P′2如果被丢弃,则网络对端可能会进行几次重传,相应的,P2P也会针对每次接收到的P2重新生成ACK数据包P′2,并尝试通过上行链路发送到网络对端;而本发明实施例也每次都会监测ACK数据包并进行判断,如果上行发送缓存队列的水位一直比较高,则该数据包就一直不会被发送,如果过一段时间之后,上行发送缓存队列的水位有所下降,该上行数据包P′2可能会被发送出去,相应的,对端会发送下行数据包P3,以此类推。这里需要说明的是,按照本发明实施例的方法,上行发送缓存队列的水位是否下降取决于高优先级网络应用实际产生的上行数据包的数量,如果第一上行数据包较多,则证明高优先级网络应用需要占用较多的带宽,同时上行发送缓存队列可能一直保持在较高的水位,甚至还可能会上升,相应的,第二上行数据包将不会发送;反之,如果第一上行数据包并不是非常多,则证明高优先级网络应用对带宽的需求并不是很多,可能会产生空闲的带宽,同时上行发送缓存队列的水位可能会有所下降,此时,可以允许一部分第二上行数据包的发送。可见,这部分第二上行数据包的发送是在带宽有空闲的情况下进行的,因此并不会对高优先级的网络应用造成太大的影响。\n[0090] 总之,利用上述方法,如果高优先级网络应用需要的带宽较多,则自动将非高优先级网络应用的数据包丢弃;当高优先级网络应用需要的带宽较少时,又可以自动允许一部分非高优先级网络应用的上行数据包的发送。因此,可以在保证高优先级的网络应用的不会受到非高优先级网络应用太大影响的同时,还能够有效地利用空闲的带宽,提高上下行带宽的利用率。\n[0091] 实施例二\n[0092] 在前述实施例一中,网络应用被分为高优先级和非高优先级两种,在实际应用中,还可以将非高优先级网络应用划分为多个优先级级别,其中,高优先级的网络应用同样可以是不论水位值是多少都不丢弃,各级别的非高优先级网络应用,可以分别设定各自的水位阈值。每监测到一个非高优先级的数据包时,可以根据其优先级级别对应的水位阈值判断是否可以被发送。\n[0093] 例如,可以将网络应用划分为A、B、C三个级别,其中,A为高优先级,B、C为非高优先级,并且B的优先级高于C的优先级。因此,A级网络应用的数据包无论水位值多少都不丢弃,B级网络应用的水位阈值可以设为实施例一所述的40Kbytes,C级网络应用由于优先级最低,应该最先被丢弃,因此,其水位阈值应该低于B级网络应用的水位阈值,例如可以设定为B级水位阈值的90%。因此,当监测到一个A级数据包时,不用进行判断,直接加入到发送队列中,并更新水位值;当监测到一个B级数据包时,在按照公式(1)计算出当前水位值之后,再加上该B级数据包所占数据量,所得结果如果大于40Kbytes,则丢弃,否则加入到发送队列,并更新水位值;当监测到一个C级数据包时,在按照公式(1)计算出当前水位值之后,再加上该C级数据包的大小,所得结果如果大于40*90%=36Kbytes,则丢弃,否则加入到发送队列,并更新水位值。\n[0094] 其中,具体对网络应用进行优先级进行划分时,可以按照网络应用对带宽的需求或者业务的实时性要求等预先设置好的,例如,通常可以将浏览器、网络游戏等网络应用设为高优先级(A级),电子邮件客户端等设为中等优先级(B级),而P2P应用则设为最低优先级(C级)。当然,也可以由用户根据自己的需求或者使用习惯等进行排序,本发明实施例可以提供相应的入口,以便用户对网络应用进行优先级设置。\n[0095] 总之,通过该实施例二,各种网络应用可以分为多个级别进行上行数据包的控制,进一步增加了灵活性。\n[0096] 实施例三\n[0097] 在前述实施例一及实施例二中,设定水位阈值之后都是固定不变的,而在该实施例三中,为了在高优先级网络应用的第一上行数据包到来之后,更快地限制非高优先级网络应用的上行数据包的上传,采用了流速调整策略,下面对此进行详细地介绍。\n[0098] 首先需要说明的是,本发明实施例所使用水位值、数据量的流出速率等均为虚拟的概念,即这些值都是在监测到第二上行数据包时,用来计算并判断是否需要丢弃该第二上行数据包的。虽然水位阈值、流出速率等的取值可能与实际的调制解调上传速率有关,但是,当为了控制某些第二上行数据包的上传而改变这些值时,并不影响实际的速率。也即,本发明实施例所述流速调整,是指对参与计算数据量的流出速率进行调整,实际的调制解调器的上传速率是不会改变的(实际上,调制解调器的上传速率取决于调制解调器的物理特性,是无法改变的)。例如,当需要将数据量的流出速率调整为当前实际上传速率的一半时,用于计算的数据量的流出速率会下降(例如,变为32Kbytes/s),相应的,计算出的当前水位值会增大(相当于水位会上升);但是,调制解调器实际的上传速率是不变的,仍为\n64Kbytes/s(在没有损耗的情况下)。也就是说,本发明实施例中用于计算的上行发送缓存队列的水位值,与网卡处实际的缓存器中的数据包所占的数据量可以是不同的。\n[0099] 在本发明实施例三中,为了在第一上行数据包到来之后,更快地限制非高优先级网络应用的第二上行数据包的上传,则当监测到一个第一上行数据包时,可以减小数据量的流出速率S,例如,可以取为当前流出速率的一半。其中,在首次进行调整时,当前流出速率通常可以取为调制解调器的实际上传速率S’,即S=S’/2。此时,当监测到第二上行数据包时,利用公式(1)计算出的当前水位值,相对于调整前会增大,但是水位阈值是不变的,因此,计算出来能够被发送的第二上行数据包就变小了。也就是说,当第二上行数据包到来时,提升了上行发送缓存队列的水位,这样,即使按照提升前的水位进行计算时,该第二上行数据包可能是可以被发送的,但是当提升了水位之后,由于该数据包所占数据量及水位阈值都不变,因此,判断的结果可能会变为该第二上行数据包不能被发送。可见,通过该方法可以快速地将第二上行数据包丢弃,进一步保证高优先级网络应用优先使用带宽。\n[0100] 当然,如果将低优先级网络应用分为多个优先级时,调整后的流速也可以仅应用于最低优先级的网络应用,其他级别的网络应用仍使用调整前的流速。例如,当分为A、B、C三个级别时,可以针对C级网络应用使用调整后的流速进行计算,而监测到B级网络应用的第二上行数据包时,可以使用调整前的流速,即仍按照S=S’进行计算。当然,也可以针对不同优先级进行不同粒度的调整,具体的方式这里不再赘述。\n[0101] 由于在监测到一个第一上行数据包之后,下一个第一上行数据包何时到来具有不确定性,甚至可能很长一段时间内都不再有第一上行数据包到来;在这种情况下,如果一直使用流速调整之后的流速对第二上行数据包进行控制,则可能会不利于带宽利用率的提高。为此,在本发明实施例中,在进行流速调整的同时,还可以同时记录一个流速恢复值a,例如,a可以取为S/2,即每执行一次流速恢复,在当前流速的基础上增加S/2。\n[0102] 其中,与流速减小调整相反,流速恢复时相当于是在降低用于计算的上行发送缓存队列的水位,以使得部分第二上行数据包能够被发送。流速恢复的执行可以采用时间触发机制,即可以每隔一段指定时间后就进行一次流速恢复,例如,每秒执行一次,或者每两秒执行一次等。例如,如果每秒执行一次流速恢复,则在进行流速调整之后,开始计时,如果在一秒钟之内没有收到第一上行数据包,则执行流速恢复,如果进行流速调整后的用于计算的流出速率为S=S’/2,a=S/2,则此时用于计算的流出速率恢复为S=S’/2+(S’/2)/2=3S’/4;然后再开始计时,如果一秒钟之后仍没有第一上行数据包到来,则继续执行恢复,将流速恢复为3S’/4+(3S’/4)/2=7S’/8。并且,在用于计算的流出速率恢复到3S’/4之前的一秒钟内,如果接收到第二上行数据包,则用于计算的流出速率为S’/2;在用于计算的流出速率恢复到7S’/8之前的一秒钟内,如果接收到第二上行数据包,则用于计算的流出速率为3S’/4。当然,如果在开始计时后的一秒中内接收到第一上行数据包,则仍然在当前流出速率的基础上进行减小流出速率的调整。\n[0103] 例如,假设当前流出速率为4M,流速调整时取当前流出速率的一半,流速恢复时,每次的恢复值取当前流出速率的一半,每秒执行一次流速恢复;则接收到一个第一上行数据包之后,则可以将用于计算的流出速率调整为2M,同时启动计时,如果第1秒中之内没有接收到第一上行数据包,则将用于计算的流出速率恢复为2+2/2=3M;同时,再启动计时,如果在第2秒中之内没有接收到第一上行数据包,则将用于计算的流出速率继续恢复为\n3+3/2=4.5M,以此类推。当然,如果在上述第1秒内的某时刻监测到一个第一上行数据包,则继续将用于计算的流出速率调整为当前流出速率的一半,即为2/2=1M,并从该时刻起再进行计时,如果1秒中内没有接收到第一上行数据包,则将用于计算的流出速率恢复为1+1/2=2.5M;同样,如果此次恢复后的一秒内的某时刻接收到了第一上行数据包,则将用于计算的流出速率调整为2.5/2=1.25M,以此类推。总之,减速调整以接收到第一上行数据包为触发条件,而流速的恢复以时间及没有接收到第一上行数据包为触发条件。\n[0104] 另外,如果很长一段时间内都没有第一上行数据包发送,或者检测到高优先级的网络应用已经被关闭,则可以直接将用于计算的流出速率S取为一个预置的足够大的值(例如,S=10Mbyte/s),而不用再按照前述恢复的步长恢复。此时,相当于将用于计算的上行发送缓存队列中的水位非常低,所有的上行数据包都能够发送,直到第一上行数据包到来时,再将用于计算的流出速率取为调制解调器的实际上传速率,并在此基础上进行流速调整及后续的流速恢复。\n[0105] 利用上述方法,在第一上行数据包到来时,通过限制流速使得水位升高,快速丢弃一部分第二上行数据包,使得第一上行数据包能够发出不被阻塞;同时,通过丢弃一部分第二上行数据包,下行链路中非高优先级网络应用的下行数据包由于收不到应答会让出下行带宽,因此,间接地方便了高优先级网络应用的下行数据包的传输。另外,在没有高优先级网络应用的数据包的收发时,通过流速恢复策略,使得非高优先级网络应用能够重新占据带宽进行数据包的收发,从而保证总带宽利用率一直处于比较高的状态。\n[0106] 实施例四\n[0107] 在前述各个实施例中,都是以上行发送缓存队列的当前水位值为基础对非高优先级网络应用的上行数据包进行控制,在该实施例中,还可以通过时间片统计来实现对非高优先级网络应用的上行数据包的控制。\n[0108] 例如,将1秒划为20个时间片,待发送的上行数据包的大小加到发送时间对应的时间片中。设置滑动窗口大小始终为20个时间片,滑动窗口中所有时间片对应的数据包的数据量相加即为每秒产生的上行数据量,当新到来一个第二上行数据包时,将滑动窗口内各时间片中的数据包所占的总数据量加上该第二上行数据包所占对的数据量,判断所得之和是否超过了预置的数据量阈值(如40Kbytes),如果是,则将该第二上行数据包丢弃。每隔50毫秒滑动窗口向后移动一个时间片,即等效于发出了一个时间片的流量,同时新进入一个空的时间片,此时滑动窗口内的上行数据量小于50毫秒前的统计值。然后对于到来的第二上行数据包再次判断是否超过预置的数据量阈值,若不超过,则发送,该第二上行数据包所占数据量写入到新进入的时间片中。当然,对于第一上行数据包同样可以是不进行控制,即无论滑动窗口内的当前数据量为多大,都不会被丢弃。\n[0109] 如,从开始进行流量控制的时刻起,75ms后监测到第一个第二上行数据包,则判断该第二上行数据包所占数据量是否超过预置的阈值,如果超过,则丢弃,否则,将该第二上行数据包所占数据量加到第二个时间片中(因为1秒分为20个时间片,因此每个时间片为\n50ms,第75ms属于第二个时间片),再监测到新的第二上行数据包时,则将滑动窗口内当前时间片中的数据包所占数据量的总和,加上该新监测到的第二上行数据包所占数据量,并判断相加结果是否超过预置的数据量阈值,如果超过则丢弃,否则,将该数据包所占数据量加入到对应的时间片中,以此类推;当第20个时间片结束时(即从开始进行流量控制的时刻起满1秒时),将滑动窗口向后移动一个时间片,此时,第一个时间片将移出滑动窗口,同时有一个新的空时间片进入滑动窗口,使得当前滑动窗口中数据包所占数据量的总和为第\n2个时间片到第20个时间片的数据包所占数据量的总和,在这之后的50ms内监测到新的第二上行数据包时,将当前滑动窗口中数据包所占数据量的总和与该新监测到的第二上行数据包所占数据量相加,并判断相加结果是否查过预置数据量阈值,如果超过则丢弃,否则将该第二上行数据包所占数据量加入到当前的第21个时间片中;50ms后再将滑动窗口向后移动一个时间片,此时,当前滑动窗口中数据包所占数据量的总和为第3个时间片到第21个时间片的数据包所占数据量的总和,以此类推。\n[0110] 其中,该数据量阈值根据时间片统计进行控制时,同样可以体现带宽的占用情况。\n例如,当每秒钟产生的上行数据量较少时,则证明对带宽占用的不多,可以允许部分第二上行数据包上传;当每秒钟产生的上行数据量较多时,则证明带宽已经占用地较多了,因此将第二上行数据包丢弃,以免对高优先级网络应用造成影响。\n[0111] 需要说明的是,时间片统计方式与水位值统计方式从本质上讲是相同的,即判断当前待发送的数据量是否已经达到阈值,若达到则丢弃非高优先级网络应用的上行数据包。不同之处在于水位值统计是连续统计,例如可以计算每一毫秒发出多少,比较精确;而时间片统计是一种离散化的统计,前述例子中就是将它离散到50毫秒为一个单位进行计算,如果将它的计算单位无限缩小,其实就趋向于水位值统计了,例如分为1000个时间片,则可以精确到以每一毫秒为一个单位进行计算。\n[0112] 实施例五、前述实施例一至四介绍的各种方法,都是基于一台终端独享一份带宽的情况进行介绍的,即假设某用户申请了1M的带宽,则会分配给该用户一个ADSL入口,如果只有该用户自己的终端通过该ADSL入口接入网络,则该用户的终端独享这1M的带宽。\n[0113] 但是在实际应用中,还可能有这样的情况:多个用户的终端通过同一个ADSL入口接入网络(即多台终端通过路由器接到调制解调器,再通过该调制解调器接收或发送各个用户的上下行数据),此时,这些使用同一个ADSL入口接入网络的各终端组成一个局域网,各终端分享这1M的带宽,即各台终端的下行数据包总和每秒钟不能超过1Mbit,可见,各台终端之间会相互影响,当某终端占用较多带宽时,就意味着其他各终端能够使用的带宽就会有所减少。在这种情况下,当某用户需要使用高优先级的网络应用时,如果该局域网内的其他用户正在使用对带宽占用较大的低优先级的网络应用,即使该用户终端上没有或者限制了低优先级的网络应用,该用户的网络应用都将会受到影响。\n[0114] 为了解决上述问题,该实施例五提出了相应的方法。例如,可以增加一个通信机制,即当某终端上监测到高优先级网络应用的数据包需要发送时,除了在该终端上进行流量控制之外,还可以通知该局域网内的其他终端同时进行流量控制。例如,可以向局域网内的其他各终端广播一个流量控制触发消息,各终端接收到该触发消息之后,就可以各自进行流量控制。又如,还可以向局域网内特定的终端发送流量控制触发消息,其中,特定终端可以是指有非高优先级网络应用正在运行的终端,也就是说,当某终端有高优先级网络应用的数据包需要发送时,可以仅向有非高优先级网络应用正在运行的终端发送流量控制触发消息,通知这些终端进行流量控制。具体实现时,可以使局域网内的其他终端向该终端报告自己的网络应用运行情况,以使得该终端能够知悉局域网内有哪些终端正在运行非高优先级的网络应用;或者也可以在局域网内设置一服务器,由服务器统一获取各终端的网络应用运行情况,并统一发送流量控制触发消息,由接收到流量控制触发消息的终端进行流量控制。\n[0115] 针对在局域网中设置一个服务器的情况,可以由该服务器监测局域网内各个终端的上行数据包发送情况,一旦发现某个终端上有高优先级的第一数据包需要发送,就可以向局域网内的终端发送流量控制触发消息,通知终端进行流量控制,以保证高优先网络应用的正常运行。因此,相当于实现了一种集中控制。\n[0116] 其中,服务器在向局域网内的终端发送流量控制触发消息时,可以采用向各个终端广播的方式,也可以向某些特定的终端发送,具体实现与各终端发送触发消息时相似,这里不再赘述。\n[0117] 需要说明的是,各终端上进行的流量控制是相互独立的,并且各终端上进行的具体的流量控制方法与前述实施例所述大致相同,即每台终端都对本机的上行数据包进行监控,当监控到高优先级网络应用的上行数据包时,直接将该上行数据包加入到上行发送缓存队列;当监控到非高优先级网络应用的上行数据包时,根据当前的带宽占用情况,判断是否允许发送,如果是,则将该上行数据包加入到上行发送缓存队列,否则将该上行数据包丢弃。\n[0118] 具体在判断当前的带宽占用情况时,也可以采用前述实施例中所描述的方法,例如,可以计算本机上行发送缓存队列的当前水位值,然后计算该当前水位值与新监测到的上行数据包的大小之和,如果不超过某预置的水位阈值,则允许发送该数据包,否则将该数据包丢弃。此外,具体的流速调整或者流速恢复方法也都与前述实施例所描述的相同,因此这里不再赘述,具体请参见前述实施例。\n[0119] 与一台终端独享带宽的不同之处仅在于:由于多台终端共享带宽,因此,各台终端上的水位阈值(流速调整前)比一台终端独占带宽时可能会有所降低。具体在设置每台终端的水位阈值时,可以根据实际网络环境的数据包上传速率以及局域网中的终端总数预先设置一个均值,例如,当4台终端共享1M带宽时,每台终端的水位阈值可以预设为40/4=\n10Kbyte/s,这样各台终端在进行流量控制时,以10Kbyte/s为水位阈值进行判断。\n[0120] 在实际应用中,由于一个局域网内的各台终端可能并不是同一时刻都开机,即有些终端可能没有连网,如果采用上述水位阈值分配方法可能会造成带宽的浪费。因此,也可以根据当前连网的终端数目来分配水位阈值,当然,具体分配水位阈值时,可以是平均分配,也可以采用其他的分配方式,比如根据用户的使用习惯进行加权分配等等,这样可以提高灵活性,从而提高带宽利用率。\n[0121] 综合上述各实施例可以看出,参见图1,本发明实施例提供的网络流量控制方法包括以下步骤:\n[0122] S101:监测新到来的待发送上行数据包;\n[0123] S102:当满足需要进行流量控制的触发条件时,按照以下方式对所述待发送上行数据包进行流量控制:当所述待发送上行数据包来自预置的高优先级网络应用时,将所述高优先级网络应用的待发送上行数据包加入到上行发送缓存队列;当所述待发送上行数据包来自预置的非高优先级网络应用时,根据当前的带宽占用情况,判断是否允许发送所述来自非高优先级网络应用的待发送上行数据包,如果是,则将所述来自非高优先级网络应用的待发送上行数据包加入到上行发送缓存队列,否则将所述来自非高优先级网络应用的上行数据包丢弃。\n[0124] 如前文所述,对于一台终端独享带宽的情况,需要进行流量控制的触发条件可以是,监测到本机上有高优先级网络应用的上行数据包需要发送,即,当发现有高优先级网络应用运行时,就可以启动流量控制过程,在流量控制过程中,如果发现有非高优先级网络应用的上行数据包,则按照前文所述的方法判断是否需要丢弃;对于多台终端共享带宽的情况,需要进行流量控制的触发条件可以是,监测到本机上有高优先级网络应用的上行数据包需要发送,或者接收局域网内的服务器或其他终端发送的流量控制触发消息,当然,也有可能在监测到本机上有高优先级网络应用的上行数据包需要发送的同时,接收到局域网内的服务器或其他终端发送的流量控制触发消息,即两个条件同时满足,此时,也采用相同的方法进行流量控制即可。\n[0125] 此外,需要进行流量控制的触发条件也可以不限定在上述两种,在实际应用中,还可以在其他的条件下触发流量控制。例如,可以在监测到本机有高优先级网络应用的上行数据包需要发送之后,判断当前网络是否有拥塞的情况发生,如果发生了拥塞,再触发进行流量控制。其中,判断当前网络是否发生拥塞的方法可以有多种,再例如,对于上行链路而言,如果发现上行数据包发生重传,则可以判断出上行链路发生了拥塞;对于下行链路而言,如果发现下行数据包发生错序,则可以判断出下行链路发生了拥塞。在有高优先级网络应用的数据包需要发送时,无论是上行链路还是下行链路发生拥塞,都可以触发进行流量控制。此外,还可以默认需要进行流量控制的触发条件任何时候都满足,即一直在采用流量控制的方案对数据包进行处理。总之,什么情况下认为是满足需要进行流量控制的触发条件是多样的,可以根据实际情况灵活处理,本实施例对此并没有限制,前述给出的几种情况仅仅是优选的,本领域技术人员可以根据本发明实施例给出的优选例子的提示,结合本领域的技术知识以及实际情况采用其他的具体方式。\n[0126] 需要说明的是,以上触发条件判断方式可以适用于一台终端独享带宽的情况,与也适用于多台终端共享带宽的情况,并且对于后者,无论是由各终端进行判断,还是由服务器进行判断都可以采用该方式。\n[0127] 其中,具体的根据当前的带宽占用情况,判断是否允许发送所述待发送上行数据包的方法,可以基于实施例一到实施例三所描述的水位阈值判断方法进行,也可以基于实施例四描述的时间片统计的方法进行,当然,在其他实施例中,也可以使用其他的方法,或者,将各种方法相结合等等,这里不做限定。\n[0128] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括如下步骤:监测新到来的待发送上行数据包;当满足需要进行流量控制的触发条件时,按照以下方式对所述待发送上行数据包进行流量控制:当所述待发送上行数据包为来自预置的高优先级网络应用的第一上行数据包时,将所述第一上行数据包加入到上行发送缓存队列;当所述待发送上行数据包为来自预置的非高优先级网络应用的第二上行数据包时,根据当前的带宽占用情况,判断是否允许发送所述第二上行数据包,如果是,则将所述第二上行数据包加入到上行发送缓存队列,否则将所述第二上行数据包丢弃。\n所述的存储介质,如:ROM/RAM、磁碟、光盘等。\n[0129] 与本发明实施例提供的流量控制方法相对应,本发明实施例还提供了一种流量控制装置,参见图2,该装置包括以下单元:\n[0130] 监测单元201,用于监测新到来的待发送上行数据包;\n[0131] 流量控制单元202,用于当满足需要进行流量控制的触发条件时,按照以下方式对所述待发送上行数据包进行流量控制:当所述待发送上行数据包为来自预置的高优先级网络应用的第一上行数据包时,将所述第一上行数据包加入到上行发送缓存队列;当所述待发送上行数据包为来自预置的非高优先级网络应用的第二上行数据包时,根据当前的带宽占用情况,判断是否允许发送所述第二上行数据包,如果是,则将所述第二上行数据包加入到上行发送缓存队列,否则将所述第二上行数据包丢弃。\n[0132] 其中,流量控制单元202包括:\n[0133] 水位值获得子单元,用于获得本机上行发送缓存队列的当前水位值;其中,所述当前水位值为:上一统计时刻获得的水位值与从所述上一统计时刻到当前统计时刻流出的数据量之差;所述流出的数据量为:所述上一统计时刻到当前统计时刻的时间差与数据量流出速率之积;\n[0134] 水位值判断子单元,用于判断所述当前水位值与所述第二上行数据包所占数据量之和是否小于预置的水位阈值,如果是,则允许发送所述第二上行数据包;其中,所述数据量流出速率及预置的水位阈值根据实际网络环境的数据包上传速率确定。\n[0135] 具体的,所述非高优先级网络应用可以包括多个优先级级别,各个优先级级别具有不同的预置水位阈值;所述水位值判断子单元包括:\n[0136] 优先级确定子单元,用于确定所述第二上行数据包的优先级级别及该优先级级别对应的水位阈值;\n[0137] 判断子单元,用于判断所述当前水位值与所述第二上行数据包所占数据量之和是否小于该优先级级别对应的水位阈值。\n[0138] 当所述待发送上行数据包为来自预置的高优先级网络应用的第一上行数据包时,该装置还可以包括:\n[0139] 流速调整单元,用于降低所述数据量流出速率,以便提高所述获得的当前水位值。\n[0140] 相应的,该装置还可以包括:\n[0141] 流速恢复单元,用于如果从降低所述数据量流出速率时起的第一预置时间段内,没有监测到所述第一上行数据包,则按照预置的速率恢复步长,恢复所述数据量流出速率。\n[0142] 此外,该装置还可以包括:\n[0143] 流速提高单元,用于如果从监测到第一上行数据包时起的第二预置时间段内,没有监测到新到来的所述第一上行数据包,则将所述数据量流出速率提高到预置的足够大的值。\n[0144] 除了上述实现方式外,还可以采用时间片统计方式来进行流量控制,具体的,该装置还包括:滑动窗口移动单元,用于将预置时间段设置为一个时间片,滑动窗口内包括多个时间片,每经过一个时间片将所述滑动窗口向后移动一个时间片;\n[0145] 相应的,流量控制单元202包括:数据量更新子单元,用于将所述第一上行数据包所占数据量加入到所述监测时刻所在的时间片中;数据量获得子单元,用于获得所述滑动窗口内当前各时间片中的总数据量;数据量判断子单元,用于判断所述总数据量与所述第二上行数据包所占数据量之和是否小于预置的数据量阈值,如果是,则允许发送所述第二上行数据包,并将所述第二上行数据包所占数据量加入到对应的时间片中;其中,所述数据量阈值根据实际网络环境的数据包上传速率确定。\n[0146] 具体实现时,满足需要进行流量控制的触发条件可以有多种,如,流量控制单元\n202可以包括:\n[0147] 第一触发单元,用于当监测到本机有所述第一上行数据包需要发送时,则触发对所述待发送上行数据包进行流量控制;\n[0148] 和/或,\n[0149] 第二触发单元,用于当接收局域网内的服务器或者其他终端发送的流量控制触发消息时,则触发对所述待发送上行数据包进行流量控制。\n[0150] 与本发明实施例提供的流量控制方法及装置相对应,本发明实施例还提供了一种局域网系统,参见图3,该系统至少包括第一终端301及第二终端302,其中,[0151] 第一终端301包括:\n[0152] 监测单元3011,用于监测所述第一客户端的待发送上行数据包;\n[0153] 通信单元3012,用于当满足需要进行流量控制的触发条件时,向所述第二客户端发送流量控制触发消息;\n[0154] 第二终端302包括:\n[0155] 流量控制单元3021,用于接收到所述流量控制触发消息后,按照以下方式对所述第二客户端的待发送上行数据包进行流量控制:当所述待发送上行数据包为来自预置的高优先级网络应用的第一上行数据包时,将所述第一上行数据包加入到上行发送缓存队列;\n当所述待发送上行数据包为来自预置的非高优先级网络应用的第二上行数据包时,根据当前的带宽占用情况,判断是否允许发送所述第二上行数据包,如果是,则将所述第二上行数据包加入到上行发送缓存队列,否则将所述第二上行数据包丢弃。\n[0156] 其中,通信单元3012可以包括:\n[0157] 条件判断子单元,用于当监测到所述第一终端有来自预置的高优先级网络应用的第一上行数据包需要发送时,确定满足需要进行流量控制的触发条件;\n[0158] 发送子单元,用于向所述第二终端发送流量控制触发消息。\n[0159] 当然在其他实施例中,条件判断子单元还可能需要判断当前是否发生拥塞,等等。\n[0160] 需要说明的是,在实际应用中,第二终端可能有多个(图3中仅示出两个),第一终端在发现有第一数据包需要发送时,可以向其他各个第二终端广播流量控制触发消息,当然也可以向某些特定的第二终端发送流量控制触发消息。\n[0161] 另外需要说明的是,这里所述的″第一″、″第二″并不是为了特指某个终端,而仅仅是为了区别处于不同状态的终端(是否为流量控制的发起端),根据各终端当前所处状态的不同,同一个终端有时候可能会作为第一终端,有时候又可能作为第二终端。因此,在实际应用中,在每一个终端上都可能既包括监测单元、通信单元,又包括流量控制单元,以保证在不同状态下终端角色的转变,以及实现各终端间的相互通信。当然,在一些特殊情况下,也不排除部分终端上仅具有监测单元及通信单元,另一些终端上仅具有流量控制单元的可能。\n[0162] 本发明实施例还提供了另一种局域网系统,参见图4,该系统包括至少两个终端\n401(图中仅示出两个),另外还包括一个服务器402,其中,\n[0163] 服务器402包括:\n[0164] 监测单元4021,用于监测所述局域网系统内各终端的待发送上行数据包;\n[0165] 通信单元4022,用于当满足需要进行流量控制的触发条件时,向所述局域网系统内的终端发送流量控制触发消息;\n[0166] 终端401包括:\n[0167] 流量控制单元4011,用于接收到所述流量控制触发消息后,按照以下方式对所述各自的待发送上行数据包进行流量控制:当所述待发送上行数据包为来自预置的高优先级网络应用的第一上行数据包时,将所述第一上行数据包加入到上行发送缓存队列;当所述待发送上行数据包为来自预置的非高优先级网络应用的第二上行数据包时,根据当前的带宽占用情况,判断是否允许发送所述第二上行数据包,如果是,则将所述第二上行数据包加入到上行发送缓存队列,否则将所述第二上行数据包丢弃。\n[0168] 其中,通信单元4022可以包括:\n[0169] 条件判断子单元,用于当监测到所述某终端有来自预置的高优先级网络应用的第一上行数据包需要发送时,确定满足需要进行流量控制的触发条件;\n[0170] 发送子单元,用于向所述局域网系统内的终端发送流量控制触发消息。\n[0171] 当然在其他实施例中,条件判断子单元还可能需要判断当前是否发生拥塞,等等。\n[0172] 与图3所示的局域网系统的不同之处在于,在图4所示的局域网系统中,存在一个服务器,用于监测局域网内各个终端的上行数据包发送情况,一旦发现某个终端上有高优先级的第一数据包需要发送,就向局域网内的终端发送流量控制触发消息,通知终端进行流量控制,以保证高优先网络应用的正常运行。因此,相当于实现了一种集中控制。\n[0173] 其中,服务器在向局域网内的终端发送流量控制触发消息时,可以采用向各个终端广播的方式,也可以向某些特定的终端发送,具体实现可以参见本发明实施例五中的介绍,这里不再赘述,另外,关于终端上进行流量控制的具体实现方式,可以参见本发明实施例一至四,这里亦不再赘述。\n[0174] 以上对本发明所提供的一种网络流量控制方法、装置及局域网系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
法律信息
- 2013-06-19
- 2010-10-27
实质审查的生效
IPC(主分类): H04L 12/56
专利申请号: 201010164946.3
申请日: 2010.04.30
- 2010-09-08
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2010-01-27
|
2009-06-15
| | |
2
| |
2007-02-28
|
2006-08-25
| | |
3
| |
2009-08-26
|
2008-02-21
| | |
4
| |
2006-07-05
|
2004-12-29
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |