论文部分内容阅读
随着互联网行业快速发展,各种互联网业务和服务大量出现。当今使用的互联网,是已经经过互联网运营商进行流量规划后产生的。在正常情况下,网络流量会被路由到IGP计算出来的最短路径进行传输,在最短路径上有足够的带宽。为了保证互联网能够稳定提供服务,互联网拓扑相对于主机拓扑来说更为稳定,路由表不会频繁的更新。在这种正常状态下,网络工作并不需要流量工程来避免拥塞。然而在某些极端情况下,比如一些重要节点发生故障,或者流量超过了规划的带宽,就会导致网络拥塞。这时候网络层的路由表提供的路径可能无法提供正常服务,从而导致通信失败。在这种通信失败的情况下,可能会需要使用一些特殊的方法,不再直接使用网络层路由表提供的路径,而是将网络流量引导到当前可用的路径上,从而保证在错误发生时,网络应用仍然能够正常通信。现有的应用层路由技术为解决此类问题提供了可行的思路,但在可扩展性、可靠性等方面都有不同程度的瓶颈。本文通过对现有的应用层路由相关技术,以及对项目组开发的应用层连接代理(ALCA1.0)技术的研究,找到现有应用层连接代理技术存在的缺陷:当部署节点数目较多时,会出现节点簇拥的情况,从而使得本需要选择相互较为分散的目标,但最终会汇聚在一起的情况,从而使设计中的部分功能失效;现有的应用层连接代理技术把收集、分发所有部署节点信息的“锚点”功能和普通的转发节点角色功能绑定在一起,使充当锚点的转发节点开销过高;使用数据库作为运行时的数据存储介质,缓慢的IO将会阻塞网络消息的处理速度。在对现有技术研究的基础上,对ALCA1.0寻求在可用性、可扩展性方面的优化,并对ALCA1.0所存在的缺陷提出了新的解决思路。提出“RTT圈层”的概念,通过根据传输时延的分布,有目的性的选择目标节点来避免目标汇聚的情况;将作为“锚点”的功能角色提单独提取出来独立工作,并设计消息同步的多锚点同时运行;重新对ALCA进行结构功能设计和编码,称为ALCA2.0。本文首先进行背景调研,介绍几种现有应用层路由相关技术,以及它们所面临的瓶颈,讨论这些现有技术对设计ALCA2.0的借鉴价值。接下来介绍现有ALCA1.0技术存在的缺陷,以及ALCA2.0将如何进行改进。接下来介绍ALCA2.0的面向场景,分析需求,从而设计ALCA2.0应该具有哪些特性,并设计一个场景来介绍ALCA2.0的原理和工作流程。接下来介绍ALCA2.0的系统的具体设计和编码工作,将详细介绍系统在工作中的所有流程以系统内部各模块对消息的处理方式。最后在全球多个云主机组成的广域网中,对ALCA2.0进行部署和测试,验证该系统的功能和性能。