3.7 数据包封装解封模块
该模块主要实现数据包中标识的转换,Linux内核中采用IP地址进行路由,而在多路径域间路由方案中,在域间有需要才用AS号路由,因此需要在发送数据包时,添加PID、目的AS号和源AS号等信息,但为了兼容现有的网络架构,方便现有网络其他服务的处理,在数据包进入网络层前,去除PID、目的AS号、源AS号等扩展选项。只是在数据包离开网络层后,才增减以上扩展选项。修改后的数据包头如图5所示。
3.8 数据包转发处理模块
该模块主要实现基于PID的数据包转发,同时维护一个PID、AS号和NEXT_PID一一对应的查询表,实现到目的AS路径标识PID的填充。Lin ux内核是基于IP地址前缀路由的,而在多路径域间路由方案中是基于AS号,在查询平面转发表要使用PID,如果数据包是终端第一次经过路由器时,不存在PID等信息,需要根据目的AS号添加PID等信息,还有域内路由时根据设计要使用Local Identiner,只有在数据包进入Linux内核网络层前,进行了该模块处理,才能完成标识路由的功能。
4 基于路径标识的多路径域间路由方案的功能验证
多路径域间路由方案的功能验证,主要包括控制层基于路径标识的多路径路由发现和转发层基于路径标识的数据包正常转发。
4.1 测试平台及拓扑
全部系统采用普通的x86系列的PC;测试环境的核心网路由器配置至少两个以上的网卡,无线或有线均可;所有充当路由器都应该安装Linux操作系统,内核版本为2.6.28;测试的拓扑如图6所示,对各个功能实体进行地址和路由配置,在所有路由器都需要安装文中提到的修改后的BGP路由软件和相应的内核软件。
4.2 控制层基于路径标识的多路径路由发现
AR1为AS号为100的一台路由器,AR2,AR3分别为AS号为200,300的路由器,其中AR1的BGP配置如图7所示。
其他路由器配置与AR1类似,通过配置使得AR1,AR2,AR3之间建立了EBGP关系对等体关系,通过show ip bgp命令查看AR1的路由表,内容如图8所示。