OSPF路由协议综述及其配置.docx
《OSPF路由协议综述及其配置.docx》由会员分享,可在线阅读,更多相关《OSPF路由协议综述及其配置.docx(22页珍藏版)》请在冰豆网上搜索。
![OSPF路由协议综述及其配置.docx](https://file1.bdocx.com/fileroot1/2022-10/28/ca4d346b-a9d9-4fb7-ac4d-448d87fd066f/ca4d346b-a9d9-4fb7-ac4d-448d87fd066f1.gif)
OSPF路由协议综述及其配置
链路状态路由协议(link-stateroutingprotocol)的一些特征:
1.对网络发生的变化能够快速响应
2.当网络发生变化的时候发送触发式更新(triggeredupdate)
3.发送周期性更新(链路状态刷新),间隔时间为30分钟
链路状态路由协议只在网络拓扑发生变化以后产生路由更新.当链路状态发生变化以后,检测到变化的设备创建LSA(linkstateadvertisement),通过使用组播地址传送给所有的邻居设备,然后每个设备拷贝一份LSA,更新它自己的链路状态数据库(linkstatedatabase,LSDB),接着再转发LSA给其他的邻居设备.这种LSA的洪泛(flooding)保证了所有的路由设备在更新自己的路由表之前更新它自己的LSDB
LSDB通过使用Dijkstra算法(shortestpathfirst,SPF)来计算到达目标网络的最佳路径,建立一条SPF树(tree),然后最佳路径从SPF树里选出来,被放进路由表里OSPF和IS-IS协议被归类到链路状态路由协议中.链路状态路由协议在一个特定的区域(area)里从邻居处收集网络信息,一旦路由信息都被收集齐以后,每个路由器开始通过使用Dijkstra算法(SPF)独立计算到达目标网络的最佳路径
运行了链路状态路由协议的路由器跟踪以下信息:
1.它们各自的邻居
2.在同一个区域中的所有路由器
3.到达目标网络的最佳路径
Link-StateDataStructures
为了能够做出更好的路由决策,OSPF路由器必须维持的有以下内容:
1.neighbortable:
也叫adjacencydatabase.存储了邻居路由器的信息.如果一个OSPF路由器和它的邻居路由器失去联系,在几秒中的时间内,它会标记所有到达那条路由均为无效并且重新计算到达目标网络的路径
2.topologytable:
一般叫做LSDB.OSPF路由器通过LSA学习到其他的路由器和网络状况,LSA存储在LSDB中
3.routingtable:
也就是我们所说的路由表了,也叫forwardingdatabase,包含了到达目标网络的最佳路径的信息
链路状态路由协议和距离向量路由协议的一个区别就是:
距离向量路由协议是routingbyrumors,也就是说,距离向量路由协议依靠邻居发给它的信息来做路由决策,而且路由器不需要保持完整的网络信息;而运行了链路状态路由协议的路由器保持的有完整的网络信息的快照,而且每个路由器自己做出路由决策
DefininganOSPFArea
OSPF的网络设计要求是双层层次化(2-layerhierarchy),包括如下2层:
1.transitarea(backbone或area0)
2.regularareas(nonbackboneareas)
transitarea负责的主要功能是IP包快速和有效的传输.transitarea互联OSPF其他区域类型.一般的,这个区域里不会出现端用户(enduser)
regularareas负责的主要功能就是连接用户和资源.这种区域一般是根据功能和地理位置来划分.一般的,一个regulararea不允许其他区域的流量通过它到达另外一个区域,必须穿越transitarea比如area0.regularareas还可以有很多子类型,比如stubarea,locallyarea和not-so-stubbyarea
在链路状态路由协议中,所有的路由器都保持的有LSDB,OSPF路由器越多,LSDB就越大.这可能对了解完整的网络信息有帮助,但是随着网络的增长,可扩展性的问题就会越来越大.采用的折中方案就是引入区域的概念.在某一个区域里的路由器只保持的有该区域中所有路由器或链路的详细信息和其他区域的一般信息.当某个路由器或某条链路出故障以后,信息只会在那个区域以内在邻居之间传递.那个区域以外的路由器不会收到该信息.OSPF要求层次化的网络设计,意味着所有的区域要和area0直接相连.如下图:
注意area1和area2或3之间的连接是不允许的,它们都必须通过backbonearea0进行连接.Cisco建议每个区域中路由器的数量为50到100个构建area0的路由器称为骨干路由器(backbonerouter,BR),如上图,A和B就是BR;区域边界路由器(areaborderrouter,ABR)连接area0和nonbackboneareas.如图,C,D和E就是ABR.ABR通常具有以下特征:
1.分隔LSA洪泛的区域
2.是区域地址汇总的主要因素
3.一般做为默认路由的源头
4.为每个区域保持LSDB
理想的设计是使每个ABR只连接2个区域,backbone和其他区域,3个区域为上限
DefiningOSPFAdjacencies
运行OSPF的路由器通过交换hello包和别的路由器建立邻接(adjacency)关系,过程如下:
1.路由器和别的路由器交换hello包,目标地址采用多播地址
2.hello包交换完毕,邻接关系形成
3.接下来通过交换LSA和对接收方的确认进行同步LSDB.对于OSPF路由器而言,进入完全邻接状态
4.如果需要的话,路由器转发新的LSA给其他的邻居,来保证整个区域内LSDB的完全同步
对于点到点的WAN串行连接,两个OSPF路由器通常使用HDLC或PPP来形成完全邻接状态
对于LAN连接,选举一个路由器做为designatedrouter(DR)再选举一个做为backupdesignatedrouter(BDR),所有其他的和DR以及BDR相连的路由器形成完全邻接状态而且只传输LSA给DR和BDR.DR从邻居处转发更新到另外一个邻居那里.DR的主要功能就是在一个LAN内的所有路由器拥有相同的数据库,而且把完整的数据库信息发送给新加入的路由器.路由器之间还会和LAN内的其他路由器(非DR/BDR,即DROTHERs)维持一种部分邻居关系(two-wayadjacency)
OSPF的邻接一旦形成以后,会交换LSA来同步LSDB,LSA将进行可靠的洪泛
OSPFCalculation
链路状态陆游协议使用Dijkstra算法来查找到达目标网络中的最佳路径.所有的路由器拥有相同的LSDB后,把自己放进SPFtree中的root里,然后根据每条链路的耗费(cost),选出耗费最低的做为最佳路径,最后把最佳路径放进forwardingdatabase(路由表)里
下图就是一个SPF计算的例子:
1.LSA遵循splithorizon原则,H对E宣告它的存在,E把H的宣告和它自己的宣告再传给C和G;C和G再和之前类似,继续传播开来……
2.X有4个邻居:
A,B,C和D,假设这里都是以太网,每条网链路的耗费为10,经过计算,路由器可以算出最佳路径.上图的右半部分实线所标即为最佳路径
LSDataStructures:
LSAOptions
关于LSA的操作流程图如下:
如图可以看出当路由器收到一个LSA以后,先会查看它自己的LSDB看有没有相应的条目,如果没有就加进自己的LSDB中去,并反馈LSA确认包(LSAck),接着再继续洪泛LSA,最后运行SPF算法算出新的路由表
如果当它收到LSA的时候,自己的LSDB有该条目而且版本号一样,就忽略这个LSA;如果有相应条目,但是收到的LSA的版本号更新,就加进自己的LSDB中,发回LSAck,洪泛LSA,最后用SPF计算最佳路径;如果版本号没有自己LSDB中那条新,就反馈LSU信息给发送源
TypesofOSPFPackets
OSPF包的5种类型如下:
1.hello:
用来建立邻居关系的包
2.databasedescription(DBD):
用来检验路由器之间数据库的同步
3.linkstaterequest(LSR):
链路状态请求包
4.linkstateupdate(LSU):
特定链路之间的请求记录
5.linkstateacknowledgement(LSAck):
确认包
OSPFPacketHeaderFormat
5种OSPF包都是直接被封装在IP包里的而不使用TCP或UDP.由于没有使用可靠的TCP协议,但是OSPF包又要求可靠的传输,所以就有了LSAck包.如下图所示就是OSPF包在IP包里的形式:
协议号为89(EIGRP协议号为8,一些字段如下:
1.VersionNumber:
当前为OSPF版本2
2.Type:
定义OSPF包的类型
3.PacketLength:
包的长度,单位字节
4.RouterID(RID):
产生OSPF包的源路由器
5.AreaID:
定义OSPF包是从哪个area产生出来的
6.Checksum(校验和):
错误校验
7.AuthenticationType:
验证方法,可以是明文(cleartext)密码或者是MessageDigest5(MD5)加密格式
8.Data:
对于hello包来说,该字段是已知邻居的列表;对于DBD包来说,该字段包含的是LSDB的汇总信息,包括RID等等;对于LSR包来说,该字段包含的是需要的LSU类型和需要的LSU类型的RID;对于LSU包来说,包含的是完全的LSA条目,多个LSA条目可以装在一个包里;对于LSAck来说,字段为空
OSPFNeighborAdjacencyEstablishment
Hello协议用来建立和保持OSPF邻居关系,采用多播地址224.0.0.5,hello包包含的信息如下:
1.RouterID(RID):
路由器的32位长的一个唯一标识符,选举规则是,如果loopback接口不存在的话,就选物理接口中IP地址等级最高的那个;否则就选取loopback接口
2.hello/deadintervals:
定义了发送hello包频率(默认在一个多路访问网络中间隔为10秒);dead间隔是4倍于hello包间隔.邻居路由器之间的这些计时器必须设置成一样
3.neighbors:
邻居列表
4.areaID:
为了能够通信,OSPF路由器的接口必须属于同一网段中的同一区域(area),即共享子网以及子网掩码信息
5.routerpriority:
优先级,选举DR和BDR的时候使用.8位长的一串数字
6.DR/BDRIPaddress:
DR/BDR的IP地址信息
7.authenticationpassword:
如果启用了验证,邻居路由器之间必须交换相同的密码信息.此项可选
8.stubareaflag:
stubarea是通过使用默认路由代替路由更新的一种技术(有点像EIGRP中的stub功能)
1.星型(star/hub-and-spoke):
最常见的帧中继网络拓扑,代价最小
2.全互连(full-mesh):
冗余,但是代价大,在这样的环境中计算VC的数量,使用n(n-1)/2的公式,n为网络中的节点数
3.部分互连(partial-mesh):
前两种的折中方案
OSPF运行的两种RFC中定义的模式如下:
1.NBMA:
一般和部分互连的网络结合使用,需要选举DR/BDR和人工指定邻居.优点是相对point-to-multipoint模式它的负载较低
2.point-to-multipoint:
把非广播的网络当作点到点连接的集合,自动发现邻居,不指定DR/BDR,一般和部分互连的网络结合使用.优点是配置较为简便
一些其