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

<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://upload-images.jianshu.io/upload_images/2084007-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://upload-images.jianshu.io/upload_images/2084007-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://upload-images.jianshu.io/upload_images/2084007-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://upload-images.jianshu.io/upload_images/2084007-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://upload-images.jianshu.io/upload_images/2084007-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://upload-images.jianshu.io/upload_images/2084007-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://upload-images.jianshu.io/upload_images/2084007-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://upload-images.jianshu.io/upload_images/2084007-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://upload-images.jianshu.io/upload_images/2084007-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://upload-images.jianshu.io/upload_images/2084007-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>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容