曾细尧
(海口经济学院工程技术学院 海南 海口 570203)
Internet是由成千上万的网络域或自治系统(Autonomous System,AS)构成的,他们中的每一个都是处于同一管理控制下的网络集合[1]。AS通过域间路由协议交换网络可达性信息,构造全球路由表以便数据分组在Internet上全球可达。Internet域间路由协议几乎承载了Internet所有的活动,不论Internet的其它部分运行得有多好,如果域间路由协议无法正常运行,终端用户感知的端到端性能都不可能达到最优。
边界网关协议(Border Gateway Protocol,BGP)[2]是目前唯一广泛运行于Internet的域间路由协议。基于BGP的域间路由系统中DFZ(Default-free-Zone)路由表的快速增长是Internet目前面临的关键挑战之一,直接影响了Internet的性能。IAB关于路由和寻址的报告指出全球路由表的增长呈现超线性增长,并将保持超线性增长的趋势[3]。因此原有的结构已经无法满足不断发展的Internet的需求。需要一种适应Internet的快速增长,满足不同网络需求的新型路由结构。为此提出了一种建立在分离核心网和边界网基础之上的域间路由寻址结构IRAA(An Inter-domain Routing and Addressing Architecture)。IRAA 在数据包中加入特殊数据记录可路由地址信息,当包离开核心网时,部署的具有交换地址功能的路由器交换地址域中的信息,避免采用封装和改变现有IPv4路由器。同时,IRAA重用现有IPv4地址空间和扩展现有协议,实现了核心域地址空间和边界域地址空间之间的前向和反向转换,避免引入一个全新的映射服务系统。
为了改善Internet扩展性提出的域间路由寻址结构IRAA的核心思想依然是分离供应商网络和客户网络的寻址和路由空间。在增长速度相对缓慢,动态变化也相对稳定的传送网络组成的核心网中运行域间路由协议,维持核心之间的可达性。在增长速度快速,动态变化剧烈的客户网络构成的边界网中运行本地路由协议。在核心网和边界网之间通过DNS实现Address和LRoc地址之间的映射服务,以保证用户数据包获得全局可路由地后穿越核心网到达目的地。
IRAA中给构成边界网的每个客户网络的终端分配一个代表接口位置和终端身份名字的IPv4地址,称为EID(Endpoint Identifier)。EID是全球唯一的标识,代表终端的身份,作为会话标识,客户网络基于EID进行本地路由。构成核心网的传送网络分配具有拓扑意义,全球唯一的可路由地址Rloc,在IRAA中称为RID(Routing Identifier)。RID代表网络的位置标识,核心网依照RID路由。IRAA的结构如图1所示。
图1 IRAA架构
独立的映射服务系统保存所有EID与RID之间的映射信息。与某个EID存在映射关系的RID与该EID所处的stub AS接入的transit AS相关。如果stub AS单宿主,那么位于该stub AS中的所有EID与该stub AS接入的这个transit AS的RID存在映射关系。如果stub AS是多宿主,那么该stub AS中的EID则与接入的多个transit AS的RID存在映射关系。每个多宿主transit AS可以获取多个RID实现流量工程。可见,EID与RID之间应该是一对多的关系。
映射表中的表项表示为(EID,RID,Weight)。每个表项中的权重值weight表示拥有EID的stub AS对通过某个RID传输数据的偏好。这样,当stub AS和transit AS是单宿主时,权重值weight=1。而当stub AS是多宿主时,根据对通过那个RID传输流量的偏好来设置权重的值。给定一个EID,当映射表中存在多个与该地址向匹配的映射表项时,根据weight决定选择那个映射表项中的RID。
独立的映射服务器负责映射表的管理,路由器不参与映射表项的管理。路由器在发送第一个数据报文时查询映射表,获得目的端点标识EID相应的路由表识RID即可。
映射表隔离边界域地址空间与核心域地址空间,将边界域中的路由信息转移到了映射服务系统中。于是,域间路由表只需要存储RID之间的可达性信息。可以使用不同的实现建立域间路由表。
实际上,因为Internet中的transit AS数量相对较少,并且增长缓慢,可以为每个transit AS分配几个RID实现流量工程。在整个核心网中传播RID的可达性信息,域间路由协议也没有必要一定使用BGP,RID也不一定使用IP地址。可以使用一种新型的巨量向量协议或是链路状态协议在整个核心网中发布RID的可达性信息。每个transit AS中的域间路由表都保存关于所有RID的路由信息。在转发包时,依照RID查询域间路由表获得相应的路由信息。
使用BGP作为域间路由协议建立域间路由表时RID必须是IP地址,因为BGP协议基于IP地址。为了使得核心网路中的路由器依然保持根据IP地址转发数据报文,IRAA依然使用现在的BGP协议建立域间路由表。BGP作为IRAA的域间路由协议在IRAA的核心网中传播RID之间的可达性信息。核心网中的路由器接收到关于RID的路由信息后,将RID看作是IP地址前缀,正常地建立域间路由表。
图2 数据报文格式
IRAA使用特殊负载在数据报文中携带额外的RID地址,数据报文格式如图2所示。从网络的角度来看加入特殊数据的报文依然是一个正常的IPv4数据包,因此核心网路由器转发平台不需要进行任何变化。IRAA在transit AS中部署地址交换路由器ARR,如图1所示。网络中只有ARR具有识别特殊负载的能力,并执行地址交换,使得数据报文IP头部中的目的地地址转换为可以在核心网中路由的RID地址。
如果数据报文的传输在stub AS内部,不需要穿越核心网,那么数据报文的转发基于stub AS域内路由协议建立的本地路由表。边界网路由器如果发现数据报文中的两个RID信息都是本地的RID,那么就依照本地路由表将数据报文转发到目的主机。
近些年,国家对于耕地保护引起了高度重视,为更好促进耕地管理,从简单的数量管理转变为数量和质量并重管控。在全面进行耕地质量等级测量工作时,详细了解年度内土地资源现状改变与耕地质量等级改变状况,为土地管理提供服务,给建立相应的耕地保护制度带来依据,提高耕地管理质量。
如果数据报文的传输需要穿越核心网,那么数据报文就被stub AS中路由器按照默认路由将数据转发到相应的transit AS的ARR。基于域间路由表的数据报文传输过程如下:
1)发送数据报文的源主机查询映射表系统,获取目的主机的RID映射信息,并根据权重值选择一个RID作为目的主机路由标识RIDdst。同时获取自己的RID,也根据权重值选择一个作为源主机路由标识RIDsrc。
2)源主机发送 Source EID 地址是 EIDsrc,Destination RID 是 RIDdst,Source RIDsrc和Destination EID是EIDdts的数据报文;
3)数据报文中的RIDrsc属于本地,RIDdst不属于本地stub AS中,根据本地路由表中的默认路由信息将报文路由到源 transit AS的ARRsrc。
4)ARR将数据报文转发到核心网,核心网根据域间路由表将数据报文转发到拥有RIDdst的目的transit AS。
5)目的transit AS中的路由器发现RIDdst属于自己,于是将包转发到ARRdst。
6)ARRdst发现数据报文属于本地stub AS,首先将Destination RID与Destination EID中的地址交换,其他保持不变。然后依照Destination EID将包转发到目的stub AS。
7)目的Stub AS发现RIDrsc不属于本地,于是依照按照IP数据报文中的目的地址将包转发到目的终端主机。
因为目的主机在接收到的数据报文中获得了双方的EID和RID信息,目的主机在发送应答数据报文时就不需要再次查询映射系统,所以应答数据报的传输过程重复2-8。
IRAA中域间路由器只需要知道RID之间的可达性。Transit AS的数量远少于stub AS,并且它的增长趋势更加缓慢。测试显示transit AS仅占所有AS的20%,transit AS的增长率是所有AS的1/5。虽然没有transit AS需要根据自己的规模和流量工程的需要通告多个RID,但是RID的多少与它支持的stub AS数量无关,并且与接入它的stub AS多宿主或是流量工程都无关。
如果一个transit AS是单宿主,只需要通告一个RID即可。如果transit AS多宿主,根据自己的需要平均通告了n个RID。根据RouteViews[4]数据分析结果,2008年3月,多宿主transit AS总数量是4277个,多宿主比例是76.268,平均接入的上层transit AS数量是3.297个,于是可知IRAA的路由表表项总数应该是11,771=4277×0.76286×3.297+4277×(1-0.76286)条。 在 2008 年 3 月 Internet域间路由表表项已经达到了253.750条,可见IRAA使得域间路由表表项缩减了一个数量级。
路由表的增长给域间路由系统带来很大的扩展压力。但是路由表的增长并不是唯一的扩展问题,还有一个同样重要的问题就是系统的处理负载压力。处理负载主要包括处理更新和维护路径。
分离核心域和边界域之后,到达边界域中终端的路径信息由另外的映射服务系统维护,核心域中的路由器不需要参与边界域中路径信息的建立和维护。另一方面,分离后发生在边界域中的动态变化和stub AS的变化都不会影响到核心域中的路由器。假设transit AS和stub AS产生的更新消息分别是UTransit和UStub,基于BGP的域间路由系统中路由更新数量就是UTransit和UStub之和,而在IRAA中仅仅出现UTransit产生的更新消息。Internet中大部分的更新是由不稳定的边界域产生的,可见IRAA可以有效地减少需要处理的更新消息数量。
在IRAA中核心网络之间只交换基于Locator的路由信息,基于Identifier的路由信息在边界网络内部维护。采用这种方式可以大大减少DFZ中路由器的路由表大小,也就是缓解了路由可扩展性压力。另外在一个AS内部的路由变化不会被传播到整个Internet中,增强了路由稳定性,也减少了DFZ中路由器处理的更新数量。重用现有IPv4地址空间和扩展现有协议让IRAA具有良好的向后兼容性,也就是可以增量部署。
[1]S.Halabi and D.McPherson,Internet Routing Architecture[M].2ed ed.Cisco Press,2000.
[2]Rekhter Y,Li T.A Border Gateway Protocol 4(BGP-4)[S].RFC 1771,Mar.1995.
[3]Meyer D.,Zhang L.,Fall K.Reprot from the IAB workshop on routing and addressing[EB/OL],RFC 4984,2007.
[4]The RouteViews Project[EB/OL],http://www.routeviews.org/.