美文网首页
一剑开天门系列-OSPF路由协议基础

一剑开天门系列-OSPF路由协议基础

作者: 网络小斐 | 来源:发表于2022-05-10 18:04 被阅读0次

    <p>
    </p><blockquote><p><span style="font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";"><b>一、OSPF路由协议</b></span></p></blockquote><p>
    </p><p>
    </p><div class="image-package"><img src="https://img.haomeiwen.com/i2084007/f82130c9d9ce5a90.jpeg" img-data="{"format":"jpeg","size":40673,"height":437,"width":1080}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
    </div><p><span>
    </span></p><p>
    </p><p><b>开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。</b>
    </p><p><b>
    </b></p><p><span><strong><span style="font-size:14px">两个版本:</span></strong>
    </span></p><p><b>IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)</b></p><p><b>
    </b></p><p><b>在这里估计你要打三个问号了???什么是基于链路状态的内部网关协议,什么又是开放式最短路径树,为什么会出现OSPF呢?接下来就让我娓娓道来!</b></p><p><b>
    </b></p><p><b>首先来展开第一个疑问:为什么会出现OSPF呢?</b></p><p><b>肯定就有人说,出现任何❤️技术都是为了解决某个领域的难题,不错,OSPF的出现正是解决日益庞大的网络如何选路并到达目的地的难题,因特网最开始出现的时候是局限在某个区域中,而随着因特网的普及,越来越多的地区和区域都加入进来,到如今更是与我们生活融为一体,不可分割。早期的时候可能就是几个人互联的网络,或者是一个小型的区域网络,而随着组织和企业的加入,一个组织越来越多的人机开始交互,日益庞大,导致网络互联的成本和难度日益提高,一个数据包的选路越来越复杂,靠人手工维护陷入困境(静态路由),相应的出现了自动学习的方法(动态路由)。
    </b></p><p><b>
    </b></p><p><b>最开始的RIP协议,在早期解决了部分问题,但随着时间的推移,RIP的短板也越来凸显:
    </b></p><p><b>RIP:</b><b><strong><span style="font-weight:bold">RIP是一种基于距离矢量算法的路由协议</span></strong></b></p><p><b><strong><span style="font-weight:bold">
    </span></strong></b></p><ol><li><p><b><strong><span style="font-weight:bold">收敛慢;</span></strong></b></p></li><li><p><b><strong><span style="font-weight:bold">易产生路由环路;</span></strong></b></p></li><li><p><b><strong><span style="font-weight:bold">可扩展性差,只支持最大16跳,大规模网络不合适;</span></strong></b></p></li><li><p><b><strong><span style="font-weight:bold">不支持VLSM</span></strong></b></p></li></ol><p>
    </p><p><span style="font-size:14px"><strong><span>OSPF能更好的解决RIP无法解决的问题
    </span></strong></span></p><p><span style="font-size:14px">历史就是如此相似,混乱的时代总能产生英雄;而在网络江湖中,OSPF也应运而生。</span>
    </p><p><strong><span style="font-size:14px">OSPF就是为RIP的短板而生,集大成者得天下,而现在网络江湖中,OSPF已霸占主流;RIP也就退出历史潮流,OSPF在IGP中如鱼得水,那到底是如何做到的呢?请继续动动手指</span></strong>
    </p><p>
    </p><blockquote><p><b>二、OSPF关键要素</b>
    </p></blockquote><p>
    </p><p><b>OSPF是基于链路状态的路由协议,那什么是链路状态呢?
    </b></p><p><b>RIP是距离矢量路由协议,是跳跃点来作为路由选路,并不构建全局的面,简单理解可以说RIP是点,OSPF是以点构建成面,也就是每个OSPF上都有一套全局的地图可供选路。</b></p><p><span style="font-size:14px"><strong>每个运行OSPF的路由器都有一张全局的地图库进行查询,RIP没法做到,那具体都有哪些因素影响呢?</strong></span></p><p><span style="font-size:14px"><strong>
    </strong></span></p><p><strong><b>OSPF关键要素--五种报文</b></strong></p><p><b>
    </b></p><p><b>OSPF是运行在网络层协议,IP协议号 89,其实在我理解OSPF是跨层封装,OSPF将协议包封装在IP包中,可以看如下图所示:</b></p><p><b>
    </b></p><p><b><div class="image-package"><img src="https://img.haomeiwen.com/i2084007/b0848517cc7abefa.jpeg" img-data="{"format":"jpeg","size":8360,"height":241,"width":321}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
    </div></b></p><p/><p><b>
    </b></p><div class="image-package"><img src="https://img.haomeiwen.com/i2084007/fc9bde66816a7b11.jpeg" contenteditable="false" img-data="{"format":"jpeg","size":33994,"height":422,"width":1392}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
    </div><p>
    </p><p><strong><span style="font-size:14px">如下图所示:</span></strong>
    </p><p>
    </p><div class="image-package"><img src="https://img.haomeiwen.com/i2084007/676222a0b5b47eba.jpeg" img-data="{"format":"jpeg","size":17959,"height":342,"width":543}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
    </div><p><span style="font-size:14px"><strong>OSPF报文类型说明:</strong></span>
    </p><div class="image-package"><img src="https://img.haomeiwen.com/i2084007/e8d0f323c7d1ce4b.jpeg" contenteditable="false" img-data="{"format":"jpeg","size":74776,"height":498,"width":1378}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
    </div><p><strong><span style="font-size:14px">故OSPF是划分在IP层中,但是在整个TCP/IP协议簇中,很多协议其实并不能确定是属于</span></strong><span><strong><span style="font-size:14px">那</span></strong></span><strong><span style="font-size:14px">个协议,有些是跨协议,有些协议在灰色地带,最主要的还是看具体解决什么问题,我可以说OSPF是在传输层,BGP属于应用层,所以不能很粗略的定义在哪一层,OSPF是基于IP的,BGP基于TCP的,报文封装在下层,而解决的问题是网络层问题,看计算机网络自顶向下方法一书可以看出,故不要太局限严格定义在哪一层的协议。</span></strong></p><p>
    </p><p><span style="font-size:14px"><strong><b>OSPF数据包首部逻辑结构:</b>
    </strong></span></p><p><span style="font-size:14px"><strong>
    </strong></span></p><div class="image-package"><img src="https://img.haomeiwen.com/i2084007/521c58eaa8eb34f0.jpeg" img-data="{"format":"jpeg","size":74547,"height":645,"width":1077}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
    </div><p><strong><span style="font-size:14px">抓包结构:</span></strong></p><div class="image-package"><img src="https://img.haomeiwen.com/i2084007/7db40962cba751d3.jpeg" img-data="{"format":"jpeg","size":34909,"height":511,"width":1080}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
    </div><p>
    </p><div class="image-package"><img src="https://img.haomeiwen.com/i2084007/13645ee22a836eb3.jpeg" contenteditable="false" img-data="{"format":"jpeg","size":108761,"height":796,"width":1382}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
    </div><p>
    </p><p><strong/><strong><b>OSPF关键要素--三张表</b></strong></p><p>
    </p><p><span style="font-size:14px"><strong>OSPF协议的运行需要三张表,邻居表、链路状态数据库、OSPF路由表。如下以华为示例:</strong></span></p><p><b>邻居表:display ospf peer</b></p><ol><li><p><span style="font-size:12px">通过Hello报文形成邻居</span></p></li><li><p><span style="font-size:12px">用邻居机制来维持路由</span></p></li><li><p><span style="font-size:12px">邻居表存储双向通信的OSPF路由器列表信息</span></p></li></ol><p>
    </p><p><b>链路状态数据库(LSDB):display ospf peer</b></p><ol><li><p><span style="font-size:12px">通过LSU报文更新LSDB</span></p></li><li><p><span style="font-size:12px">描述拓扑信息的LSA存储在LSDB中</span></p></li></ol><p>
    </p><p><b>路由表:display ospf routing</b></p><ol><li><p><span style="font-size:12px">OSPF计算出来的路由将会加载到路由表</span></p></li><li><p><b>路由优先级 域内>域间>域外 1/2 >NSS区域 1/2</b></p></li></ol><p>
    </p><blockquote><p><b>三、OSPF协议原理</b>
    </p></blockquote><p>
    </p><p>
    </p><p><span style="font-size:15px"><strong>启动OSPF,发送hello包,建立邻居关系,泛洪LSA,每台路由器汇总LSA,形成LSDB,链路状态数据库生成带权有向图,每台运行OSPF路由器以自己为根节点计算最小路径树,最终形成每台路由器的路由表加载到路由器内存中。</strong></span></p><p>
    </p><div class="image-package"><img src="https://img.haomeiwen.com/i2084007/f9969e717adadfcf.jpeg" img-data="{"format":"jpeg","size":36645,"height":361,"width":755}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
    </div><p>
    </p><p><span style="font-size:14px"><strong><span>LSA泛洪:</span></strong></span></p><p><span style="font-size:14px"><strong>运行链路状态路由协议的路由器都会进行链路状态公告LSA (Link State Advertisement)泛洪,</strong>LSA中包含了路由器已知的接口状态、接口IP地址、掩码、开销、网络类型、宣告路由ID和等信息。</span></p><p><span style="font-size:14px">
    </span></p><p><span style="font-size:14px"><strong>通俗点讲就是LSA把路由器邻居相互之间的路由信息和拓扑信息进行握手交换。</strong></span></p><p>
    </p><p><span style="font-size:14px"><strong><span>建立LSDB:</span></strong></span></p><p><span style="font-size:14px">收到LSA的路由器都可以根据LSA提供的信息建立自己的链路状态数据库LSDB(Link State Database)。</span></p><p>
    </p><p><span style="font-size:14px">通俗点讲就是每台路由器都会收到网络中其他的路由器发送过来的LSA信息,这些所有的LSA信息构成了LSDB。这里需要注意的是当网络稳定后,网络中的所有设备应该是有相同的LSDB的。</span></p><p>
    </p><p><strong><span style="font-size:14px">建立最短路径树:</span></strong></p><p><span style="font-size:14px"><span><span>运行OSPF协议的路由器在LSDB的基础上使用</span>SPF算法<span>进行运算,建立起到达每个网络的</span>最短路径树<span>。</span></span></span></p><p><span style="font-size:14px"><span><span>
    </span></span></span></p><p><span style="font-size:14px"><strong><span style="font-size:14px">路由计算:</span></strong></span></p><p><span style="font-size:14px">通过最短路径树得出到达目的网络的最优路由,并将其加入到IP路由表中。</span></p><p>
    </p><p><span style="font-size:14px"><strong>OSPF从最开始的邻居建立到最终路由表的加载是有一个过程的,整个过程分7个状态,分别都是不同的OSPF数据报文交互的结果。如下图:</strong></span></p><p><span style="font-size:14px"><strong>
    </strong></span></p><div class="image-package"><img src="https://img.haomeiwen.com/i2084007/e5f5f9e14083dee5.jpeg" img-data="{"format":"jpeg","size":47488,"height":651,"width":779}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
    </div><p>
    </p><p><span style="font-size:15px"><strong>关于OSPF协议状态机下文讲结合实际抓包和图文着重分解。</strong></span></p><p><span style="font-size:15px"><strong>更多文章请关注微信公众号:网络小斐</strong></span></p><p><span style="font-size:15px"/>
    </p>

    相关文章

      网友评论

          本文标题:一剑开天门系列-OSPF路由协议基础

          本文链接:https://www.haomeiwen.com/subject/xvzlurtx.html