下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 OSPF协议原理

OSPF协议原理.doc

OSPF协议原理

doubleR_R
2011-02-27 0人阅读 举报 0 0 暂无简介

简介:本文档为《OSPF协议原理doc》,可适用于IT/计算机领域

目录(目录名)课程DZOSPF协议原理ISSUE目录TOCo""第章OSPF协议基本概念OSPF协议概述OSPF协议基本特征OSPF相关术语RouterIDArea区域COST值Cost(续)ABRASBR思考题第章OSPF网络类型OSPF通过LSA描述网络拓扑邻居关系太多?DR和BDR思考题第章OSPF路由计算过程OSPF报文头OSPF五种协议报文邻接关系的形成与维持OSPF邻居状态机邻接关系形成后开始相互交流OSPF协议数据库交换过程OSPF协议路由计算过程思考题第章LSA链路状态通告LSA头部LSA分类LSA进一步阐述RouterLSA(Type)RouterLSAofRTNetworkLSA(Type)RTLSASummaryLSA(Type)TypeofRTTypeofRTExternalLSA(Type)ExternalTypeExternalTypeTypeDetailsNSSA(Type)TypeDetails初始状态的LSALSA交换之后接下来是?思考题第章设计规划OSPF网络OSPF区域Transit区域Transit区域Stub区域Stub区域完全Stubby区域完全Stubby区域NSSA区域NSSA区域虚链接VirtualLink虚链接举例路由聚合没有聚合的情况聚合后的情况网内流量部署外部路由引入OSPF验证功能思考题本章总结参考资料课程结束第章OSPF协议基本概念本课程由浅入深介绍了OSPF协议的基本概念OSPF路由计算过程以及如何合理规划设计OSPF网络。相信您学完本课程定能迅速成为一个OSPF高手。假设您对计算机网络结构有一定了解记住OSPF就是去寻找到某个终点计算机的最短路径的方法。OSPF协议概述现在Internet已广泛应用于军事科技教育工农业等各个领域发挥着越来越重要的作用它标志着信息时代的兴起。Internet的重要基础是TCPIP协议(TransmissionControlProtocolInternetProtocol即传输控制协议国际互连网协议)该协议是计算机用于网络通信的标准它是一个协议族包含控制传输标识等各方面的子协议。TCPIP协议中寻找一台计算机到另一台计算机的路由是很重要的一方面要判断是否能找到路一方面找到路后找一条短的路(花费时间最小)再一方面不能循环。最好还应该能动态处理路由变化如:接口的UP或DOWN时间花费的变化网络结构的改变等。网络上的节点通常通过路由器与整个网络联系它需要知道到达网络的另一个节点的路由。IETF(InternetEngineeringTaskForce)于年提出的OSPF是一个基于链路状态的动态路由协议。当前OSPF协议使用的是第二版最新的RFC是。协议的基本思路如下:在自治系统中每一台运行OSPF的路由器收集各自的接口邻接信息称为链路状态通过Flooding算法在整个系统广播自己的链路状态使得在整个系统内部维护一个同步的链路状态数据库根据这一数据库路由器计算出以自己为根其它网络节点为叶的一根最短的路径树从而计算出自己到达系统内部可达的最佳路由。OSPF是一类InteriorGatewayProtocol(内部网关协议IGP)它处理在一个自治系统中的路由表信息。OSPF协议基本特征OSPF协议具有如下特点:适应范围OSPF支持各种规模的网络最多可支持几百台路由器。快速收敛如果网络的拓扑结构发生变化OSPF立即发送更新报文使这一变化在自治系统中同步。无自环由于OSPF通过收集到的链路状态用最短路径树算法计算路由故从算法本身保证了不会生成自环路由。子网掩码由于OSPF在描述路由时携带网段的掩码信息所以OSPF协议不受自然掩码的限制对VLSM提供很好的支持。区域划分OSPF协议允许自治系统的网络被划分成区域来管理区域间传送的路由信息被进一步抽象从而减少了占用网络的带宽。等值路由OSPF支持到同一目的地址的多条等值路由即到达同一个目的地有多个下一跳这些等值路由会被同时发现和使用。路由分级OSPF使用类不同的路由按优先顺序来说分别是:区域内路由、区域间路由、第一类外部路由、第二类外部路由。支持验证它支持基于接口的报文验证以保证路由计算的安全性。组播发送OSPF在有组播发送能力的链路层上以组播地址发送协议报文即达到了广播的作用又最大程度的减少了对其他网络设备的干扰。OSPF相关术语与OSPF协议相关的术语主要包括:()​ RouterIDOSPF域中路由器的唯一标识()​ Area区域()​ Cost花费值()​ ABR、ASBR区域边界路由器、自治系统边界路由器()​ LSA链路状态通告()​ LinkType链路类型包括广播非广播点到点点到多点()​ DR和BDR指定路由器和非指定路由器()​ 区域类型骨干区域STUB区域TRANSIT区域()​ VirtualLink虚连接接下来的课程我们将会对这些术语作详细介绍。RouterIDRouterID:OSPF协议使用一个被称为RouterID的位无符号整数来唯一标识一台路由器。基于这个目的每一台运行OSPF的路由器都需要一个RouterID。这个RouterID一般需要手工配置一般将其配置为该路由器的某个接口的IP地址。由于IP地址是唯一的所以这样就很容易保证RouterID的唯一性。在没有手工配置RouterID的情况下一些厂家的路由器(包括Quidway系列)支持自动从当前所有接口的IP地址自动选举一个IP地址作为RouterID。RouterID选择注意点:()​ 首先选取最大的loopback接口地址()​ 如果没有配置loopback接口那么就选取最大的物理接口地址()​ 可以通过命令强制改变RouterID:VRP平台系统视图下routerid<ipaddress>()​ 如果一台路由器的RouterID在运行中改变则必须重启OSPF协议或重启路由器才能使新的RouterID生效协议号:OSPF协议用IP报文直接封装协议报文协议号是。Area区域OSPF引入区域的概念是为了隔离和区分自治系统内的各部分并由此减少路由器必须维护的整个自治系统的信息量可以针对不同区域的拓扑特点采用不同的策略也就意味着减少了路由器间传输和维护的OSPF路由表的额外信息。一个自治系统可以划分为多个区域。OSPF使用Area实现了分层两层模式即transitarea(backbone或area)和regularareas(nonbackboneareas)。transitarea负责的主要功能是IP包快速和有效的传输互联OSPF其他区域类型。一般的这个区域里不会出现终端用户(enduser)。regularareas负责的主要功能就是连接用户和资源这种区域一般是根据功能和地理位置来划分。一般情况下一个regulararea不允许其他区域的流量通过它到达另外一个区域必须穿越transitarea比如area。regularareas还可以有很多子类型比如stubarea和notsostubbyarea。区域号用一个bit的整数来标识可以定义为IPaddress格式也可以用一个十进制整数表示(ieArea,orArea)。其中区域保留为骨干区域非骨干区域一定要连接到骨干区域。为何需要骨干区域:OSPF划分区域之后并非所有的区域都是平等的关系。其中有一个区域是与众不同的它的区域号(AreaID)是通常被称为骨干区域(BackboneArea)。由于划分区域之后区域之间是通过ABR将一个区域内的已计算出的路由封装成Type类的LSA发送到另一个区域之中来传递路由信息。需要注意的是:此时的LSA中包含的已不再是链路状态信息而是纯粹的路由信息了。或者说此时的OSPF是基于DV算法而不是基于链路状态算法的了。这就涉及到一个很重要的问题:路由自环。因为DV算法无法保证消除路由自环。如果无法解决这个问题则区域概念的提出就是失败的。通过分析DV算法中路由环的产生的原因可知自环的产生主要是因为生成该条路由信息的路由器没有加入生成者的信息即每一条路由信息都无法知道最初是由谁所生成。OSPF协议在生成LSA时首先将自己的RouterID加入到LSA中但是如果该路由信息传递超过两个区域后就会丧失最初的生成者的信息。解决的方法是:所有ABR将本区域内的路由信息封装成LSA后统一的发送给一个特定的区域再由该区域将这些信息转发给其他区域。在这个特定区域内每一条LSA都确切的知道生成者信息。在其他区域内所有的到区域外的路由都会发送到这个特定区域中所以就不会产生路由自环。这个“特定区域”就是骨干区域。由上面的分析可知:所有的区域必须和骨干区域相连也就是说每一个ABR连接的区域中至少有一个是骨干区域。而且骨干区域自身也必须是连通的。注意:如果自治系统被划分成一个以上的区域则必须有一个区域是骨干区域并且保证其它区域与骨干区域直接相连或逻辑上相连且骨干区域自身也必须是连通的。COST值在OSPF路由协议中最短路径树的树干长度即OSPF路由器至每一个目的地路由器的距离称为OSPF的Cost。Cost值应用于每一个启动了OSPF的链路它是一个bit的正数范围是~。Cost值越小说明路径越好。OSPF选择路径是依靠整个链路Cost值的总和。那么Cost值是如何计算的呢?Cost(续)OSPF协议中Cost值的计算方法是用链路带宽。在这里链路带宽以bps来表示。也就是说OSPF的Cost与链路的带宽成反比带宽越高Cost越小表示OSPF到目的地的距离越近。举例来说k的链路花费是M以太网链路花费是k的链路花费是T的链路花费是。缺省情况下接口按照当前的波特率自动计算接口运行OSPF协议所需的开销。ABRASBRABR区域边界路由器(AreaBorderRouter):连接多个OSPF区域的路由器。ASBR自治系统边界路由器(AutonomousSystemBorderRouter):一个OSPF路由器但它连接到另一个AS或者在同一个AS的网络区域中但运行不同于OSPF的IGP。上图通过不同标志的线条显示了AS内部和AS外部之间路由信息交换的情况。思考题什么是RouterID有什么作用?为什么要划分区域?怎样合理规划区域?Cost值有什么作用?第章OSPF网络类型本章我们将重点介绍OSPF通过LSA描述的几种网络类型。OSPF通过LSA描述网络拓扑OSPF以本路由器邻接网络的拓扑结构为基础计算路由。每台路由器将自己邻接的网络拓扑描述出来传递给所有其它的路由器。根据链路层协议类型OSPF将网络分为四种类型:()​ 广播类型:链路层协议是Ethernet、FDDI、TokenRing以组播的方式发送协议报文选举DRBDR。()​ 非广播多路访问NonBroadcastMultiAccess(NBMA)类型:链路层协议是帧中继、ATM、HDLC或X时。手工指定邻居选举DRBDRDRBDR要求和DROTHER完全互连。()​ 点到多点PointtoMultipoint(pmp)类型:没有一种链路层协议会被缺省的认为是PointtoMultipoint类型。点到多点必然是由其他网络类型强制更改的常见的做法是将非全连通的NBMA改为点到多点的网络。多播hello包自动发现邻居不要求DRBDR的选举。()​ 点到点Pointtopoint(pp)类型:链路层协议是PPP或LAPB。无需选举DRBDR当只有两个路由器的接口要形成邻接关系的时候才使用。NBMA网络是指非广播、多点可达的网络典型的有ATM。可通过配置轮询间隔来指定路由器在与相邻路由器构成邻接关系之前发送轮询Hello报文的时间周期。若在NBMA网络中并非所有路由器之间都直接可达时可将接口配置成pmp方式。若该路由器在NBMA网络中只有一个对端则也可将接口类型改为pp方式。NBMA与pmp之间的区别:()​ 在OSPF协议中NBMA是指那些全连通的、非广播、多点可达网络。而点到多点的网络则并不需要一定是全连通的。()​ 在NBMA上需要选举DR与BDR而在点到多点网络中没有DR与BDR。()​ NBMA是一种缺省的网络类型例如:如果链路层协议是ATMOSPF会缺省的认为该接口的网络类型是NBMA(不论该网络是否全连通)。点到多点不是缺省的网络类型没有哪种链路层协议会被认为是点到多点点到多点必须是由其它的网络类型强制更改的。最常见的做法是将非全连通的NBMA改为点到多点的网络。()​ NBMA用单播发送协议报文需要手工配置邻居。点到多点是可选的即可以用单播发送又可以用多播发送报文。如上图所示显示了四种类型的拓扑。其中通过Hub连接的是广播型网络两台路由器直接相连的是点到点类型网络FRX连接的NBMA类型网络点到多点不是缺省的网络类型需要手工设置。邻居关系太多?对于广播和NBMA类型的网络其内部网络路由器之间是全连接的。如果网络内有上百台路由器那么将会形成很多的邻接关系两两互相形成即*(-)。这些邻居关系要定期更新链路状态数据库LSDB这样就会消耗大量的系统资源?应该怎么处理呢?DR和BDRDR的概念:在广播和NBMA类型的网络上任意两台路由器之间都需要传递路由信息(flood)如果网络中有N台路由器则需要建立N*(N)个邻接关系。任何一台路由器的路由变化都需要在网段中进行N*(N)次的传递。这是没有必要的也浪费了宝贵的带宽资源。为了解决这个问题OSPF协议指定一台路由器DR(DesignatedRouter)来负责传递信息。所有的路由器都只将路由信息发送给DR再由DR将路由信息发送给本网段内的其他路由器。两台不是DR的路由器(DROther)之间不再建立邻接关系也不再交换任何路由信息。这样在同一网段内的路由器之间只需建立N个邻接关系每次路由变化只需进行N次的传递即可。DR的产生过程:通过Hello报文的所带priority位和DR、BDR信息可以选出该网段的DR。所有路由器认可一个优先级最高的路由器作为DR优先级次高的作为BDR所有这个网段的路由器与DRBDR构成邻接关系。哪台路由器会成为本网段内的DR并不是人为指定的而是由本网段中所有的路由器共同选举出来的。DR的选举过程如下:​ 登记选民本网段内的运行OSPF的路由器​ 登记候选人本网段内的Priority>的OSPF路由器Priority是接口上的参数可以配置缺省值是​ 竞选演说一部分Priority>的OSPF路由器自己是DR​ 投票在所有自称是DR的路由器中选priority值最大的当选若两台路由器的priority值相等则选RouterID最大的当选。选票就是HELLO报文每台路由器将自己选出的DR写入HELLO中发给网段上的每台路由器稳定压倒一切:由于网段中的每台路由器都只和DR建立邻接关系。如果DR频繁的更迭则每次都要重新引起本网段内的所有路由器与新的DR建立邻接关系。这样会导致在短时间内网段中有大量的OSPF协议报文在传输降低网络的可用带宽。所以协议中规定应该尽量的减少DR的变化。具体的处理方法是每一台新加入的路由器并不急于参加选举而是先考察一下本网段中是否已有DR存在。如果目前网段中已经存在DR即使本路由器的priority比现有的DR还高也不会再声称自己是DR了。而是承认现有的DR。快速响应:如果DR由于某种故障而失效这时必须重新选举DR并与之同步。这需要较长的时间在这段时间内路由计算是不正确的。为了能够缩短这个过程OSPF提出了BDR(BackupDesignatedRouter)的概念。BDR实际上是对DR的一个备份在选举DR的同时也选举出BDRBDR也和本网段内的所有路由器建立邻接关系并交换路由信息。当DR失效后BDR会立即成为DR由于不需要重新选举并且邻接关系事先已建立所以这个过程是非常短暂的。当然这时还需要重新选举出一个新的BDR虽然一样需要较长的时间但并不会影响路由计算。注意:​ 网段中的DR并不一定是priority最大的路由器同理BDR也并不一定就是priority第二大的路由器。​ DR是指某个网段中概念是针对路由器的接口而言的。某台路由器在一个接口上可能是DR在另一个接口上可能是BDR或者是DROther。​ 只有在广播和NBMA类型的接口上才会选举DR在pointtopoint和pointtomuiltipoint类型的接口上不需要选举。​ 两台DROther路由器之间不进行路由信息的交换但仍旧互相发送HELLO报文。他们之间的邻居状态机停留在Way状态。广播网络或NBMA类型的网络需要选举指定路由器DR(DesignatedRouter)和备份指定路由器BDR(BackupDesignatedRouter)。路由器接口的优先级Priority将影响接口在选举DR时所具有的资格。优先级为的路由器不会被选举为DR或BDR。DR由本网段中所有路由器共同选举。Priority大于的路由器都可作为“候选者”选票就是Hello报文OSPF路由器将自己选出的DR写入Hello报文中发给网段上的其它路由器。当同一网段的两台路由器都宣布自己是DR时选择Priority高的。如果Priority相等选择RouterID大的。如果DR失效则网络中的路由器必须重新选举DR并与新的DR同步为了缩短这个过程OSPF提出了BDR(BackupDesignatedRouter备份指定路由器)的概念与DR同时被选举出来。BDR也与本网段内的所有路由器建立邻接关系并交换路由信息。DR失效后BDR立即成为DR由于不需要重新选举并且邻接关系已经建立所以这个过程可以很快完成。这时还需要选举出一个新的BDR但已不会影响路由的计算。需要说明的是:DR并不一定是网段中Priority最大的路由器同理BDR也并不一定就是Priority第二大的路由器。若DR、BDR已经选择完毕即使有一台Priority值更大的路由器加入它也不会成为该网段中的DR。DR是网段中的概念是针对路由器的接口而言的。某台路由器在一个接口上可能是DR在另一个接口上可能是BDR或者是DROther。只有在广播或NBMA类型的接口时才会选举DR在点到点或点到多点类型的接口上不需要选举DR。思考题()​ LSA描述的网络类型主要有哪些?()​ 为什么要选举DR和BDR?它们有什么作用?第章OSPF路由计算过程在介绍了OSPF协议的各种术语之后接下来我们详细介绍OSPF协议路由计算的过程。OSPF报文头Version#OSPF版本号当前版本。TypeOSPF报文类型包括Hello、DD、LSR、LSU和LSAck等五种报文。RouterID报文起源的RouterID。AreaID一个位的数标识报文属于哪个区域所有OSPF报文只属于单个区域且只有一跳。当报文在虚链接上承载时会打上骨干区域的标签。Checksum包的整个内容的校验从OSPF报文头部开始但是除了位的认证字段。AuType认证类型包括四种:(无需认证)(明文认证)(密文认证)和其他类型(IANA保留)。当不需要认证时只是通过Checksun检验数据的完整性当使用明文认证时位的认证字段被设置成位的明文密码当使用密文认证时对于每一个OSPF报文共享密钥都会产生一个“消息位”加在OSPF报文的后面由于在网络上从来不以明文的方式发送密钥所以提高了网络安全性。OSPF五种协议报文OSPF的报文类型一共有五种:HELLO报文(HelloPacket):最常用的一种报文周期性的发送给本路由器的邻居使用的组播地址。DR和BDR发送和接收报文使用的组播地址是。HELLO报文内容包括一些定时器的数值DRBDR以及自己已知的邻居。根据RFC的规定要保持网络邻居间的hello时间间隔一致。需要注意的是hello时钟的值与路由收敛速度、网络负荷大小成反比。缺省情况下pp、broadcast类型接口发送Hello报文的时间间隔的值为秒pmp、nbma类型接口发送Hello报文的时间间隔的值为秒。DD报文(DatabaseDescriptionPacket):路由信息(连接状态传送报文)只在形成邻接关系的路由器间传递。首先它们之间互发DD(databasedescription)报文告之对方自己所拥有的路由信息内容包括LSDB中每一条LSA的摘要(摘要是指LSA的HEAD通过该HEAD可以唯一标识一条LSA)。这样做是为了减少路由器之间传递信息的量因为LSA的HEAD只占一条LSA的整个数据量的一小部分根据HEAD对端路由器就可以判断出是否已经有了这条LSA。DD报文有两种一种是空DD报文用来确定MasterSlave关系(避免DD报文的无序发送)确定MasterSlave关系后才发送有路由信息的DD报文收到有路由信息的DD报文后比较自己的数据库发现对方的数据库中有自己需要的数据则向对方发送LSR(LinkStateRequest)报文请求对方给自己发送数据。LSR报文(LinkStateRequestPacket):两台路由器互相交换过DD报文之后知道对端的路由器有哪些LSA是本地的LSDB所缺少的或是对端更新的LSA这时需要发送LSR报文向对方请求所需的LSA。内容包括所需要的LSA的摘要。LSU报文(LinkStateUpdatePacket):用来向对端路由器发送所需要的LSA内容是多条LSA(全部内容)的集合。LSAck报文(LinkStateAcknowledgmentPacket)由于没有使用可靠的TCP协议但是OSPF包又要求可靠的传输所以就有了LSAck包。它用来对接收到的LSU报文进行确认。内容是需要确认的LSA的HEAD(一个报文可对多个LSA进行确认)。DD报文、LSR报文、LSU报文发出后在没有得到应有的对方相应的LSR、LSU、LSAck报文时会重发。(例外:对DD报文若收到后发现没有必要产生连接状态请求报文则不发连接状态请求报文。)同步后数据改变则只向形成Adjacency关系的路由器发LSU报文。邻接关系的形成与维持为了交换路由信息邻居路由器之间首先要建立邻接关系并不是每两个邻居路由器之间都能建立邻接关系。Hello报文主要负责建立和维护邻接关系周期性的在路由器的接口上发送。当路由器发现自己被列在邻居路由器的hello报文中双向通信就建立起来。在不同类型的链路上hello报文工作的方式也不同。HELLOInterval:接口上发送报文的时间间隔以秒为单位。如果两路由器不具有相同的呼叫周期则不能成为邻接关系。DEADInterval:如果在DEADTIME指定的秒数内没有从已建立的邻居处收到报文那么邻居被宣布为故障状态。如果Hello报文中的DeadInterval与接收端口所设置的DeadInterval值不相同则丢弃该报文。因此要确保两邻居路由器具有相同的参数。邻接关系形成之后接下来就是同步链路状态数据库。OSPF邻居状态机Down:邻居状态机的初始状态是指在过去的DeadInterval时间内没有收到对方的Hello报文。Attempt:只适用于NBMA类型的接口处于本状态时定期向那些手工配置的邻居发送HELLO报文。Init:本状态表示已经收到了邻居的HELLO报文但是该报文中列出的邻居中没有包含我的RouterID(对方并没有收到我发的HELLO报文)。Way:本状态表示双方互相收到了对端发送的HELLO报文建立了邻居关系。在广播和NBMA类型的网络中两个接口状态是DROther的路由器之间将停留在此状态。其他情况状态机将继续转入高级状态。ExStart:在此状态下路由器和它的邻居之间通过互相交换DD报文(该报文并不包含实际的内容只包含一些标志位)来决定发送时的主从关系。建立主从关系主要是为了保证在后续的DD报文交换中能够有序的发送。Exchange:路由器将本地的LSDB用DD报文来描述并发给邻居。Loading:路由器发送LSR报文向邻居请求对方的LSA。Full:在此状态下邻居路由器的LSDB中所有的LSA本路由器全都有了。即本路由器和邻居建立了邻接(adjacency)状态。注:​ 灰色的状态是指稳定的状态其他状态则是在转换过程中瞬间(一般不会超过几分钟)存在的状态。​ 本路由器和状态可能与对端路由器的状态不相同。例如本路由器的邻居状态是Full对端的邻居状态可能是Loading。邻接关系形成后开始相互交流数据库交换的过程主要包括:()​ 主从关系协商()​ DD报文交换()​ LSA请求()​ LSA更新()​ LSA应答下面的内容我们详细介绍OSPF数据库交换过程。OSPF协议数据库交换过程上图显示了两台路由器之间如何通过发送种协议报文来建立邻接关系以及邻居状态机的迁移。()​ RT的一个连接到广播类型网络的接口上激活了OSPF协议并发送了一个HELLO报文(使用组播地址)。由于此时RT在该网段中还未发现任何邻居所以HELLO报文中的Neighbor字段为空。()​ RT收到RT发送的HELLO报文后为RT创建一个邻居的数据结构。RT发送一个HELLO报文回应RT并且在报文中的Neighbor字段中填入RT的Routerid表示已收到RT的HELLO报文并且将RT的邻居状态机置为Init。()​ RT收到RT回应的HELLO报文后为RT创建一个邻居的数据结构并将邻居状态机置为Exstart状态。下一步双方开始发送各自的链路状态数据库。​ 为了提高发送的效率双方需先了解一下对端数据库中那些LSA是自己所需要的(如果某一条LSA自己已经有了就不再需要请求了)。方法是先发送DD报文DD报文中包含了对本地数据库中LSA的摘要描述(每一条摘要可以惟一标识一条LSA但所占的空间要少得多)。由于OSPF直接用IP报文来封装自己的协议报文所以在传输的过程中必须考虑到报文传输的可靠性。为了做到这一点在DD报文的发送过程中需要确定双方的主从关系。作为Master的一方定义一个序列号seq每发送一个新的DD报文将seq加一。作为Slave的一方每次发送DD报文时使用接收到的上一个Master的DD报文中的seq。实际上这种序列号机制是一种隐含的确认方法。如果再加上每个报文都有超时重传就可以保证这种传输是可靠的。​ RT首先发送一个DD报文宣称自己是Master(MS=)并规定序列号为x。I=表示这是第一个DD报文报文中并不包含LSA的摘要只是为了协商主从关系。M=说明这不是最后一个报文。()​ RT在收到RT的DD报文后将RT的邻居状态机改为Exstart并且回应了一个DD报文(该报文中同样不包含LSA的摘要信息)。由于RT的RouterID较大所以在报文中RT认为自己是Master并且重新规定了序列号为y。()​ RT收到报文后同意了RT为Master并将RT的邻居状态机改为Exchange。RT使用RT的序列号y来发送新的DD报文该报文开始正式地传送LSA的摘要。在报文中RT将MS=说明自己是Slave。()​ RT收到报文后将RT的邻居状态机改为Exchange并发送新的DD报文来描述自己的LSA摘要需要注意的是:此时RT已将报文的序列号改为y了。()​ 上述过程持续进行RT通过重复RT的序列号来确认已收到RT的报文。RT通过将序列号来确认已收到RT的报文。当RT发送最后一个DD报文时将报文中的M=表示这是最后一个DD报文了。()​ RT收到最后一个DD报文后发现RT的数据库中有许多LSA是自己没有的将邻居状态机改为Loading状态。此时RT也收到了RT的最后一个DD报文但RT的LSART都已经有了不需要再请求所以直接将RT的邻居状态机改为Full状态。()​ RT发送LSRequest报文向RT请求所需要的LSA。RT用LSUpdate报文来回应RT的请求。RT收到之后需要发送LSAck报文来确认。上述过程持续到RT中的LSA与RT的LSA完全同步为止。此时RT将RT的邻居状态机改为Full状态。注意:以上讨论是基于系统初始化达到同步过程的描述。但在系统达到同步后某一台路由器的路由表发生变化(如:接口UPDOWN花费改变)OSPF的处理方法就有所不同:只对路由变化的部分发送变化对应的LSU报文对路由减少的项(接口或路由器DOWN掉)把Age位置位为MaxAge(秒)收到该LSU报文的路由器比较自己的路由表如果跟自己的路由表不同则把路由表更新发送相应的LSU报文。如此类似链式反应的发送我们称之为“泛洪”把升级的路由表在系统内同步了。数据库同步的简要概括:路由信息(LSA)只在形成邻接关系的路由器之间传递通过互发DD报文来实现。假设RTA、RTB为两台具有邻接关系的路由器首先RTA发送一种空DD报文用来确定MasterSlave关系(避免DD报文的无序发送)。然后RTA发送有路由信息DD报文给RTBRTB将报文与自己的数据库比较。如果发现对方那里有自己需要的数据则向对方发送连接状态请求报文请求对方给自己发送相应数据。RTA收到连接状态请求报文后按要求发送新的路由信息给对方即发送连接状态升级报文。收到连接状态升级报文后RTB会发送连接状态响应报文以示收到。通过邻接间的连接状态传送报文的传递路由信息在同一个网段内达到同步。可能会有路由器属于同一区域内的两个不同网段A、B(只需在两个接口上配置OSPF)那么这个路由器会把A、B网段的信息互相传播以使两网段的信息同步。依此类推:区域内不同网段的信息可以全部达到同步。作为边界路由器由协议规定它应该属于骨干它会把它得到的路由信息摘要发给骨干上其他点。骨干上的点会首先得到全自治系统的拓扑结构然后把它传道所连的非骨干区域内部。这样所有的路由器都得到了整个自治系统的拓扑结构。对于ASBR发送自己接收到的其他AS传送来的LSA给本AS内部的路由器同样也将本AS内部的信息组合成LSA发送到其他AS的ASBR。这样任何一个路由器都可以知道整个网络的LADB。即可以判断是否存在一条通往网络上其他节点的路由。OSPF协议路由计算过程上图中描述了通过OSPF协议计算路由的过程。由四台路由器组成的网络连线旁边的数字表示从一台路由器到另一台路由器所需要的花费。为简化问题我们假定两台路由器相互之间发送报文所需花费是相同的。首先每台路由器都根据自己周围的网络拓扑结构生成一条LSA(链路状态广播)并通过相互之间发送协议报文将这条LSA发送给网络中其它的所有路由器。这样每台路由器都收到了其它路由器的LSA所有的LSA放在一起称作LSDB(链路状态数据库)。显然台路由器的LSDB都是相同的。其次由于一条LSA是对一台路由器周围网络拓扑结构的描述那么LSDB则是对整个网络的拓扑结构的描述。路由器很容易将LSDB转换成一张带权的有向图这张图便是对整个网络拓扑结构的真实反映。显然台路由器得到的是一张完全相同的图。最后接下来每台路由器在图中以自己为根节点使用SPF算法计算出一棵最短路径树由这棵树得到了到网络中各个节点的路由表。显然台路由器各自得到的路由表是不同的。这样每台路由器都计算出了到其它路由器的路由。由上面的分析可知:OSPF协议计算出路由主要有以下三个主要步骤:​ 描述本路由器周边的网络拓扑结构并生成LSA。​ 将自己生成的LSA在自治系统中传播。并同时收集所有的其他路由器生成的LSA。根据收集的所有的LSA计算路由。路由计算用的算法是Dijkstra算法描述如下:Step:把root加入最小树设root可直达的顶点为候选人。Step:若候选人列表空则最小树生成完成否则候选人列表中选取花费最小的加入到最小树中。Step:把新加入的顶点所能直达的顶点列为候选人。Step:在候选人名单里除去最小树中已出现的回Step工作过程:通过LSDB可得各路由器的连接(link)状态(state)利用Dijkstra算法可由“内”向“外”从区域内到区域间从AS内到AS外逐步生成最小树,进而生成路由表。在计算过程中以路由器附属的每一个区域为出发点计算每一个区域的最小树(相当与一个阶段性的最小树)区域的最小树包括该区域内部路由器和子网该区域所知道的其它区域的子网节点该区域所知道的ASBR路由器ASE节点系统根据所得的区域的最小树逐区域改进最小树最后生成全局的最小树改进路由表并根据路由表的变化调用生成和发送连接状态传送报文的函数向外发送新的连接信息。下面详细介绍路由表计算过程:()​ 初始化保存旧的路由表。()​ 用Dijkstra算法计算IntraArea的路由(包括ABR)。()​ 通过检查SummaryLSA计算InterArea的路由若Router是区域边界的ABR则只检查Backbone的SummaryLSA。()​ Root是ABR且连着TransitArea检查是否有更好的路由(指利用虚连接改进路由)。()​ 通过ASExternalLSA计算AS外部路由。计算是按根节点所连的区域逐个区域来计算的对于每一个区域分别进行计算,且在计算过程中逐步改进路由表。路由比较规则:若有两个不同路由到同一个节点按以下规则选取:同一级别的路由比较总是选小的花费的路由对于不同级别的路由,分为含AS外部的路由:()​ INT路由(区域内路由与区域间路由)在AS外路由之前考虑即不含外部路由的路由优先于含外部路由的路由。()​ type在ypte之前考虑小type比大type优先。()​ 若新的AS外部路由仍不可从当前的路由表入口的路由区分大小选择基于IntraAS的到ASBR路由。()​ 仍不可分选少花费的。()​ 视为等价ASE花费路由。例如:从路由器A有一条到路由器B的类外部路由rt总的花费是现在路由器得到一条新的由A到B的新的路由rt:若rt是自治系统内部路由则系统将rt加入路由表同时删去路由表中的rt。若rt是类外部路由则系统忽略rt路由。不含AS外部路由的路由:优先级由高到低为:()​ 区域内路由()​ 骨干区域内路由()​ 区域间路由(指从经过了两个区域的路由但又不是虚连接构成的骨干区域内路由)比较时先看两条路由的优先级是否相同如果相同的话按一定规则取的花费小的路由。花费相同的两条路由视为等价路由。如果优先级不同的话取高优先级的路由。思考题()​ OSPF协议报文有哪些?()​ OSPF协议路由计算的过程是怎样的?第章LSA链路状态通告这一部分我们重点介绍OSPF各种链路状态通告LSA也是深刻理解OSPF协议的关键。LSA头部首先我们分析一下LSA报文头:所有LSA头部都有个字节它包含了足够的信息来唯一标识一条LSA(LStypeLinkStateIDandAdvertisingRouter)。LSA多实例在同一时候可以存在于路由域中它被用来决定哪一个实例是最新的。LSA头部还包括LS老化、LS序列号和LS校验和等字段。LSage用来标识LS产生的时间。生成LSA的路由器将LS时域初始化为在洪泛过程中每经过一个路由器要按InfTransDelay的量增加这个量表示传输LSA到下一个跳所需要的时间。当该时间达到所设定的MaxAge参数时要撤消该LSA。Options用来描述支持的路由域主要包括DC、EA、NP、MC、E、T等选项。DC指的是始发路由器支持DemandCircuits(按需拨号等)EA指的是始发路由器支持ExternalAttributesLSAs(现在未推广)NP只用在Hello中N=说明支持NSSAP只用在NSSA中通知ABR把type的LSA翻译成type的LSAMC只在MOSPF中用到E表示可以接受外部路由(不是stub区)在一个area中的所有router此位必须一致(Hello中体现)否则邻接关系无法建立T表示始发路由器支持TOS。LStype链路类型。每种类型的LSA都有唯一的通告格式。LinkStateID这个字段标识被描述的网络环境的一部分LinkStateID的内容取决于LSA的类型即不同类型的LSA其LinkStateID也是不同的。比如当LSA的类型是Type时LinkStateID是始发路由器的RouterID当LSA的类型是Type时LinkStateID是DR在该网段上接口的IP地址当LSA的类型是Type时LinkStateID是被通告的网络子网的IP地址当LSA的类型是Type时LinkStateID是被通告ASBR的RouterID当LSA的类型是Type时LinkStateID是目的地的IP地址。AdvertisingRouter指始发此LSA的路由器的RouterID。比如在NetworkLSAs中这个字段就是DR在该网段上接口的IP地址。LSsequencenumber用于识别LSA包是否是一个最新包。路由器每生成一个新的LSA时将该序列号加。LSchecksum用来检查LSA的完整性包括除了LSage之外的LSA头部的内容。LengthLSA的长度用bytes表示。LSA的头部包括字节。LSA头中的链路类型、链路状态ID和通告路由器的RouterID是一个LSA的唯一标识。一个LSA将有多个实例不同的实例通过LS的序列号、LS的校验和及LS的Age字段来描述。因此必须要决定其实例是否是最近的这要通过检查LS的序列号、LS的校验和及LS的Age字段内容。LSA分类LSA分类:OSPF是基于链路状态算法的路由协议所有对路由信息的描述都是封装在LSA中发送出去。LSA根据不同的用途分为不同的种类主要有如下类型的LSA:RouterLSA(Type=):是最基本的LSA类型所有运行OSPF的路由器都会生成这种LSA。主要描述本路由器运行OSPF的接口的连接状况花费等信息。对于ABR它会为每个区域生成一条RouterLSA。这种类型的LSA传递的范围是它所属的整个区域。NetwrokLSA(Type=):本类型的LSA由DR生成。对于广播和NBMA类型的网络为了减少该网段中路由器之间交换报文的次数而提出了DR的概念。一个网段中有了DR之后不仅发送报文的方式有所改变链路状态的描述也发生了变化。在DROther和BDR的RouterLSA中只描述到DR的连接而DR则通过NetworkLSA来描述本网段中所有已经同其建立了邻接关系的路由器。(分别列出它们RouterID)。同样这种类型的LSA传递的范围是它所属的整个区域。NetworkSummaryLSA(Type=):本类型的LSA由ABR生成。当ABR完成它所属一个区域中的区域内路由计算之后查询路由表将本区域内的每一条OSPF路由封装成NetworkSummaryLSA发送到区域外。LSA中描述了某条路由的目的地址、掩码、花费值等信息。这种类型的LSA传递的范围是ABR中除了该LSA生成区域之外的其他区域。ASBRSummaryLSA(Type=):本类型的LSA同样是由ABR生成。内容主要是描述到达本区域内部的ASBR的路由。这种LSA与Type类型的LSA内容基本一样只是Type的LSA描述的目的地址是ASBR是主机路由所以掩码为。这种类型的LSA传递的范围与Type的LSA相同。ASExternalLSA(Type=):本类型的LSA由ASBR生成。主要描述了到自治系统外部路由的信息LSA中包含某条路由的目的地址、掩码、花费值等信息。本类型的LSA是唯一一种与区域无关的LSA类型它并不与某一个特定的区域相关。这种类型的LSA传递的范围整个自治系统(STUB区域除外)。MulticastOSPFLSA(Type=):使用在OSPF多播应用程序里。NotSoStubbyArea(Type=):使用在NotSoStubbyarea(NSSA)里。ExternalAttributesLSA(Type=):特殊的LSA还没有实现。当BGP信息需要在OSPF上承载时需要用到此LSA。opaqueLSA(Type=~):用于MPLS流量工程有关此LSA的详细应用请参考MPLS流量工程培训教材或RFC文档。LSA进一步阐述如上图所示我们进一步阐述各种类型的LSA。两个自治系统分别是AS和AS其中Area是骨干区域Area和Area是非骨干区域Area是NSSA区域Area经过中间区域Area与骨干区域通信。AS内部运行OSPF协议AS内部运行RIPv协议。自治系统之间通过BGP连接。RouterLSA(Type)上图显示了TypeLSA报文格式不包括LSA报文头:RouterLSAs是TypeLSAs区域中的每台路由器产生一条RouterLSAs特定区域内该路由器的所有链路都要描述在一个LSA里面这种类型的LSA描述了到这个区域的路由器链路的状态和花费所有到这个区域的路由器的链路必须用唯一的RouterLSAs描述出来。在routerLSAs里LinkStateID字段被设置成路由器的OSPFRouterID。RouterLSAs仅仅被泛洪到特定的区域不再传播到其他区域。VEB:用于确定路由器的链路类型。V比特V指virtual路由器是虚链路的端点E比特E指external当设置此位时表示这台路由器是自治系统边界路由器B比特指border当设置此位时表示这台路由器是区域边界路由器。#links一台Router可以同时携带若干个链路信息每个链路包括链路ID、链路数据、链路类型、#TOS、费用度量、TOS、TOS度量值等信息用于描述路由器某接口的链路信息。LinkID标识路由器连接对象这个值取决于链路状态类型。当链路类型是Type则为邻居路由器的ID当链路类型type则为DR接口的IP地址当链路类型type则为IP网络子网号当链路类型type则为邻居路由器的ID。LinkData这个值同样取决于链路类型字段。Type链路类型的简短描述包括通过Pointtopoint链路连接到另一台Router连接到一个transit网络连接到一个stub网络和Virtuallink。#TOS链路服务类型号。在RFC中该TOS已不再使用。Metric链路费用度量。TOS和TOSmetricIP的服务类型与服务度量值。RouterLSAofRT上图显示了RT的Type类型的LSA。因为是Type类型的LSA根据OSPF协议规定Lsid就是产生此LSA的RouterID即。Advrtr:表明这条LSA的始发者是路由器。LinkID:是说RT连接的对象发送的数据是两者之间连接类型是Virtual虚连接。NetworkLSA(Type)上图显示了TypeLSA报文格式不包括LSA头部:NetworkLSAs是Type类型的LSA。在广播和NBMA类型的网络中这种类型的LSA由DR路由器产生描述了

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/80

OSPF协议原理

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利