基于令牌桶算法的卫星数据地面传输网络流量控制系统的制作方法

文档序号:14722333发布日期:2018-06-17 20:50阅读:193来源:国知局

本发明属于网络流量控制的技术领域,具体涉及一种基于令牌桶算法的卫星数据地面传输网络流量控制系统。



背景技术:

近年来,随着我国空间技术的发展,在轨运行的卫星越来越多,伴随着卫星数量的增多,卫星地面接收站需要传输的卫星数据量也快速增长。卫星数据也分为多种类型,实时数据要求低的传输延迟,非实时数据要求尽量大的带宽,怎样提高带宽利用率并满足各种类型数据的传输需求成为一个急需解决的问题,目前的解决方案有在具体应用程序中抑制数据的发送速率和利用linux系统自带的带宽管理工具TC。

最简单的方法就是在应用程序中抑制数据的发送,例如把一秒钟分成两份,前半秒发送数据,后半秒则暂停发送,这种方法的缺点很明显,不能有效利用带宽资源,而且抖动很剧烈,对于要求低时延的应用程序不能满足其需求

Linux的TC模块会将流经网络接口的数据包按某种队列算法放入相应的队列,并通过数据包所具有的属性,比如目的IP、所用端口、tos字段等来过滤数据包,将数据包放到不同的通道中,从而达到对数据流量的控制。图1表示linux的TC模块的流量控制过程。

数据包经过过滤器之后分配到相应的队列,然后按照事先设定好的队列调度算法发送数据,TC模块可以控制单网卡环境下数据的发送速率,但存在如下不足之处:

1.TC模块在多网卡环境下不能有效控制发送的数据流量。

2.TC模块是按预先设定好的队列调度算法来发送队列中的数据的,对于要求低时延的流量不能有效满足其需求,而且当要求尽量大的带宽的流量被放入优先级低的队列时,也不能满足这类流量的带宽需求。

因此这两种解决方案都不能很好的满足卫星数据地面传输系统对流量控制的要求。



技术实现要素:

有鉴于此,本发明提供了一种基于令牌桶算法的卫星数据地面传输网络流量控制系统,能够在有效利用带宽的情况下,优先发送实时数据并保证非实时数据尽量大的带宽,优化传输性能,降低传输时延、传输抖动,并做到尽量精确地控制发送流量。

实现本发明的技术方案如下:

一种基于令牌桶算法的卫星数据地面传输网络流量控制系统,包括令牌生成模块、令牌放置模块、令牌桶模块、数据缓存模块和令牌请求模块;所述网络流量控制系统用于传输n种流量类型,n>1,每种流量类型对应一个传输优先级;

令牌生成模块包括n个令牌生成器,每个令牌生成器与一种流量类型相对应,用于按照预设的令牌到达速率生成与其所对应的流量类型相匹配的令牌;

令牌桶模块包括n个令牌桶,每个令牌桶对应一种流量类型,且每个令牌桶的优先级和与其对应的流量类型的优先级一致;令牌桶用于存储令牌;

令牌放置模块将生成的令牌按照令牌放置策略放入相应的令牌桶中或者当所有令牌桶都满时丢弃令牌;

数据缓存模块存储n种流量类型所对应的n个数据缓存队列,当任一流量类型i的数据包产生,i取1,2,…或n,数据缓存模块扫描流量类型i对应的数据缓存队列是否为空,如果非空,则将流量类型i的数据包放入数据缓存模块的数据缓存队列中,如果为空,则发出指令调用令牌请求模块;数据缓存模块定时扫描n个数据缓存队列,如果n个数据缓存队列中存在非空的情况则发出指令调用令牌请求模块;

令牌请求模块接收到数据缓存模块调用指令后,判断流量类型i所对应的令牌桶i中是否有足以容纳流量类型i数据包大小的令牌数,若有,则令牌请求模块减去令牌桶i中相应的令牌数并发送数据包;若没有,则令牌请求模块扫描所有低于令牌桶i优先级的令牌桶;找出已满并且优先级最低的令牌桶j并借用相应的令牌数,令牌请求模块减去借用的令牌桶j中的令牌数并发送数据包;如果优先级低于令牌桶i的其他令牌桶都不满,则令牌请求模块通知与其他令牌桶对应的令牌产生器停止产生令牌并把令牌产生速率加到令牌产生器i上;当令牌桶i满时,则令牌请求模块停止该过程,恢复其他令牌产生器产生令牌的速率;如果优先级低于令牌桶i的其他令牌桶中没有令牌,且其他令牌桶所对应的令牌产生器速率已经都为0,则将流量类型i数据包缓存在数据缓存模块中。

进一步地,所述令牌放置策略为:当产生的令牌对应的令牌桶不满时,令牌放置模块将该令牌放入其对应的令牌桶中;当产生的令牌对应的令牌桶已满时,令牌放置模块扫描所有令牌桶,找出令牌个数为0或者对应的流量类型的数据缓存队列非空的令牌桶,将令牌放入满足上述条件中优先级最高的令牌桶;若没有满足上述条件的令牌桶,令牌放置模块将令牌放入令牌数/令牌桶的桶深比值最小的令牌桶;如果令牌桶都满,令牌放置模块丢弃该令牌。

有益效果:

本发明中令牌放置模块将令牌按照令牌放置策略放入合适的令牌桶,这可以保证某些要求尽量大带宽的流量有足够的带宽,而对实时性要求较高的流量,如果相应令牌桶中没有令牌可用,可通过借用规则保证该类流量被优先发送,从而保证该类流量的实时性要求。令牌将按照一定的时间间隔均匀放入令牌桶中,所以可以保证系统对低抖动的要求,从而优化传输性能并达到对流量进行精确控制的目的。

附图说明

图1为linux的TC模块的流量控制过程。

图2为令牌桶算法的基本处理过程。

图3为多种类型流量的令牌桶处理过程。

图4为本发明系统结构示意图。

图5为原有方法的流量控制效果及抖动情况。

图6为使用本发明系统后的流量控制效果和抖动情况。

具体实施方式

下面结合附图并举实施例,对本发明进行详细描述。

卫星数据地面传输系统中目前传输3种数据:实时快视数据,实时原始数据,非实时的ftp数据。这3种数据分别对应3个数据传输进程,第一种和第二种数据是实时数据,所以要求较低的时延,第三种数据是非实时数据,要求尽量大的带宽。这3种数据的传输层协议都使用的是tcp协议。

本发明运行在应用层,在数据被送入传输层之前设置一道关卡,过滤数据以及控制数据的发送,由于不绑定具体的网卡,所以在多网卡环境下也可以有效的控制带宽。

令牌桶算法是目前IPQoS中最常采用的一种流量控制方法,广泛应用于约定访问速率技术、通用流量整形技术以及物理接口总速率限制等技术中。令牌桶是一种特殊应用的网络设备内部存储池,令牌则是以给定速率填充令牌桶的虚拟信息包,每个令牌对应一个分组包或一定量的比特数。如图2所示,令牌桶的基本处理过程可以描述为:当数据流到来时,如果令牌桶中有足够的令牌可用于发送数据,则数据可以通过;令牌桶中的令牌数量随着数据的通过而逐渐地减少,当令牌桶中的令牌不再满足数据的发送条件时,则发送的数据要么丢弃或者再标记这个数据包(流量控制),要么等待令牌桶中有足够的令牌(流量整形);当令牌桶内令牌已经满了,则产生的令牌将被丢弃。对图2中名词的解释如下:

令牌桶深度:令牌桶能够存放的最大令牌数,即在某一时刻瞬时可用的最大令牌数。

令牌到达速率:令牌进入令牌桶的设定速率,主要决定了数据通过的平均速率。

由于令牌桶中的令牌数决定了数据能否被发送,所以在一段时间内消耗了多少令牌就等于发送了多少数据,于是令牌到达速率就是数据发送的平均速率,从而通过限制令牌的到达速率来限制数据发送的速率,达到精确限速的目的,且由于令牌是均匀到达的,则会降低发送数据时的抖动,使数据平稳匀速的发送出去。

在标准化文件里,令牌桶算法只是应用在单独类型的流量上,对于多个类型的流量使用却很少涉及。通常,需要为每个类型的流量设置一个独立的令牌桶来进行流量整形,每个令牌桶对应一个令牌到达速率,决定了该类型流量的发送速率,所有类型流量的令牌到达速率之和应小于系统设定的数据最大发送速率,多种类型流量的令牌桶处理过程如图3所示,其中每个令牌桶的处理过程都和图2中的相同。

由于每个令牌桶都是独立的,当多种流量类型竞争有限的带宽资源时,无法保证要求低时延的流量类型的需求,也无法满足要求尽量大的带宽的流量类型的需求。为了解决这个问题,如图4所示,本发明提供了一种基于令牌桶算法的卫星数据地面传输网络流量控制系统,包括令牌生成模块、令牌放置模块、令牌桶模块、数据缓存模块和令牌请求模块;增加了令牌放置模块和令牌请求模块,令牌放置模块位于令牌生成模块和令牌桶模块之间,令牌请求模块位于数据缓存模块之后。

所述网络流量控制系统用于传输n种流量类型,n>1;假定为三种,传输优先级为流量类型1>流量类型2>流量类型3;

令牌生成模块包括n个令牌生成器,每个令牌生成器与一种流量类型相对应,在本实施例中分别为令牌生成器1、令牌生成器2和令牌生成器3;用于按照预设的令牌到达速率生成与其所对应的流量类型相匹配的令牌;

令牌放置模块将生成的令牌按照令牌放置策略放入相应的令牌桶中或者当所有令牌桶都满时丢弃令牌;所述令牌放置策略为:当产生的令牌对应的令牌桶不满时,令牌放置模块将该令牌放入其对应的令牌桶中;当产生的令牌对应的令牌桶已满时,令牌放置模块扫描所有令牌桶,找出令牌个数为0或者对应的流量类型的数据缓存队列非空的令牌桶,将令牌放入满足上述条件中优先级最高的令牌桶;若没有满足上述条件的令牌桶,令牌放置模块将令牌放入令牌数/令牌桶的桶深比值最小的令牌桶;如果令牌桶都满,令牌放置模块丢弃该令牌。

令牌桶模块包括n个令牌桶,每个令牌桶对应一种流量类型,在本实施例中分别为令牌桶1、令牌桶2和令牌桶3;令牌桶的优先级和与其所对应的流量类型的优先级一致,即令牌桶1>令牌桶2>令牌桶3,令牌桶用于存储令牌;

数据缓存模块存储n种流量类型所对应的n个数据缓存队列,当任一流量类型i的数据包产生,i取1,2,…或n,数据缓存模块扫描流量类型i对应的数据缓存队列是否为空,如果非空,则将流量类型i的数据包放入数据缓存模块的数据缓存队列中,如果为空,则发出指令调用令牌请求模块;数据缓存模块定时扫描n个数据缓存队列,如果非空则发出指令调用令牌请求模块;

令牌请求模块接受到数据缓存模块调用指令后,判断流量类型i所对应的令牌桶i中是否有足以容纳流量类型i数据包大小的令牌数,若有,则令牌请求模块减去令牌桶i中相应的令牌数并发送数据包;若没有,则令牌请求模块扫描所有低于令牌桶i优先级的令牌桶;找出已满并且优先级最低的令牌桶j并借用相应的令牌数,j取1,2,…或n,令牌请求模块减去借用的令牌桶j中的令牌数并发送数据包;如果优先级低于令牌桶i的其他令牌桶都不满,则令牌请求模块通知与其他令牌桶对应的令牌产生器停止产生令牌并把令牌产生速率加到令牌产生器i上;当令牌桶i满时,则令牌请求模块停止该过程,恢复其他令牌产生器产生令牌的速率;如果优先级低于令牌桶i的其他令牌桶中没有相应的令牌,且其他令牌桶所对应的令牌产生器速率已经都为0,则将流量类型i数据包缓存在数据缓存模块中。

实施例1:

在终端A和终端B之间有一条千兆的以太网,在终端A上建立3个数据发送进程,和流量控制进程,流量控制进程中运行本发明中的流量控制方法,流量控制进程与终端B建立3个tcp连接,3个tcp连接使用的端口分别为1111,2222,4444。3个数据发送进程将数据送入流量控制进程,经流量控制模块处理后经过相应的tcp连接发送到终端B。

设置进程1的数据发送速率为10MB/s,进程2的数据发送速率为15MB/s,进程3的数据发送速率为25MB/s,进程1优先级>进程2优先级>进程3优先级,总发送速率为50MB/s,原有方法的流量控制效果及抖动情况见图5所示,运行本流量控制方法后的流量控制效果和抖动情况如图6所示。

综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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