论文部分内容阅读
BGP协议作为当前网络环境中事实上的边界网关协议的标准,其效率影响着整个网络。当今网络规模的爆炸式增长给处于网络核心节点的路由器提出了巨大的挑战,因此提高BGP协议的执行效率,对于满足当今以及未来网络的增长需求有着十分重要的意义。BGP协议经过了二十几年的发展,基于串行模型的优化改造难以获得理想的效果,性能提升的空间非常有限,必须突破传统的模型,探寻新的设计思路才可能获得更好的性能。半导体技术的发展使得多核CPU成为当今计算平台的主流,多核技术的不断发展对于上述问题的解决带来了新的机遇。多核计算平台中多个CPU核集中在一个芯片中,并且使用共享的方案来访问内存等资源,这样的设计使得线程之间通信的延迟和开销明显小于多处理器平台。因此,挖掘BGP协议的并行性,采用多线程的并行程序设计方案来充分使用多核平台带来的优势,可以使得BGP协议的执行效率获得一定的提升。本文深入分析了RFC1771所描述的BGP协议,设计并实现了基于Linux操作系统的单线程串行版本的BGP协议。本BGP系统使用Linux所提供的NETLINK套接字与内核进行通信,从而达到访问修改内核路由表的目的。为了突破Linux在一个进程中仅支持一个定时器的限制,本系统设计实现了定时器队列来管理多个定时器,同时,本系统采用读取配置文件的方式来对BGP进行配置。在完成了串行BGP之后,本文首先对该协议从任务并行的角度,采用流水线模型对其并行性进行分析,其次分析了基于线程池模型的数据并行方法的可行性,最后通过分析确定了基于邻居对等体连接的报文级数据并行方法对BGP协议进行并行化改造,并基于串行版本的BGP实现了并行的BGP协议。本文采用虚拟机来模拟多网卡主机,搭建BGP系统的测试环境。通过测试,验证了本文所设计的BGP系统的功能正确性。最后测试并验证了并行BGP系统的性能提升,在本文的测试环境下,最优的加速比为1.55。