论文部分内容阅读
流量控制常用于计算机网络中,对网络中的安全访问进行有效的控制,并保障重要业务的带宽。企业用户常使用多网卡提高服务器的吞吐量、避免单点故障,以达到性能与经济成本的平衡。使用令牌桶算法在多网卡环境下进行流量控制时存在业务分类的问题,目前,缺少在这种场景下根据业务优先级进行剩余带宽利用的流量控制算法。另外,用户通过流量控制配置工具实现流量控制,Linux系统上的流量配置工具tc未兼顾功能与用户体验两方面,应针对Linux系统设计具有友好用户接口的带宽使用方法。本文首先围绕Linux系统上的流量控制机制进行研究,分析了Linux内核中流量控制的流程与方法,对流量控制常用的FIFO、RED、TBF、CBQ、HTB等排队规则算法总结了原理及特点;对排队规则算法在内核中的实现方式进行了分析;对流量控制工具tc与流量过滤工具iptables进行了介绍。针对上文提到的问题,本文主要完成了以下工作:基于多网卡流量控制的需求,在令牌桶算法的基础上,设计了改进的共享令牌桶算法STBF,并在实际应用场景中进行了实验对比。改进的共享令牌桶算法能够在多网卡环境中对不同的网卡设置服务优先等级,在多个网卡间按照优先级的高低实现空闲令牌的共享。实验结果表明,改进的共享令牌桶算法能够在多网卡应用环境中有效达到流量控制的目的,同时实现了按业务优先级分配空闲令牌与TBF算法、HTB算法相比提高了带宽利用率。在仅有优先级高的网卡处于流量繁忙状态时,STBF算法的平均带宽利用率相比TBF算法由73%提升到了97%;同等负载状态下,STBF算法的平均发送时延要低于TBF算法与HTB算法。针对Linux流量配置工具tc的不足,结合tc的带宽管理功能与iptables的流量过滤功能,设计了一种用于Linux系统的带宽管理方法tctables,并对该方法进行了实验测试。该方法具有容易掌握的使用方法、良好的移植性以及与比tc丰富的过滤功能,支持普通用户、网络管理员、编程开发人员等各类用户进行带宽管理或者带宽管理软件的开发。带宽管理方法tctables包括tctables语言和tctables解释器两部分,文章中分别阐述了两部分的工作原理与实现细节。文章中对使用tctables进行带宽管理进行了测试,结果表明,通过tctables解释器能够编译tctables语言写成的脚本,最终能够实现期望的带宽管理效果。