论文部分内容阅读
互联网经过四十多年的发展,已经从面向学术的科研网络演变为推动社会经济发展的基础设施,但互联网在移动性、可扩展性、安全性上都逐渐暴露出了问题,由此引发了未来网络研究的热潮。未来互联网的体系结构、算法协议、关键技术是否可行,必须进行大量的实验来验证,但由于当前基于IP的网络设备的封闭性,无法承担这项任务。目前可编程路由器是主流的面向未来网络的网络设备概念,但还没有成熟的可编程路由器产品,因此必须研发可编程路由器,并据此构建未来网络试验床。
本文参与开发的可编程路由器,整体上划分为控制平面和数据平面,本文负责数据平面的设计与实现,主要完成了以下工作:
(1)设计并实现了一种数据平面与控制平面的通信方法。传统路由器的路由计算和数据包转发是在同一个硬件系统里完成,由于采用了控制平面与数据平面相分离的思想,这样为两个平面间的通信带来困难,本文设计并实现了一种隧道方式的传输子系统,将NetFPGA与控制平面交互的数据包进行IP封装,并且不考虑这些需要传输数据包的内容,在Linux内核中开辟了一条NetFPGA与虚拟路由器进行通信的通道,保证数据包传输的高效性,提供了对未来多种协议的支持,并减低了延迟时间。
(2)设计了一种在NetFPGA中添加新协议的方法。本文设计的可编程路由器的硬件部分基于NetFPGA,具有良好的可编程性,但目前只支持一种协议,本文设计了一种对NetFPGA中用户数据通路进行虚拟化的方法,可以根据不同的数据包类型选择不同的处理流水线,从而使得一块NetFPGA板卡可以支持多种协议的处理,板卡的资源也得到了充分的利用。当前斯坦福参考例程功能过于简单,本文实现了流量统计功能,能够统计当前中数据包网络层和传输层的信息,增强了IPv4路由器的功能。
通过测试可以得出,本文设计的数据平面可以正确的完成转发任务,同时可以与控制平面正常通信,在充分保证转发性能的情况下,增加了整个系统的灵活性。