1 / 55

OSPF 协议详解

OSPF 协议详解. 议程. OSPF 协议基础 通过 LSA 描述网络拓扑结构 用 SPF 算法计算路由 邻居状态机 DR 和 BDR 划分区域 骨干区域和虚联接 与自治系统外部通信 总结 OSPF 组网及配置. OSPF 协议简介. 目前 IGP 中应用最广、性能最优的协议, 具有如下特点:. 可适应大规模网络 路由变化收敛快 无路由自环 支持变长子网掩码 支持等值路由 支持区域划分 提供路有分级管理 支持验证 支持以组播地址发送协议报文. OSPF 协议中的基本概念. Router ID

ursula
Download Presentation

OSPF 协议详解

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OSPF协议详解

  2. 议程 • OSPF协议基础 • 通过LSA描述网络拓扑结构 • 用SPF算法计算路由 • 邻居状态机 • DR和BDR • 划分区域 • 骨干区域和虚联接 • 与自治系统外部通信 • 总结 • OSPF组网及配置

  3. OSPF协议简介 目前IGP中应用最广、性能最优的协议, 具有如下特点: • 可适应大规模网络 • 路由变化收敛快 • 无路由自环 • 支持变长子网掩码 • 支持等值路由 • 支持区域划分 • 提供路有分级管理 • 支持验证 • 支持以组播地址发送协议报文

  4. OSPF协议中的基本概念 • Router ID • 一个32bit的无符号整数,是一台路由器的唯一标示,在整个自治系统内唯一。 • 协议号 • OSPF的协议号是89 • OSPF报文不转发 • 通常OSPF报文是不转发的,只传递一跳,即在IP报文头中TTL值被设为1。(虚连接除外) IP Header Protocol:#89 OSPF Packet

  5. 议程 • OSPF协议基础 • 通过LSA描述网络拓扑结构 • 用SPF算法计算路由 • 邻居状态机 • DR和BDR • 划分区域 • 骨干区域和虚联接 • 与自治系统外部通信 • 总结 • OSPF组网及配置

  6. Ethernet PPP/HDLC FrameRelay/X.25 OSPF通过链路状态来描述网络拓扑结构 Rid:3.3.3.3 Rid:4.4.4.4 RTF RTE 40.0.0.2 40.0.0.3 Rid:6.6.6.6 RTC 30.0.0.3 40.0.0.1 Rid:1.1.1.1 RTA 10.0.0.0 Ethernet 10.0.0.1 30.0.0.1 RTD 20.0.0.1 30.0.0.2 Rid:5.5.5.5 20.0.0.2 RTB Rid:2.2.2.2

  7. HUB BROADCAST Stub FR/X.25 PTMP 链路类型 PTP FR/X.25 NBMA

  8. 对以太网的链路状态描述 • Link id:10.0.0.0 /*网段*/ • Data :255.0.0.0 /*掩码*/ • Type :Stubnet(3) /*类型*/ • Metric:50 /*花费*/ • 1---0; 上述就把一个路由器在某个接口的状态描述清楚了:网络地址、子网掩码、3代表本网段只有这么一个router、metric指明了花费。

  9. 对PPP的链路状态描述 • /*对本接口网段地址的描述*/ • Link id:20.0.0.0 /*网段*/ • Data :255.0.0.0 /*掩码*/ • Type :Stubnet(3) /*类型*/ • Metric:5 /*花费*/ • /*对路由器RTB的描述*/ • Link id:2.2.2.2 /*RTB的routeid*/ • Data :20.0.0.2 /*RTB的接口地址*/ • Type :Router(1) /*类型*/ • Metric:5 /*花费*/

  10. 对Frame-Relay等点对多点(非全连通)的链路状态描述对Frame-Relay等点对多点(非全连通)的链路状态描述 • Link id:40.0.0.1 /*网段*/ • Data :255.255.255.255 /*掩码*/ • Type :Stubnet(3) /*类型*/ • Metric:5 /*花费*/ • Link id: 3.3.3.3 /*RTF的router id*/ • Data :40.0.0.1 /*与RTF相连的接口地址*/ • Type :Router(1) /*类型*/ • Metric:5 /*花费*/ • Link id: 4.4.4.4 /*RTE的router id*/ • Data :40.0.0.1 /*与RTE相连的接口地址*/ • Type :Router(1) /*类型*/ • Metric:5 /*花费*/

  11. 对Ethernet等广播的链路状态描述 • Link id:30.0.0.3 /*网段中DR的接口地址*/ • Data :30.0.0.1 /*本接口的地址*/ • Type :TransNet(2) /*类型*/ • Metric: 50 /*花费*/ • /*DR(6.6.6.6)生成的LSA:*/ • Net mask:255.255.255.0 • Attached:30.0.0.1 router • Attached:30.0.0.2 router • Attached:30.0.0.3 router

  12. 加上LSA的头(head)结构 • Type:Router /*LSA的类型*/ • Is id:1.1.1.1/*LSA的标示*/ • Adv rtr:1.1.1.1/*生成该LSA的路由器*/ • Is age:4/*本条LSA的老化时间*/ • Len:108/*LSA的长度*/ • Seq#:80000001/*LSA的序列号*/ • Cksum:0x3543/*校验和*/ • Link count:7/*本LSA中包含的连接数*/

  13. LSA的头部

  14. LSA的分类 Type LSA 1 Router 2 Network 3 Summary Link to Network 4 Summary Link to ASBR 5 External Link 6 Group Membership 7 NSSA 8 External Attributes 9 11 Opaque –

  15. 议程 • OSPF协议基础 • 通过LSA描述网络拓扑结构 • 用SPF算法计算路由 • 邻居状态机 • DR和BDR • 划分区域 • 骨干区域和虚联接 • 与自治系统外部通信 • 总结 • OSPF组网及配置

  16. 运行SPF算法计算路由 RTA的LSDB Link id:10.0.0.0 Data :255.0.0.0 Type :StubNet Metric:50 Link id:20.0.0.0 Data :255.0.0.0 Type :StubNet Metric:5 Link id:50.0.0.0 Link id:2.2.2.2 Data :255.0.0.0 Data :20.0.0.2 Type :StubNet Type :Router Metric:50 Metric:5

  17. OSPF协议计算路由过程 1 1 A B RTA RTB LSDB 2 5 2 5 RTA的LSA C RTC RTB的LSA RTC的LSA 3 1 3 RTD的LSA D RTD 2 (二)每台路由器的链路状态数据库 (三)由链路状态数据库得到的带权有向图 (一)网络拓扑结构 1 1 1 1 A A B A B A B B 2 2 2 2 C C C C 3 3 3 3 D D D D (四)每台路由器分别以自己为跟节点计算最小生成树

  18. 议程 • OSPF协议基础 • 通过LSA描述网络拓扑结构 • 用SPF算法计算路由 • 邻居状态机 • DR和BDR • 划分区域 • 骨干区域和虚联接 • 与自治系统外部通信 • 总结 • OSPF组网及配置

  19. Hello(DR=0.0.0.0,Neighbors Seen = 0) Init Hello(DR=RT2,Neighbors Seen = RT1) 初始化 ExStart 确定主从关系 DD ( Seq = x, I = 1,M = 1, MS = 1 ) 开始交换 ExStart DD ( Seq = y, I = 1,M = 1, MS = 1 ) 开始交换 DD ( Seq = y, I = 0,M = 1, MS = 0 ) Exchange 交换 DD ( Seq = y + 1, I = 0,M = 1, MS = 1 ) Exchange 交换 DD ( Seq = y + 1, I = 0,M = 1, MS = 0 ) DD ( Seq = y + n, I = 0,M = 0, MS = 1 ) Loading DD ( Seq = y + n, I = 0,M = 0, MS = 0 ) 装载 Full LS Request 完成 LS Update 完成 Full LS Ack OSPF协议计算路由过程 RT1 RT2

  20. 你好啊 小一 小王 小一 (2)你好,小一,我叫小王 小王 小王 你好啊 (3)你好,小王,我叫小一 嘻嘻嘻,我有3邻居 (4)邻居关系建立完成 邻居(Neighbor)的形成 小一 小二 小三 (1)大家好,我是新来的,我叫小王

  21. 我先说 好,你先说 我先说 不行,还是我先说 好,你先说 主从(Master,Slave)关系的协商 小一 小王 Master Slave 小一 小王 Slave Master

  22. 交换过程 172.16.5.1/24 E0 172.16.5.2/24 E1 A B Down状态

  23. 交换过程 172.16.5.1/24 E0 172.16.5.2/24 E1 A B Down 状态 我是路由器,id为172.16.5.1,我谁也没看到啊 Init 状态 Router B 邻居列表: 172.16.5.1/24, int E1

  24. 交换过程 172.16.5.1/24 E0 172.16.5.2/24 E1 A B Down 状态 我是路由器,id为172.16.5.1,我谁也没看到啊 Init 状态 Router B 邻居列表: 172.16.5.1/24, int E1 我是路由器,id为ID 172.16.5.2, 我看到了172.16.5.1.

  25. 交换过程 172.16.5.1/24 E0 172.16.5.2/24 E1 A B Down 状态 我是路由器,id为172.16.5.1,我谁也没看到啊 Init 状态 Router B 邻居列表: 172.16.5.1/24, int E1 我是路由器,id为ID 172.16.5.2, 我看到了172.16.5.1. Router A 邻居列表: 172.16.5.2/24, int E0 Two-Way 状态

  26. 探寻路由信息 DR E0 172.16.5.1 E0 172.16.5.3 Exstart 状态 afadjfjorqpoeru 39547439070713 我要启动交换,因为我的router id是172.16.5.1. Hello 不!我来启动交换,因为我的router id比你的大 afadjfjorqpoeru 39547439070713 Hello

  27. afadjfjorqpoeru 39547439070713 DBD 探寻路由信息 DR E0 172.16.5.1 E0 172.16.5.3 Exstart 状态 afadjfjorqpoeru 39547439070713 我要启动交换,因为我的router id是172.16.5.1. Hello 不!我来启动交换,因为我的router id比你的大 afadjfjorqpoeru 39547439070713 Hello Exchange 状态 afadjfjorqpoeru 39547439070713 这是我的链路状态数据库的描述(摘要) DBD 这是我的链路状态数据库的描述(摘要).

  28. 探寻路由信息 DR E0 172.16.5.1 E0172.16.5.3 afadjfjorqpoeru 39547439070713 afadjfjorqpoeru 39547439070713 感谢你的链路状态摘要信息! LSAck LSAck

  29. 探寻路由信息 DR E0 172.16.5.1 E0172.16.5.3 afadjfjorqpoeru 39547439070713 afadjfjorqpoeru 39547439070713 感谢你的链路状态摘要信息! LSAck LSAck Loading 状态 afadjfjorqpoeru 39547439070713 我需要对网络172.16.6.0/24的完整描述条目 LSR afadjfjorqpoeru 39547439070713 好,这是对网络的172.16.6.0/24的具体描述 LSU afadjfjorqpoeru 39547439070713 感谢你的链路状态信息! LSAck

  30. 探寻路由信息 DR E0 172.16.5.1 E0172.16.5.3 afadjfjorqpoeru 39547439070713 afadjfjorqpoeru 39547439070713 感谢你的链路状态摘要信息! LSAck LSAck Loading 状态 afadjfjorqpoeru 39547439070713 我需要对网络172.16.6.0/24的完整描述条目 LSR afadjfjorqpoeru 39547439070713 好,这是对网络的172.16.6.0/24的具体描述 LSU afadjfjorqpoeru 39547439070713 感谢你的链路状态信息! LSAck Full状态

  31. Down Attempt Init Loading Exchange Exstart 2-way Full 灰色为稳定状态;白色为瞬时过渡状态 OSPF的邻居状态机

  32. OSPF的五种报文 • (1)Hello报文 • 发现及维持邻居关系,选举DR,BDR; • (2)DD报文 • 描述本地LSDB的情况; • (3)LSR报文 • 向对端请求本端没有或对端更新的LSA; • (4)LSU报文 • 向对方更新LSA; • (5)LSAck报文 • 收到LSU之后,进行确认;

  33. 议程 • OSPF协议基础 • 通过LSA描述网络拓扑结构 • 用SPF算法计算路由 • 邻居状态机 • DR和BDR • 划分区域 • 骨干区域和虚联接 • 与自治系统外部通信 • 总结 • OSPF组网及配置

  34. BDR RTE RTE DR(Designated Router) RTA RTB RTC RTD RTE 图1:网络拓扑结构 RTB RTB RTA RTC RTC RTA RTD RTD DR 图2:没有选举DR时的邻接关系 图3:没有选举DR时的邻接关系

  35. DR(村长)的选举过程 • (1)登记选民 • 本网段的OSPF路由器; • 本村的18岁以上公民; • (2)登记候选人 • 本网段的priority>0的OSPF路由器; • 本村内的30岁以上公民,且在本村居住3年以上; • (3)竞选演说 • 所有的priority>0的OSPF路由器都认为自己是DR • 所有的候选人都认为自己应该当村长; • (4)投票 • 选priority值最大的,若priority值相等,选RouterID最大的; • 选年纪最大,若年龄相等,按姓氏笔画排序

  36. DR选举中的指导思想 • 选举制{民主!} • DR是各路由器选出来的,而非人工指定的; • 终身制{稳定压倒一切!} • DR一旦当选,除非路由器故障,否则不会更换; • 即便新加入一台优先级比DR高的路由器,也不更换! • 世袭制{快速响应!} • DR选出的同时,也选出BDR(Backup Designated Router)来。 • DR故障后,由BDR自动代替DR成为新的DR; • 因为重新选举会造成新的一轮的同步;

  37. A B A B D C C D NBMA与PTMP的区别NBMA:NonBroadcast MultiAccess {全连通} PTMP: Point To MultiPoint {非全连通} NBMA:任何两点都直接可达 PTMP:不满足任何两点都直接可达,AD,BC不能直接可达

  38. 引入DR后,带来的协议变化 为了减少在一个网段内带宽的占用,提出了DR的概念 • 将同一网段内LSDB同步的次数由O(N2)减少到O(N); • 在同一网段中,路由器的角色为DR、BDR、DRother; • 路由器之间的关系分为Unknown、Neighbor、Adjacency • 增加了一种新的接口类型--Point To Multipoint • 增加了一种LSA:Network-LSA,由DR生成,描述了本网段的链路状态;

  39. 议程 • OSPF协议基础 • 通过LSA描述网络拓扑结构 • 用SPF算法计算路由 • 邻居状态机 • DR和BDR • 划分区域 • 骨干区域和虚联接 • 与自治系统外部通信 • 总结 • OSPF组网及配置

  40. OSPF在大型网络中应用可能遇到的问题 • 当网络规模变大时,有些问题会从量变到质变:即理论讲是可行,但实际上可能已不能正常工作了; • 缺点1:LSDB非常庞大,占用大量存储空间; • 相对与DV来说,不仅存储路由信息,还存储链路状态 • 而DV只存储路由信息,当然DV的每个路由器也不知道全网拓扑结构; • 缺点2:计算最小生成树耗时增加,CPU负担很重; • 相对与DV,计算复杂,要算出一个树来,而DV算法只是简单的路由表的加减; • 有1台路由器链路状态发生变化,全网的所有路由都要重新计算(一有风吹草动,都要重新计算) • 缺点3:网络拓扑结构经常发生变化,网络经常处于“动荡”之中 • 就象往湖里投个石子,会波及整个网络 • 而网络中链路变化是经常的,up或down,所以,整个网络不停的动荡

  41. OSPF划分区域 区域的边界是路由器 Area0 Area2 Area1

  42. 区域间的路由计算 Area0 Area3 Type=3 Type=3 192.178.14.0 172.18.141.0 Mask=255.255.255.240 Mask=255.255.255.240 Metric=120 Metric=91 192.178.14.0/28 172.18.141.0/24

  43. 区域划分后的一些优点 • 针对第1个缺点: • 要传递的信息减少了,只描述路由项目,不描述链路状态了,缩减了LSDB的大小; • 针对第2个缺点: • 计算变的简单了,不用画一棵树了,只画叶子节点; • 针对第3个缺点: • (1)若有一条路由失效,简单删除就是了; • (2)提出路由聚合的策略:大大减少路由规模,某区域的变化不会影响到其他区域,而且对聚合后的路由没有影响。

  44. 议程 • OSPF协议基础 • 通过LSA描述网络拓扑结构 • 用SPF算法计算路由 • 邻居状态机 • DR和BDR • 划分区域 • 骨干区域和虚联接 • 与自治系统外部通信 • 总结 • OSPF组网及配置

  45. Hub-spoken 形式 骨干区域 Area19 RTB RTA Area12 Area0 区域间的路由计算已经是DV算法了。从ABR的LSA的描述可以看出来,只包含路由信息,没有拓扑结构的描述,而DV算法就存在路由自环的问题(以区域为单位,不是以路由器为单位了)。因为优化而导致了自环!-解决方案:引入骨干区域-所有ABR都必须连着这个区域。 RTC Area13

  46. RTB 虚连接 Area19 Virtual Link RTA Area0 Area12 RTC 骨干区域的引入,解决了路由自环问题;但也限制了区域的规模;-解决方案:随意划分,不必直接相连!但这又违背了骨干区域的原则。怎么办呢?引入虚连接-RTA和RTB可以直接通信了,所有ABR都知道哪个信息是哪个ABR生成的。到此,就比较完美了。

  47. 议程 • OSPF协议基础 • 通过LSA描述网络拓扑结构 • 用SPF算法计算路由 • 邻居状态机 • DR和BDR • 划分区域 • 骨干区域和虚联接 • 与自治系统外部通信 • 总结 • OSPF组网及配置

  48. Type=5 Type=4 10.53.11.0 1.2.3.4 Mask=255.255.255.240 Mask=0.0.0.0 Metric=10 Metric=89 与自治系统外部通信 ABR 10.53.11.0/24 BGP ASBR Routeid=1.2.3.4 Area3 Area0

  49. RTB Stub区域与路由聚合 Area19 Virtual Link RTA Area0 Area12 RTC Area8

  50. 议程 • OSPF协议基础 • 通过LSA描述网络拓扑结构 • 用SPF算法计算路由 • 邻居状态机 • DR和BDR • 划分区域 • 骨干区域和虚联接 • 与自治系统外部通信 • 总结 • OSPF组网及配置

More Related