第5章IPv6路由技术机械工业出版社ISBN7-111-23468-5第5章学习内容和要求本章学习内容及要求\要求了解IPv6路由的基础知识\熟知IPv6路由RIPng、OSPFv3、BGP4的特点\熟知IPv6路由报文的格式\理解IPv6路由的工作原理和路由过程。\掌握IPv6路由技术的描述方法\熟知IPv6路由技术的标准5.1IPv6路由协议概述5.1.1IPv6路由协议基本知识\IPv6路由协议是IPv6协议的组成部分,是IPv6协议的核心。\路由协议依据工作原理可以分为距离向量路由协议、链路状态路由协议和路径向量路由协议。\IPv6路由协议包括:内部路由协议RIPng、OSPFv3,以及基于IPv6的IS-ISv6;外部路由协议BGP-4。\依据路由算法分类,其中RIPng为距离向量路由协议,OSPFv3和IS-ISv6属于链路状态路由协议,BGP-4属于路径向量路由协议。\路由算法(RoutingAlgorithm)是网络层软件的一部分,网络中的路由器通过路由算法确定把一个进来的数据报(分组)转发到哪一条输出线路上。不同的路由协议通过相应的路由算法来实现。路由器对路由的处理方法路由器根据IPv6数据报的目的地址,并在本地路由表中搜索一个匹配的前缀,以确定IPv6数据报的转发路径。路由表是一个IPv6目的地址列表,每个目的地址都有一个前缀长度\一旦路由器发现了匹配的地址条目,将按照与路由表中的这个条目相关的下一跳地址信息来转发该数据报。\如果在路由表中没有发现匹配的目的地址条目,若路由表中有默认路由,则将数据报按默认路由转发,否则数据报将会被丢掉。需要注意的是:由于IPv6地址前缀是明确的,因此路由表中的网络、子网络和主机路由是没有差别的。内部和外部路由协议AS被定义为一组由单一机构管理的网络。\在AS内部发布信息的路由协议被称为内部路由协议IGP(InteriorGatewayProtocol)IGP早期也称为内部网关协议IPv6的RIPng协议和OSPFv3协议就属于内部路由协议。\在AS之间发布信息的路由协议被称之为外部路由协议EGP(ExteriorGatewayProtocol)EGP也称为边界网关协议或外部网关协议。需要说明的问题路由协议(RoutingProtocol)和可被路由协议(RoutedProtocol)是两个不同的概念。\路由协议允许路由器动态的通告、学习和更新路由,是一种为路由器寻找数据报转发路径的协议例如RIPng、OSPFv3等。\可被路由协议是能够为用户数据提供足够的被路由信息,例如网络接口的逻辑地址,也就是IP地址。用户数据若想要被路由、穿越网络,必须用可被路由协议封装例如IP数据报可以被路由,IP协议是一个可被路由协议。5.1.2IPv6路由协议IPv6路由协议也分为静态路由和动态路由。\静态路由是由手工配置路由表,在两个网络设备或多个网络设备之间定义明确的数据报转发路径。\动态路由采用的是动态路由协议计算出来的路由。网络中的路由器之间相互传递路由信息动态路由协议根据网络拓扑变化和网络的流量,按照动态路由算法,进行路由的计算和路由表的更新。\静态路由可以重分布到动态路由协议中,动态路由协议产生的路由不能重分布到静态路由表中。目前流行的操作系统,例如Windows、Linux等均支持IPv6协议的配置,包括IPv6的路由协议。Cisco、华为等网络厂商生产的路由器均支持IPv6路由协议的配置和应用。IPv6路由协议的新特点(1)⑴地址方面。在现行的网络结构中,为使网络中的每个节点都可达,必须保证有惟一的标识来对应网络节点的某一个接口。IPv6协议中增加了任播地址,允许IPv6数据报被路由到具有某个IP地址的所有节点中的其中任意一个\任播地址可以被分配给一个或多个网络接口,这些接口属于不同的网络节点。IPv6地址使用网络前缀标识网络,取消了子网掩码的概念。一个IPv6网络接口可以具有任意类型的多个地址。IPv6路由协议的新特点(2)⑵地址解析过程。在一个子网中实现第3层和第2层之间地址映射的方法有多种\在IPv6网络中采用邻居发现协议,通过ICMPv6实现主机能够了解到链路上哪一个路由器可以使用,也允许主机通过重定向功能获知哪个是昀佳路由器。⑶IPv6路由协议的更新。IPv4网络使用的路由算法已经不能适用128位的IPv6地址。需要研制新的IPv6路由协议。5.2RIPng协议5.2.1RIPng协议概述\RIPng(RIPnextgeneration)协议是动态的内部路由协议,是一个基于Bellman-Ford算法的距离向量路由协议RIPng使用跳数(hopcount)作为度量(metric),度量值在0—15之间。\RIPng是基于运输层协议UDP的。\RIPng只在路由器上实现每台使用RIPng的路由器都有一个路由进程在UDP端口521上发送和接收数据。\RIPng协议的大多数概念都是从RIPv1和RIPv2中得来的。RIPng与RIPv1和RIPv2的主要区别(1)⑴RIPng仅支持TCP/IP协议簇,而RIPv1、RIPv2不仅适用于TCP/IP协议簇,还能适用于其它网络协议簇。⑵RIPng使用IPv6的安全策略,不单独设计安全性验证报文。⑶RIPng中的下一跳字段是作为一个单独的路由表项RTE(RouteTableEntry)存在\目的是提高路由信息的传输效率,每个RTE20字节长。RTE也称为路由表条目。RIPng与RIPv1和RIPv2的主要区别(2)⑷RIPng采用多播方式发送路由报文,可以减少网络中传输路由信息的数量\而RIPv1使用广播方式发送路由信息,同一局域网的所有主机都会收到路由报文。⑸RIPng对路由报文的长度、RTE的数目没有具体的限制,路由报文的长度是由网络中的MTU决定的\而RIPv1、RIPv2对路由报文长度均有限制,并规定每个报文昀多可以携带25个RTE。⑹由于IPv6地址前缀有明确的含义,用前缀长度替代子网掩码\RIPng中不再有子网掩码的概念\同样由于使用IPv6地址,RIPng中没有必要再区分网络路由、子网路由和主机路由。路由表的表项⑴前缀,IPv6目的地址的前缀长度⑵度量(metric),从该路由器到目的地址跳数\度量值在在0—15之间\直接连接该路由器路由的度量值通常被设为0⑶下一跳(nexthop)地址\从该路由器到达目的地的路径上所途径的下一个路由器接口的IPv6地址。⑷路由改变标记(routechangeflag),标识路由信息昀近是否有改变\指出有关路由条目昀近被更换的信息。这个标记用于控制触发路由更新⑸计时器,各种与该路由有关的计时器\例如路由信息自昀后一次更新后所经历的时间。5.2.2RIPng路由更新的规则路由Ri是新的,并且度量值是可达的路由。度量值和下一跳地址将被作为一个新的表项添加到路由表中\计时器被设置为0,并且给出RouteChange标记路由Ri是已知的,并且下一跳地址和路由表中的表项内容一样\如果度量值改变了,路由表被更新,并且给出RouteChange标记。计时器被重新设置为0RIPng路由更新的规则(2)路由Ri是已知的,但是下一跳和路由表中的条目不一样,度量值也比路由表中的表项内容小\此时该表项的度量值和下一跳地址被更新。计时器被设置为0,并且给出RouteChange标记路由Ri是已知的,但是下一跳和路由表中的条目不一样,而度量值和路由表中的相等\如果路由过程允许在路由表中存在多个等成本路径通往相同的目的地址,路由将被当作一个新的条目5.2.3RIPng协议的局限性及解决方法RIPng协议的局限性主要有\RIPng直径有限\采用跳数作为到目的地址的度量值\需要寻找使收敛时间保持昀小的方法\路由器之间的同步问题采取的措施\RIPng计时器\水平分割机制、触发更新5.2.4RIPng报文格式RIPng报文包含在UDP报文段中\使用UDP的端口号521RIPng报文大致可以分为两类:\用于请求信息的报文\用于响应信息的报文。两类RIPng报文使用相同的报文格式\RIPng报文由固定首部和路由表项(RTE)组成。路由表项(RTE)每条路由表项占20字节,RIPng首部后面跟着一个或多个路由表项。比特前缀长度路由标记0路由度量值81631IPv6前缀(16字节)245.2.5RIPng下一跳字段和默认路由与RIPv2不同的是\RIPng的下一跳字段是由RTE指定的,原因是IPv6地址为128比特。下一跳RTE由RTE度量值字段中的0xFF值来指定。比特前缀长度(0)路由标记(0)00xFF81631IPv6下一跳地址(16字节)24下一跳RTERTE2RTEN……RIPng首部RTE1下一跳RTERTE35.2.6RIPng的工作原理RIPng用到达目的节点所经过的链路数(跳数)度量路由成本。请求报文、响应报文。特征内容UnSolicited(周期性或触发更新)Solicited(回应一个请求)IPv6源地址发送接口的本地链路地址本地链接地址(普通请求)、全球的或本地站点的单播地址(特定请求)IPv6目的地址Ff02::9(多播)请求报文的源IPv6地址源UDP端口RIPng端口521RIPng端口521目的UDP端口RIPng端口521请求报文的源端口5.3IPv6的OSPFv35.3.1IPv6OSPFv3概述\OSPFv3(OpenShortestPathFirstversion3)是IPv6使用的链路状态路由协议OSPFv3的技术文档为RFC2740,文档中的定义将重点放在IPv6的OSPF和IPv4的OSPF的区别上。\OSPFv3是IPv6网络中的主流和核心路由协议OSPFv3报文直接封装在IPv6数据报中,对应的IPv6数据报下一个首部字段的值为89。链路状态通告LSAOSPFv3将链路状态通告LSA(LinkStateAdvertisment)传送给某一区域内的所有路由器\而运行距离向量路由协议的路由器是将部分或全部的路由表传递给与其相邻的路由器每台IPv6路由器有效的通告各种LSA\在所有路由器的LSA通告都完成以后,OSPFv3网络完成收敛过程OSPFv3允许在主干区域边界上进行路由信息汇总。通过创建区域,可以减小LSDB占用的空间。需要说明的问题OSPF是直接用IP数据报传送,而不是用运输层协议UDP传送\若IP数据报首部的协议字段是值为89,标识其数据报的数据部分为OSPF\由OSPF作为数据部分构成的IP数据报长度很短,可以减少网络中路由信息的通信量\从网络层次观察,OSPF的位置在网络层5.3.2OSPFv3涉及到的技术链路状态数据库OSPF区域和外部路由虚拟链路外部路由末节区域SA(StubArea)和次末节区域(NSSA)5.3.3IPv6的OSPF和IPv4的OSPF的比较IPv6的OSPFv3协议处理以每条链路为单位\而不是子网之间进行协议处理删除地址语义。增加了洪泛范围。在每个链路上明确支持多个实例。使用本地链路地址。认证的变化。链路状态通告LSA格式改变。未知的LSA类型的处理\末节区域(subarea)支持使用路由器ID(RouterID)来定义邻居。5.3.4IPv6的OSPFv3报文格式OSPFv3使用五种类型的报文交互\来实现链路状态数据库的同步、昀短通路树的计算\获得路由表比特类型081631报文长度版本24路由器ID区域ID校验和实例ID保留(0)IPv6首部下一个首部=89OSPFv3首部OSPFv3报文OSPFv3报文的类型类型名称描述1Hello报文初始化并维护邻接。选择DR和BDR2数据库描述(DatabaseDescription)报文在邻接形成的过程中交换数据库描述3链路状态请求(LinkStateRequest)报文请求遗漏的或过时的LSA4链路状态更新(LinkStateUpdate)报文在形