2.1 虚拟聚合
这类方案一般是通过将拓扑上不可聚合的连续地址前缀虚拟聚合成虚拟前缀(VP),达到减小BGP路由表规模的目的。VP是一个覆盖了地址空间较大部分的超级前缀,是对多个子前缀(目前传统网络的网络前缀)的虚拟聚合。聚合代理是针对某个VP来说的,它负责存储这个VP所覆盖的所有子前缀及每个子前缀对应的隧道出口路由器的地址,实现虚拟聚合功能。虚拟聚合类方案虽然减小了路由表,但却存在拉长转发路径的问题。
CRIO是较早提出虚拟前缀的一种方案,聚合代理在CRIO中被称为VP-TS,它作为隧道起点(TS)存储了对应VP中的每个子前缀的映射信息(子前缀以及对应的TE),并负责将数据分组通过隧道传送到隧道终点(TE),即此子前缀所属提供商的边缘路由器(PE)并向管理域内的其他BGP路由器通告这个VP。
CRIO的数据分组转发过程如图2所示,用户网络A中的一台主机欲发送数据分组给用户网络B中的一台主机,其中路由器PE3是VP 24.0.0.0/8的VP-TS,它将通过隧道技术虚拟聚合24.0.0.0/8覆盖的所有子前缀,例如24.1.1.0/24。入口路由器PE1、出口路由器PE2分别属于不同的AS,整个转发流程如下:
PE3向PE1发送VP的BGP通告,PE1的路由表添加一条路由信息(24.0.0.0/8,PE3);
CE1向PE1发送一个24.1.1.0/24的数据分组;
PE1在路由表中未查询到24.1.1.0/24的路由信息,但查到路由信息(24.0.0.0/8,PE3)于是将该数据分组转发给PE3;
PE3存有24.1.1.0/24的映射信息(24.1.1.0/24,PE2),根据此映射信息,PE3将数据分组通过隧道发往TE PE2;
PE2知道要通过CE2才能到达24.1.1.0/24网络,因此将数据分组去掉封装报头后转发给CE2。
整个转发路径为CE1→PE1→PE3→PE2→CE2,但若PE1存有24.1.1.0/24的映射消息,路径为CE1→PE1→PE2→CE2。由此可见,CRIO在实现地址聚合的同时却将分组的转发路径拉长了。
实施CRIO方案时,BGP路由器只需要存储到Internet的入网点(POP)的路由以及VP-TS的路由。全球的大型提供商共有几千个POP,如果VP被定为/8,整个地址空间共有256个VP,这样传统路由器的路由表(RIB)规模就可以从105量级减少到103量级,大大减少了BGP路由的计算量和路由表的大小;同时,路由器中存储的路由指向终点(大型提供商的POP)也会非常的稳定,从而减少了BGP信息的更新频率。文献11对CRIO进行了仿真试验(如图3所示):采用在所有的ISP上随机部署VP,或在每个ISP内部署所有的VP,或所有的ISP内部路由都是最短路径的3种不同VP部署策略,考察转发表大小与路径长度的关系,结果表明在平均路径长度增加很少的情况下,第一个策略使部署了CRIO的FIB的规模减小一个数量级,其他两个方案则使FIB的规模减小到未部署CRIO的FIB的1/5左右,BGP RIB的规模则可以减少近两个数量级。
CRIO虽然能够缓解目前路由系统所面临的路由表膨胀压力,但是它尚存一些待解决的问题,当多个ISP同时部署VP-TS时,如何解决转发路径可能被多次拉长的问题目前尚不清楚;CRIO使数据分组的转发路径拉长,增加了数据分组在路由器内的处理时间,从而增加了传送时延;由于CRIO使用隧道技术,封装也会导致带宽、CPU资源的开销增加;VP-TS集中了所有发往被聚合的子前缀的流量,很容易成为网络“瓶颈”;此外,CRIO缺乏对移动性的支持;以上这些问题都有待相关研究人员作进一步的研究。
VA是IETF GROW工作组的提案之一,用于解决当前路由扩展性。VA与CRIO一样,使用隧道技术虚拟聚合分散的子前缀成VP。在VA中,聚合代理被称为汇聚点路由器(APR)。VA的部署范围仅限于ISP内,所以作为隧道起点的APR存储VP内的每个子前缀及对应的远端AS的边界路由器(ASBR)地址,并负责将数据分组通过隧道传送到隧道终点,即远端AS的边界路由器(ASBR)地址,如图4所示。VA保持BGP路由器中的RIB不变,只是阻止RIB中的一些表项加载到BGP路由器的FIB中,这是VA与CRIO的一个不同之处。VA的隧道并不跨越多ISP,解封装数据分组的任务由本地ISP的边缘路由器完成,无需与其他ISP进行协作,这是VA与CRIO的另一区别。由于VA与CRIO的基本思路相似,所以也存在与CRIO一样的问题。此外,由于VA只压缩了路由器中FIB规模,RIB的快速增长仍未得到解决。
2.2 标志和位置标志分离
2.2.1 主机驱动型
主机驱动型是指在主机协议栈的网络层和传输层之间加入主机标志层的分离类型,主机标志负责标志主机,网络地址负责数据分组的寻址和传送,应用连接不再与IP地址绑定,而是与主机标志绑定,网络层IP地址只作为网络层使用的位置标志,用于数据分组的路由转发。IP地址的变更对传输层以上透明,从而IP地址的改变可以不中断已经建立的应用连接,达到支持主机移动性和多归属的目的。HIP是主机驱动型的典型方案,主要要解决主机的安全和移动性问题,如果所有的IP网络都部属HIP,所有的主机都使用全新的名字空间作为主机标志,IP地址仅用于路由,IP地址就可完全按照网络拓扑分配,IP地址恢复可聚合性,从而彻底解决路由扩展性的问题。
HIP在网络层和传输层中间插入主机标志层(HIL),实现了身份与位置标志的分离,引入主机标志层后的协议体系结构如图5右侧协议栈所示。HIP引进一个新的加密的命名空间,该命名空间引入了3个新的标志符:主机标志符(HI)、主机标志标签(HIT)和局部标志符(LSI)。主机标志符唯一地标志了每台连接到Internet上的主机,每个主机可以有多个HI。HI可以用不对称加密算法中公/私密钥对的公钥来表示,由于不同的加密算法所拥有的密钥长度不一样,因此,在实际使用时,通常用128位定长的HIT来代替HI标志主机身份,HIT是对HI的某种哈希变换,与IPv6地址等长,在应用程序中使用非常方便,同时为了和现有的IPv4地址兼容,HIP协议还定义了LSI,作为局部系统中使用的主机标志符。HIP协议的基本交换是一个使用公钥作为主机标志并建立HIP基本交换加密的4次握手过程,它可以保证通信的安全性。