新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于路径标识的多路径域间路由的开发与实现

基于路径标识的多路径域间路由的开发与实现

作者:时间:2012-04-17来源:网络收藏

3.2 UPDATE消息处理模块
该模块主要实现UPDATE消息的发送和接收。在BGP当中用来在对等体之问传递可用前缀、撤销等,在多域间方案中需要修改数据包发送函数和接收函数,使之能够正常地传递新的网络可达性信息,同时需要修改包安全性检查等函数,使之能够不被错误地丢弃。
3.3 平面表模块
该模块主要实现在控制层维护核心路由表,并向转发层下发最佳转发信息。BGP的路由表是基于最长前缀匹配的方式查找的,用二又树具体组织。在多域间路由方案中需要将其平面化,利用PID和AS号来检索域间路由,利用HASH算法将路由节点信息存储在一个双向链表上面,实行了精确查找。
3.4 配置、显示和调试命令模块
该模块主要实现多域间路由协议的配置,并且提供了一些显示核心路由表、对等体状态等的显示命令,还有一些路由器故障时的调试命令。相对于BGP,在域间路由方案中添加了以下的命令:
(1)路由显示命令
通过该命令可以遍历域间路由协议的核心路由表,显示具体路由信息,即到目的AS的具体路由信息,包括PID、NEXT_PID和具体路径显示。
(2)路径选择命令
因为在路由方案中,在控制层可以发现多条路径,通过该命令可以选择控制层向转发层通告的最佳路径,在当前链路失效时选择备份路径下达到转发层,实现链路的快速收敛,最终完成了转发路径的可控。
3.5 RTM模块
该模块主要实现转发层模块和控制层模块之间的消息交互。多路径域间路由协议在控制层拥有自己的核心路由表,但最终对转发其作用的是转发层的内核路由表,但是控制层不能对内核路由表直接起作用,该模块实现了两者之间的信息交互。它们之间的通信是通过套接字NET LINK起作用的,在公共消息格式中添加路由所需的PID、AS号和NEXT_PID等信息,满足路由在转发层的需要。
3.6 平面转发表模块
该模块主要实现多路径域问路由在转发层核心路由表的维护,当需要出路网络流量的发送和接收时查询该路由表。
Linux内核的转发表是基于网络掩码的HASH表组织的,根据不同的网络掩码长度被组织成不同的HASH表。因为IPv4使用32位地址,所以IPv4中有33个不同的网络掩码长度,可对应于一个IP地址。fib_table数据结构来描述路由表。fib_table结构包含一个由33个指针组成的向量,每个指针对应一个网络掩码并指向一个类型为fn_zone的数据结构。Fn_zone结构将路由组织成HASH表,因此通向目的网络的路由,如果网络掩码长度相同,就被放在同一个HASH表内。每个单独的子网对应一个fib_node实例,用变量fn_key(网络掩码)识别,它的值就表明该子网。在查找函数fn_hash_lookup中,也是通过遍历路由表搜索关键词fn_key,获得最终结果。
多路径路由方案中,转发时需要检查PID,并根据PID进行检索和转发,因此需要修改转发表,使之可以根据关键词PID进行查找。在查找时,只需要根据PID进行精确匹配,而不用计算网络掩码。在修改后的路由节点fib_bgp_node中,添加了PID的信息,使得修改后的路由表fib _bgp_table可以根据PID为关键词索引。路由表结构如图4所示。

本文引用地址:http://www.eepw.com.cn/article/190503.htm

d.jpg


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 基于路径标识的多路径域间路由方案的功能验证
多路径域间路由方案的功能验证,主要包括控制层基于路径标识的多路径路由发现和转发层基于路径标识的数据包正常转发。



评论


相关推荐

技术专区

关闭