学习目标:
1、了解OSPF基本特性
2、了解OSPF邻接关系建立流程
3、了解OSPF报文
4、了解1类到7类LSA
5、OSPF矢量图画法
6、OSPF不规则区域解决方法
7、OSPF网络类型
8、OSPF特殊区域特性
一、OSPF基本特性:
OSPF开放式最短路径优先协议,适用于:
1、企业网:分支-总部。
2、运营商:支持中到大型网络。
3、数据中心:标配OSPF。
大部分采购设备都混合厂商,适用OSPF不存在兼容性问题。
范围:属于IGP(但支持中-大型园区)
核心算法:属于链路状态协议(能获得一个范围【划分区域】的拓扑信息,不是整个AS)。
无类协议:可以做vlsm(子网划)和classless(超网路由)
OSPF封装:协议号89(EIGRP是88) |
OSPF两个组播组地址: | 224.0.0.5通用OSPF组播组地址,运行了OSPF路由器都会监听。 |
OSPF报文,没有使用TCP封装,自带可靠性传输机制,支持重传、确认。OSPF报文属于控制层面,优先级很高Tos字段(一个字节,做QOS),默认高优先级值是IP-precedence 6.
早期TOS字段只能用前三位取值0-7(标记八种流量,0冲浪流量听歌视频这些,1业务流量,2关键业务流量,3信令,4交互式视频,5,6是路由协议,7没定义)。
现在TOS字段叫DSCP区分服务码点,可以使用6位,但第六位值为0,只能2的5次方。
距离矢量协议:通告路由会全部通告,路由共享,会告诉你走哪个网络下一跳指向我,但不会说网络拓扑。
链路状态协议:更新LSU报文不会存在路由条目,发LSA(链路状态通告,有11种,1类LSA:包含自身身份、属性,和自身宣告进OSPF的所有接口连接的链路信息RID【路由器ID】路由器OSPF的身份信息,不用可达,哪些接口运行了OSPF,接口是什么网络类型,接口有没有连接OSPF邻居,接口没连接邻居会发这个接口前缀、掩码、度量值)。
LSA放在LSDB(链路状态数据库),OSPF计算度量值用带宽,10的8次
方除接口带宽,OSPF分段计算度量值(EIGP整条路径累加计算),控制层面路由流向所有入接口,累加就是一条完整路径度量值,去往一个目的地最优路由加表。
1类和2类在一个区域内是泛洪扩散的,最终区域内所有路由器LSDB一致。
路由计算算法SPF(最短路径算法),使用树形结构算法,计算出去往每个节点的最优路由加表。
SPF两个子算法:
路由器所在网络为树干,非路由器所在网络为树枝,不靠拓扑支撑得出的路由叫树叶。
老的系统SPF算法不管拓扑还是路由变更都执行SPF。
1、LSPF增量型SPF算法(拓扑变更):树干和树枝涉及到树形结构进行计算。
2、PRC部分路由计算(路由变更):针对树叶路由计算,非常快速节约资源。
OSPF计算建立邻居、计算拓扑不如EIGP(思科私有)、IS-IS(外来协议,开始在OSI参考模型,后来才加入TCP/IP协议栈,比OSPF出的晚),比RIP强一些。
OSPF更新(避免邻居删除LSA,每30分钟更新一次,Aging timer老化计时器60分钟):既周期更新还触发更新
1、触发更新
2、周期性更新
OSPF的hello发送周期(根据网络类型判断):
1、10秒一次:MA网络
2、30秒一次:点到点网络
邻居老化计时器是4倍hello时间。
邻居状态和LSA状态同时监控。
负载均衡:OSPF只支持等价负载均衡(去往目的网络有多条路径,只有多条路径度量值一样,才能加表等价负载)。
OSPF区域内可以做出精确决策防环,区域间不行,需要通过其他方式。
OSPF层次化设计(逻辑区域划分),两级:
1、骨干区域:编号为0,也叫传输区域(是指控制层面的3类和4类LSA,只能通过area0才能在区域中透传),用多区域area0有且只有一个。
2、非骨干区域:编号为1-42,非骨干区域必须和骨干区域挂靠(连接骨干区域)。
区域划分原因(因为OSPF很吃资源,通过划分区域从而达到节省资源):
1、路由汇总做不了,路由计算消耗资源很大,网络太大影响大。
2、flapping翻动:接口Down和UP来来回回切换,会造成拓扑变更,产生接口变更LSA,会域内产生计算。
区域划分的好处:
1、方便路由汇总,减少路由条目数量。
2、尽可能增加路由选择域的稳定性,将拓扑变更影响减到最小。
1类和2类LSA只能在一个区域内泛洪。
ABR(area border router)区域边界路由器:同时连接多个区域,其中一个一定是Area0,
真ABR:在Area 0 中有Full状态的OSPF邻居。
伪ABR:在Area 0中不存在Full状态的邻居(就比如环回口宣告进Area0)。
真ABR要遵循3类LSA防环机制。
3类LSA:区域间路由ABR产生,实现跨区域路由传递,可以进行路由汇总(区域间汇总,节省路由条目,明细路由翻动不会影响汇总路由,只会影响明细路由所在的区域)。
区域间传递的路由就像RIP和EIGRP一样,存在环路风险。
防环:
1、星型拓扑:一个区域比做一台路由器,物理性防环。
2、不是ABR就无法产生三类LSA,把3类LAS进行传递,也不能针对三类LSA进行路由汇总。
非骨干区域三种类型:
1、常规区域(默认):
特殊区域类型:
1、Stub末节区域:不允许存在ASBR。
2、NSSA次末节区域
3、ASBR自制系统边界路由器:会做一个路由重分发操作(A协议学到的路由通过B协议来通告,把A协议路由引入到B协议里边,其他协议学到的路由引入到OSPF,外部路由,以5类LSA形式传递),必须要常规区域类型。
思科只要做了引入操作,产生了外部路由就是ASBR。
华为只要做了引入操作就是ASBR。
二、OSPF邻居关系建立:两个阶段,八级
1、Hello
(1)、Ospf neighbor邻居:只交互过hello
2、Two-way
不同网络类型建立邻居关系不一样,网络类型: | 1、loopback:环回口 |
以太网,广播网络类型(会使用交换机设备,可以连接N多的节点),避免相互建立邻居导致繁琐邻居数量太多做了优化:
选举DR(指定路由器)和BDR(备份指定路由器)都有且只有一台,每个MA网络都要选,wait interval是DR和BDR选举的计时器,一般为hello时间的4倍 | 1、ospf接口优先级0-255,越大越好。 |
所有路由器都和DR/BDR建立邻接关系,所有DROthers之间维持邻居关系(不用担心邻接关系指数增长)。
DR和BDR不可被抢占,即使新加入路由器优先级高。
DR必须要(要直连所有其他人),BDR可有可无。
帧中继是一个中心站点Hub多个分支站点spoke,hub到spoke之间会建立虚电路,spoke之间没有虚电路。
帧中继也是对应网络类型NMBA,要选DR和BDR,hub做DR,spoke都做DROthers,所有spoke的ospf优先级改0。
DR/BDR的要求,能直接访问网络中所有其他节点。
关于DR/BDR: | 1、选举4倍HELLO时间 |
OSPF路由器ID | 1、手工配置:不需要可达,只是身份标识,但不能冲突(推荐手工配置,比较稳定可控) (2)、华为手工配置优先级最高 |
8、Full
(2)、ospf adjacency邻接:除了hello还交互了DBD、LSR、LSU、LSACK,LSDB已经同步。
高带宽度量值需要手工修改计算公式(所有路由器上都修改,直接修改接口优先级高于全局,影响选路)。
思科所有路由管理距离都是110.
华为区域内和区域间路由管理距离为10,1类、2类外部路由管理距离为150(这样设计关于OSPF双点双向重分发).
Full mesh全互联,两两建立邻居。
三、OSPF报文
OSPF报文有五种: | 1、hello:建立邻居,保持邻居状态 |
显式确认: | 拿一个单独报文来回应重要的报文的确认(LSR、LSU、LSACK)。 |
隐式确认: | 使用相同重要报文对之前的重要报文,既做确认又做回应,使用序列号,相同序列号DBD,既做确认又做回应。 |
OSPF版本: | 有1(实验室环境中,没投入使用)、2(针对IPv4)、3(针对IPv6)版本 |
类型: | 1是hello,2是DBD,以此类推 |
报头长度: | 报头多少字节 |
路由器ID: | 路由器ID号多少 |
区域ID: | 区域号 |
校验和: | |
认证和认证秘钥: | 0不认证 |
建立OSPF邻居报头需要一致的字段: | 1、版本号一致 |
1、子网掩码
2、hello时间
3、可选项字段
4、路由器优先级:MA网络才会用
5、老化时间
6、指定路由器的IP地址:MA网络才会用
7、备份指定路由器IP地址:MA网络才会用
8、neighbor:收到邻居hello邻居的路由器ID,为0代表运行OSPF到现在都没有收到hello。
建立OSPF邻居载荷需要一致的字段: | 1、子网掩码一致 Stub区域是:E0 N0 nassa区域是:E0 N1 |
单边邻居关系:我给你发了hello,我能收到你的hello,但你的hello中neighbor字段不包含我的路由器ID,代表你收不到我的hello。
建立邻居两边网络类型不一致(一边广播,一边点到点),会产生树形结构问题。
建立邻居两边MTU值也要一致,不一致会卡在exstart(思科默认开MTU一致性检测会有影响,华为默认不开不影响)。
建立邻居过程: | 1、Down:啥也不发。 Attempt(不支持发组播的网络类型才有这个状态,临时状态,4倍hello时间,加上这个是八种): | 4、exstart state:交互first DBD(第一个DBD,I置1,M置1,M/S置1),这个DBD的flag字段有三个位: |
LSA防环是通过序列号,最小0x80000001,最大0x7FFFFFFF,每次序列号加1。
收到LSA如果本地没有会接收,然后泛洪转发,如果有一模一样的,比较新旧,接收的新就做确认并且泛洪,如果没我新,直接丢弃,如果比我本地还旧,我会丢弃,然后拿本地更新的给你做一个反向同步。
新旧LSA比完序列号,还能比较老化计时器(越大越新)。
二、LSA
LSA链路状态通告
有两种OSPF:
1、基于单播的OSPF:1、2、3、4、5、7(涉及到特殊区域NSSA)
2、基于组播的OSPF:用到六类LSA
LSA研究点:
1、LSA通告这路由器是谁
2、泛洪范围
3、LSA中包含什么内容
1类LSA(路由器LSA):区域内路由(O)
1、LSA通告这路由器是谁:路由器自身针对连接的区域产生一条
2、泛洪范围:区域内所有路由器
3、LSA中包含什么内容:
(1)、包含自身路由器ID、是什么类型(骨干、ABR、ASBR)、宣告哪些接口进入OSPF这些接口网络类型什么样,这些接口有没有和别建立邻接关系如果有是谁,这些接口所连接的网络前缀、掩码、度量值,DR的路由器ID是多少。
1类LSA缺点:描述MA网络不太行,针对MA网络不会说参与者是谁,掩码是多少,只会说我所连接网络的自身接口IP地址。
一个区域有几台路由器就能看到几条LSA。
如何区分一类LSA(1类LSA的标识)?
1、LS ID:1类LSA的名字,始发者路由器的ID。
2、ADV Router:该LSA始发者路由器的RID
2类LSA(网络LSA):区域内路由(O)
使用的前提是网络类型是广播或NBMA,才需要2类
1、LSA通告这路由器是谁:DR会产生一条关于这个广播或NBMA网络的LSA
2、泛洪范围:区域内所有路由器
3、LSA中包含什么内容:两个:
(1)、这个网络内成员都是谁,每个成员路由器ID都会做一个整理。
(2)、这个MA网络的掩码是多少位
如何区分二类LSA(2类LSA的标识)?
1、LS ID:2类LSA的名字,始发者DR接口的IP地址。
2、ADV Router:DR路由器的RID
3类LSA(汇总LSA):区域间路由(O IA)
1、LSA通告这路由器是谁:ABR收集到区域内1类和2类的LSA,然后计算区域内路由,以3类LSA形式(里边直接是存放路由,纯路由,一条路由对应一条三类LSA,还可以多条3类LSA做一个汇总)发给其他区域。
2、泛洪范围:整个AS内。
3、LSA中包含什么内容:区域内路由。
如何区分三类LSA(3类LSA的标识)?
1、LS ID:3类LSA的名字。
2、ADV Router:自身路由器名字。
3类LSA特殊点:只包含路由,接收者路由器必须知道ABR在哪才能使用这些路由,3类LSA把包发往目的网络,得先把包发往ABR(得知道ABR在哪),为了能使用路由需要做一个欺骗,把三类发往其他区域时会把3类LSA伪装成自己产生的,修改ADV Router。 三类LSA在跨越区域传递的时候,ABR会做一个欺骗把三类LSA的ADV Router改写为自身的路由器ID(为了让其他区域收到三类LSA可以使用)。
4类LSA(汇总ASBR):辅助5类LSA,告诉所有ABR去往ASBR怎么走,方便使用5类LSA的路由去往外网
1、LSA通告这路由器是谁:和ASBR在同一个区域的ABR(因为他能收到ASBR的1类LSA,他知道ASBR所在位置)。
2、泛洪范围:所有其他区域(告知其他区域谁是ASBR,并且说通过我可以访问ASBR,通过我访问ASBR度量值是多少)。
3、LSA中包含什么内容:ASBR路由器ID、该ABR去往ASBR端到端最优路径度量值。
如何区分四类LSA(4类LSA的标识)?
1、LS ID:四类LSA的名字。
2、ADV Router:发送者会改写为自己的路由器ID。
5类LSA(自治系统外部LSA):分为两个子类:
区域内优于区域间,区域间优于O E1,O E1优先于O E2
1、Metric Type 1 O E1:1类OSPF外部路由,收到两条相同的O E1路由,比较内部(内部累加的)+外部度量值(Seed Metric)之和,比小。
2、Metric Type 2 O E2(外部引入默认):2类OSPF外部路由,收到两条相同的O E2路由,1、比较外部度量,比小,2、去往内网这两台ASBR哪台度量值小,优先比外部,然后比内部。
通过路由重分发方式,其他协议学到的路由强行引入到OSPF,可以做汇总(全是路由信息,没有拓扑信息)
1、LSA通告这路由器是谁:ASBR
2、泛洪范围:整个AS内。
3、LSA中包含什么内容:外部路由条目,Tag(路由标记,阿拉伯数字,方便路由识别和抓取)、Metric Type(度量值类型,一个O E1【度量值类型为1】,一个O E2【度量值类型为2】,引入OSPF分一个统一的度量值Seed Metric种子度量值【思科一个20【其他路由】,一个1【BGP】,华为都是1】,在域内传递的时候O E1度量值累加,O E2不变)、Forwarding Address(FA转发地址【FA地址默认全0,就是没有FA地址】,非直连的远程下一跳,接收者看FA地址是否可达,OSPF有没有学到去往FA地址的路由,如果没有FA地址,默认路由器发包去往5类LSA的路由先把包发给对应的ASBR。如果有FA地址,就先把包发给FA地址)。
5类LSA在数据库中存在,但是对应的路由在路由表中不存在。
FA地址的三个条件:
1、ASBR宣告连接路由下一跳的自身接口
2、该接口的网络类型不能是P2P
3、该接口不能被置为被动接口
FA地址就是一个远程的下一跳
如何区分五类LSA(5类LSA的标识)?
1、LS ID:路由前缀。
2、ADV Router:ASBR的路由器ID(域内传递ADV Router会改变,导致其他区域收到5类LSA不能使用,这个时候就得依靠4类LSA了)。
OSPF回顾:
路由器直接互联是一个骨干链路
有两类节点:
1、Router Node:一台路由器只要运行了OSPF就是路由器节点。
2、Stub Node:连接节点没有建立OSPF邻居,可以是环回口,也可以是PC所在网络,一般指路由器连接的一个网络。
网络类型:
思科六种,华为只有中间四种
链路描述有三种:
1、Transnet:广播broadcast/NBMA网络建立邻居的链路描述。
TransNet:描述DR接口的IP地址和自身接口的IP地址,必须要结合2类LSA(LSID就是DR接口的IP地址,2类包含所有成员的RID信息以及网络的掩码,1类LSA+2类LSA勾勒出网络全貌)。
2、P2P:P2P/P2MP/P2MP-NBMA网络建立邻居的链路描述。
P2P描述点到点接口,对端的邻居是谁,本地连接邻居的本地接口IP是多少。
针对P2P还会产生一条Stub Link描述本地端的前缀和掩码(点到点两端地址不在同一子网段也能通信)
3、Virtual:virtual-link建立邻居的链路描述。
环回口路由默认都以32位掩码通告。
Stub link:1类LSA产生描述以太网网接口,虽然这个接口网络类型为广播,但是通过这个接口没有建立任何邻居,为末节网络,在1类LSA就会用Stub-link描述。
1类LSA:
以太网
点到点:
第一个Link-ID描述端到端拓扑连接,第二个Link-ID描述计算点到点的路由。
矢量图画法:
1、使用自身Router Node为树根,只出不入
2、先画树干(树干出问题会执行ISPF计算)
3、再画树枝(树枝出问题会执行ISPF计算)
4、最后画树叶(树叶出问题会执行PRC计算):3类、4类、5类LSA形成的区域间和外部路由,树叶挂在ABR或者ASBR之上(ASBR先挂在ABR上,根据4类LSA产生一条ABR去往ASBR的骨干链路,外部路由以树叶形式挂在ASBR。)。
如果同时有多条树干可以长,先长短的(度量值小的)
OSPF默认路由下放方式两种:推荐第一种
1、本地有默认存在:该路由器本地路由表里存在一条默认路由(这条默认可以通过任何方式生成)。
2、本地无默认存在:需要加always参数(不管路由表是否有默认路由,强制产生一条默认路由),自动生成一条默认下放【使用这种方式的边界路由器,不再有资格接收其他边界给他下放给他的O E1/O E2默认路由,不能再依赖其他边界了,对于多边界有影响】。
OSPF不规则区域:
非ABR没有能力产生3类LSA
问题1:存在两个area 0?
A0---A1-----A0
左边area0路由右边area0收不到,反之右边的左边收不到。
真ABR遵循3类LSA防环原则:通过非骨干区域收到3类LSA只能加入LSDB不能计算路由。
R1发R2在LSDB中能看到,但不会计算加入路由表。
解决孤岛的三种方法:
1、双OSPF进程互相重分发:单点双向重分发(需要使用两个进程,OSPF进程号只具有本地意义)。
2、通过隧道Tunnel:延展Area0,变ABR。
3、通过Virtual-link:虚链路,逻辑点到点链路,只属于Area0,做虚链路的条件:
(1)、共享同一个区域的路由器之间可以做VL。
Virtual-link直接指路由器ID,建立邻居发一次hello就不会再发送(hello抑制)。
思科基于virtual-link发送的LSA会有一个NDA特性(Do Not Age永不超时),不会每30分钟一次的更新(思科是这样的一个优化)。
华为基于virtual-link建立邻居,hello照常发,更新照常更新。
一端思科,一端华为,思科会向下兼容。
OSPF认证三种级别和两种范围:
三种级别: | 0:不认证 |
两种范围: | 1、链路级认证:认证类型一致 |
1、OSPF非骨干区域的两种变种Stub与NSSA定位
多区域:
(1)骨干区域Area 0
(2)非骨干区域(除Area0以外): | 常规区域: |
非骨干区域的两种模式:减少区域内LSA数量、减少路由条目数量,降低内存消耗。 | 1、Stub末节区域:区域内所有路由器都这样设置,hello的flag字段E位置0,N位置0,ABR会阻止从外到内的4类5类LSA进入,ABR同时会向区域内下放一条O IA的三类默认路由,度量值为1,域内传递会累加。 设置条件: (1)、该区域不能是骨干区域 (3)、不允许存在virtual-link (4)、区域内每条路由器都要设置Stub区域。 Totally Stub完全末节区域:ABR升级为完全末节区域,ABR会额外过滤从外到内的3类LSA(优化更彻底,完全依靠默认路由出去),不允许域内存在出口了。
和Stub区域最大的区别就是允许存在ASBR做重分发,重分发将外部路由以7类LSA形式注入到NSSA区域内,属性和5类LSA一样,一条7类LSA就是一条外部路由(默认O N2,可以改O N1【传递累加】,可以携带tag标记,有FA地址【百分百携带】,7类只能在该区域内传,不能在NSSA区域以外的地方传递,真伪ABR都可以做转换者【多个ABR会PK路由ID,大的做转换者】把7类LSA转换为5类发送给其他区域【属性不会改变,只会改变ADV Router】)。 做不做ASBR不取决你是否做了重分发,取决于你是否有产生外部路由(通过携带FA地址,不管内网认为ASBR是谁,发包总要通过FA地址发给真正的ASBR,避免内网环路)。 FA地址在思科中代表宣告的环回口中的最大IP地址(该接口宣告进OSPF),来做FA,如果没宣告环回口就会是宣告的物理接口中最大的IP地址。 华为使用宣告进接口的第一个IP地址做FA地址。 ABR不会主动下放默认路由。 设置条件: (1)、该区域不能是骨干区域 (3)、不允许存在virtual-link (4)、区域内每条路由器都要设置Stub区域。 NSSA也可以让ABR下放或者ASBR下放这两个选择: 1、ABR下放:ABR上敲一条命令,下放O N2的默认。 2、ASBR下放两个要求,下放的O N2默认: (2)、ABR上敲那条命令。 Totally Nssa:边界ABR过滤从外到内的3类、4类、5类LSA,区域内就不能存在出口了,会下放一条默认。ABR设置为Totally Nssa就可以。 |
三、OSPF网络类型
1、Ethernet接口建邻居为何选DR而serial接口不需要?
Ethernet、PPP、HDLC是数据链路层协议,准确来说OSPF是一个应用(TCP/IP层来看的话)。
选DR和BDR跟网络类型Network Type有关系,网络类型是OSPF定义的一个参数,这个参数和接口所绑定。
网络类型:
1、loopback 环回口 | OSPF默认对应类型loopback,任何其他接口不能对应该类型 |
做MPLS-VPN要保证域内所有路由器彼此环回口路由要一致(1、都32位主机掩码。2、配置环回口不是32位,修改环回口网络类型正常通告掩码。这样能避免标签问题)。
2、Point-to-point点到点:Serial(HDLC/PPP) | 特征: |
3、Broadcast广播网络(BMA):对应ethernet、SVI(交换机) | 特征: 1、hello周期10秒一次 2、支持组播(支持邻居自动建立) 3、选DR/BDR(优化邻接关系) 所有路由由hub中转,但spoke的下一跳都会直接指向spoke,不会指向Bub。 R2去R3下一跳就是R3,反之一样。 R3去往R2的度量值理当比Hub去R2更大,因为传递了两跳,星型拓扑广播做不到这点。 类似Hub&spoke的拓扑有:Frame Relay帧中继、DMVPN/DSVPN(多点VPN),通信逻辑跟Hub&spoke一样。 |
4、Non-broadcast:NBMA非多路访问有Frame Relay帧中继(帧中继有三种接口:主接口和多点子接口宣告OSPF是NBMA,多点子接口是点到点) | 特征: 1、hello 时间30秒 |
Hub-spoke适用于广域网,公司多分支
Point-to-multipoint | 适合星型网络,DS-VPN,DM-VPN |
224.0.0.0-224.0.0.255被保留的链路本地地址(组播)
只能在一个网络内发送
224.0.0.1所有节点组播地址: | 目的IP是这个会发网络内所有人 |
224.0.0.2所有路由器组播地址 | 目的IP是这个会发给网络内所有路由器 |
VPN费用类型:
1、免费自己做的:Overlay-VPN
2、花钱运营商做:
(1)、专线:裸纤,MPLS-VPN
网络类型不一致,还想建立邻居,只要解决一类LSA兼容性就好。