OSPF及其高级特性

1、ospf(开放式最短路径优先协议,网络层协议,协议号为89,通过组播来发送消息),是一种链路状态路由协议。核心有三张表,邻居表、数据库表、路由表。宏观上先建立邻居表,通过邻居互相同步数据库,然后再利用数据库中的数据来计算出到达每个节点的路由放进路由表中。

2、建立邻居的过程:

①双方通过发送hello包来建立邻居表 ,在点对点和广播的网络中hello包10秒发送异常40秒老化。

②双方通过hello包来选举DR与BDR。

③通过一个空LSADBD报文用来确定主从与序列号,

④通过LSADBD报文将自己的数据库概要信息发送给对方。

⑤通过LSR、LSU、LSack报文同步数据库。

⑥使用SFP算法计算出最佳路由放在路由表中。

3、hello报文中一般包含自己的router-id、接口信息、IP地址、掩码、优先级、邻居的信息等。

4、DR与BDR,再ospf中每一个网段都需要选举出一个DR与BDR,因为再网络中需要进行数据库的同步,那么就需要发送大量的LSA报文,每一个节点都要相互发送,这样就会造成广播风暴,所以需要选举DR与BDR,所有的节点只跟DR与BDR形成邻居关系,当他们需要更新LSA的时候直接将LSA发送给DR与BDR,再由DR将LSA发送给网络中的其他节点。再点对点的网络中是不需要选举DR与BDR的,在串口的为网络下也不需要DR与BDR的选举。DR与BDR的选举是按照hello包中的优先级和router-id选举的,优先级默认为1。先选举BDR,再看网络中是否由DR,没有在升级为DR,再选举BDR。

5、ABR与ASBR,ABR路由器是连接骨干区域与非骨干区域的路由器称为ABR,ASBR是具有重分发路由的路由器称为ASBR。

6、ospf默认的cost值为(10的8次方/接口带宽),100M的带宽cost值为1。cost值越小越好。

7、ospf的多区域,ospf的网络中可以存在多个区域,但是必须存在一个且只有一个骨干区域(area 0),并且其他非骨干区域必须与这个骨干区域直连。

8、ospf的邻居状态机:

①init初始化状态:相互之间发送hello包。hello包那里面包括源IP(自己接口的ip)、目的IP(组播地址22.0.0.5)、TTL值为1、RID、邻居id为空、DR与BDR也为空、hello包刷新与老化时间等。

②2-way状态:双方交换hello后确定邻居之后进入2-way状态,2-way状态用于选举DR与BDR,通过hello包中的优先级、RID来选举RDR与BDR。先配置的路由器会等待40秒(40秒的等待时间),40秒过了之后还没有DR那么自己成为DR。

③Exstart状态:选完DR与BDR后进入Exstart状态。双方发送空的LSDBD报文,该状态下用于确定主从与序列号的同步,因为在后面要同步数据库,所有要使用到序列号,而且双方的序列号要同步。通过空的LSDBD报文中的RID来确定主从,并且使用主路由器的序列号。

④Exchange状态:主从选好以及序列号同步之后,发送LSADBDB报文,这是该报文中的数据是自己数据库中LSA的摘要信息,并不是数据库的详细信息。

⑤Loading状态:主路由器先发起数据库同步,获取对方的数据库摘要后,查看在对方的数据库中自己有哪些是没有的,然后向对方发起自己所没有的数据库同步报文。首先发起LSR数据库同步请求报文,对方收到之后在将完整的数据库信息返回(LSU报文携带完整的LSA信息),之后在回复一个LSack报文用于确认。在这个阶段双方会相互之间完整的交互数据库信息,直到完全同步为止。

⑥Full状态:在同步完之后,利用SFP算法以自己为根,计算出去往所有节点的最佳路径放于路由表中。此时才是完整的邻居关系建立。

9、ospf中的虚链路:正常情况下,我们的非骨干区域必须与骨干区域直连,中间不能跨越其他区域。但是当我们中间一定要跨区一个区域时就需要用到虚链路了。虚链路就是以中间的区域为承载区域,然后与骨干区形成虚链路直连。虚链路一般只作为临时解决方案,因为在虚链路中,hello包与LSA数据包只在第一次建立邻居关系的时候才有,之后虚链路就不会在发送hello与LSA数据库同步数据包了,这就会导致网络拓扑变化等不到及时的更新,可能造成路由的黑洞。而且虚链路不能跨越一个中间区域,不能跨越两个及以上的区域,再而且就是不能以stub区域与NSSA区域作为承载区域。

10、每个路由器都会再30分钟重新发送自己产生的LAS,自己数据库中的LSA的老化时间为1小时。

11、ospf的四个特殊区域:

①stub区域:可以拒绝4类和5类的LSA。也就是可以拒绝重分发路由进入stub区域,ABR路由还会自动的给stub内通告一条缺省路由。同时stub区域内是不允许重分发路由的。

②完全stub区域:就是再stub基础上再拒绝3类LSA进入。3类LSA用于于间路由通告。也就是完全stub区域只剩一条默认路由了。

③NSSA区域:可以拒绝4类和5类的LSA。也就是可以拒绝重分发路由进入NSSA区域,NSSA区域的ABR路由器特别的懒,他不会自动的给stub内通告一条缺省路由,所有要手动的强制通告一条缺省路由进入NSSA区域。同时stub区域内是允许重分发路由的。

④完全NSSA区域:就是再NSSA基础上再拒绝3类LSA进入。也就是完全stub区域只剩强制通告的一条默认路由了。NSSA区域内可以自己重分发路由进入。

12、LSA:

ospf的LSA一共有6种,LSA-1、LSA-2、LSA-3、LSA-4、LSA-5、LSA-7。LSA分为头部和数据部分。

//头部信息:
LS age: 老化时间,1800--3600秒,其中1800是周期的LSA刷新时间,3600是LSA的最大老化时间
Options:可选项
LS Type: 说的是数据部分是几类的LSA
Link State ID: 是一个变量,根据不同的LSA这个地方的数值也不一样
Advertising Router: 这个LSA是谁产生的,就把这个路由器的RID写在这里
LS Seq Number: LSA的序列号,利用这个序列号确定谁的LSA是最新的,LSA每更新一次,序列号+1
Checksum: 奇偶校验和,用于验证数据传输的完整性
Length: 包含了头部信息和数据部分的总长度
Number of Links: 我通告了几个OSPF链路

//数据部分:
每一种LSA的数据部分是不一样的。

 

①LSA-1:每一个路由器都会产生一个LSA-1,只在域间传递。用于描述域内拓扑。

头部信息:
LS age: 老化时间,1800--3600秒,其中1800是周期的LSA刷新时间,3600是LSA的最大老化时间
Options:可选项
LS Type: router
Link State ID: 产生这个LSA路由器的RID
Advertising Router: 这个LSA是谁产生的,就把这个路由器的RID写在这里
LS Seq Number: LSA的序列号,利用这个序列号确定谁的LSA是最新的,LSA每更新一次,序列号+1
Checksum: 奇偶校验和,用于验证数据传输的完整性
Length: 包含了头部信息和数据部分的总长度
Number of Links: 我通告了几个OSPF链路

数据部分:
V:置为1代表虚链路配置节点
E:置为1代表代表ASBR路由器
B:置为1代表代表是一个ABR路由器

链路类型:                  链路ID:                    链路数据:
点对点                    邻居的RID              连接邻居的接口IP
广播                      DR的接口IP地址     连接DR接口的IP地址
stub(末梢)              子网络号           掩码
虚链路 ------------------------------------------------和点对点一样


链路类型点对点:默认情况下只有接口是串口或者是E1接口、T1接口、POS广域网接口情况下这个接口OSPF链路类型是点对点。
链路类型为广播:默认情况下只有接口是以太接口(F0/0,G0/0,T0/0),这个接口OSPF链路类型为广播。
链路类型stub:环回接口,OSPF网络里默认环回接口为stub类型,就算配置环回接口按照24位掩码配置的,在OSPF里面按照24位掩码通告的,但是OSPF仍然会把环回接口按照32位主机路由进行通告更新,除非把环回接口的链路类型改成点对点或者广播。

 

例子:

LS age: 1737
  Options: (No TOS-capability, DC)
  LS Type: Router Links    //1类LSA
  Link State ID: 2.2.2.2    //产生该LSA的RID
  Advertising Router: 2.2.2.2
  LS Seq Number: 80000005
  Checksum: 0x7826
  Length: 60
  Number of Links: 3 //该路由器上由三个接口
          
    Link connected to: a Stub Network    //环回接口也是一个stub。
     (Link ID) Network/subnet number: 2.2.2.2
     (Link Data) Network Mask: 255.255.255.255
      Number of TOS metrics: 0
       TOS 0 Metrics: 1
          
    Link connected to: a Transit Network    //transit就是代表广播类型
     (Link ID) Designated Router address: 23.1.1.3   //DR的ip
     (Link Data) Router Interface address: 23.1.1.2   //自己使用这个接口连接的DR
      Number of TOS metrics: 0
       TOS 0 Metrics: 1
          
    Link connected to: a Transit Network
     (Link ID) Designated Router address: 12.1.1.2
     (Link Data) Router Interface address: 12.1.1.2
      Number of TOS metrics: 0
       TOS 0 Metrics: 1

②LSA-2:由DR路由器产生,用于描述DR的掩码和该网段内路由器的RID,只在区域内传播。

头部信息:
LS age: 老化时间,1800--3600秒,其中1800是周期的LSA刷新时间,3600是LSA的最大老化时间
Options:可选项
LS Type: network //2类LSA
Link State ID: DR的接口IP地址
Advertising Router: 这个LSA是谁产生的,就把这个路由器的RID写在这里
LS Seq Number: LSA的序列号,利用这个序列号确定谁的LSA是最新的,LSA每更新一次,序列号+1
Checksum: 奇偶校验和,用于验证数据传输的完整性
Length: 包含了头部信息和数据部分的总长度
Number of Links: 我通告了几个OSPF链路

数据部分:

----描述这个广播网络(同一个网段种)里每一台路由器的RID
----描述掩码,这个掩码主要是针对DR的接口IP地址描述的

例子:

 LS age: 1366
  Options: (No TOS-capability, DC)
  LS Type: Network Links
  Link State ID: 12.1.1.2 (address of Designated Router)  //DR的ip
  Advertising Router: 2.2.2.2
  LS Seq Number: 80000004
  Checksum: 0xC07
  Length: 32
  Network Mask: /24    //DR的掩码
        Attached Router: 2.2.2.2   //该网段中的RID
        Attached Router: 1.1.1.1

③LSA-3:由ABR路由器产生,用于传递域间路由。stub和NSSA区域无法进入。

头部信息:
LS age: 老化时间,1800--3600秒,其中1800是周期的LSA刷新时间,3600是LSA的最大老化时间
Options:可选项
LS Type: summary
Link State ID: 通告的区域间路由
Advertising Router: 这个LSA是谁产生的,就把这个路由器的RID写在这里
LS Seq Number: LSA的序列号,利用这个序列号确定谁的LSA是最新的,LSA每更新一次,序列号+1
Checksum: 奇偶校验和,用于验证数据传输的完整性
Length: 包含了头部信息和数据部分的总长度
Number of Links: 我通告了几个OSPF链路

数据部分:
----描述这个链路状态ID里面的区域间路由的掩码以及这个ABR去往这个区域间路由的cost值

例子:

  LS age: 1858
  Options: (No TOS-capability, DC, Upward)
  LS Type: Summary Links(Network)   //3类LSA
  Link State ID:10.1.1.1 (summary Network Number)    //通告的区域间路由
  Advertising Router: 3.3.3.3
  LS Seq Number: 80000004
  Checksum: 0xA878
  Length: 28
  Network Mask: /24      //这个区域间路由的掩码
        TOS: 0  Metric: 1    //这个ABR去往10.1.1.1的cost值

④LSA-5:由ASBR路由器产生,全网传播,stub和NSSA区域无法进入。用于通告重分发路由。

头部信息:
LS age: 老化时间,1800--3600秒,其中1800是周期的LSA刷新时间,3600是LSA的最大老化时间
Options:可选项
LS Type: AS External Link
Link State ID: 充分发进来的外部路由
Advertising Router: 这个LSA是谁产生的,就把这个路由器的RID写在这里
LS Seq Number: LSA的序列号,利用这个序列号确定谁的LSA是最新的,LSA每更新一次,序列号+1
Checksum: 奇偶校验和,用于验证数据传输的完整性
Length: 包含了头部信息和数据部分的总长度
Number of Links: 我通告了几个OSPF链路

数据部分:

----描述充分发进来外部路由的掩码
----cost值,充分发进来的外部路由默认的cost值是20
----描述充分发进来外部路由的cost值类型:OE2和OE1,默认是OE2
     OE2不累加OSPF域内的cost值;OE1累计OSPF域内的cost值
----转发地址,默认的转发地址为0.0.0.0:代表去往这个外部路由先把数据包发给ASBR路由器

例子:

 LS age: 182
  Options: (No TOS-capability, DC)
  LS Type: AS External Link   //5类LSA
  Link State ID: 192.168.110.0 (External Network Number )  //重分发进来的网段
  Advertising Router: 7.7.7.7
  LS Seq Number: 80000002
  Checksum: 0x1F0D
  Length: 36
  Network Mask: /24     //重分发进来的网段的掩码
        Metric Type: 1 (Comparable directly to link state metric) //OE1
        TOS: 0 
        Metric: 20 
        Forward Address: 0.0.0.0  //转发地址为ASBR
        External Route Tag: 0

⑤LSA-4:ABR路由器产生。通告ASBR路由器的RID。因为再LSA-5中没有去往ASBR的路由。stub和NSSA区域无法进入。

LSA-4特点:每经过一个ABR路由器都会对这个LSA-4重新产生一次,主要作用是计算这个ABR路由器到ASBR的cost值。

头部信息:
LS age: 老化时间,1800--3600秒,其中1800是周期的LSA刷新时间,3600是LSA的最大老化时间
Options:可选项
LS Type: Summary Links
Link State ID: ASBR路由器的RID
Advertising Router: 这个LSA是谁产生的,就把这个路由器的RID写在这里
LS Seq Number: LSA的序列号,利用这个序列号确定谁的LSA是最新的,LSA每更新一次,序列号+1
Checksum: 奇偶校验和,用于验证数据传输的完整性
Length: 包含了头部信息和数据部分的总长度
Number of Links: 我通告了几个OSPF链路

数据部分:

----COST值,最近的ABR去往这个ASBR的cost值

例子:

LS age: 599
  Options: (No TOS-capability, DC, Upward)
  LS Type: Summary Links(AS Boundary Router)
  Link State ID: 7.7.7.7 (AS Boundary Router address)
  Advertising Router: 3.3.3.3
  LS Seq Number: 80000001
  Checksum: 0x745D
  Length: 28
  Network Mask: /0
        TOS: 0  Metric: 66 

⑥LSA-7:NSSA区域的ASBR产生的。在NSSA区域内部传播。在NSSA区域重分发进来的外部路由以LSA-7方式进来,报文格式和LSA-5一样LSA-7进入NSSA区域,由NSSA区域的ABR路由器把LSA-7转换成LSA-5后在通告进OSPF的骨干区域和其他区域。由LSA-7转换的LSA-5他的转发地址是ASBR的地址,而 正常的LSA-5的转发地址是0.0.0.0。

例子L

LS age: 140
  Options: (No TOS-capability, Type 7/5 translation, DC)  //7转5
  LS Type: AS External Link
  Link State ID: 8.8.8.8 (External Network Number )
  Advertising Router: 7.7.7.7
  LS Seq Number: 80000001
  Checksum: 0x7D5C
  Length: 36
  Network Mask: /32
        Metric Type: 2 (Larger than any link state path)
        TOS: 0 
        Metric: 20 
        Forward Address: 7.7.7.7   //转发地址与普通的LSA-5不一样。
        External Route Tag: 100  //可以自己手动打上标记

13、ospf的高级特性:

① ospf的路由聚合:只能在ABR或者ASBR路由器上做路由聚合,路由聚合可以防止路由的抖动现象。还能减轻路由表条目以及数据库条目。

172.16.1.0/24
172.16.2.0/24
172.16.3.0/24
172.16.4.0/24
172.16.5.0/24
-------------------------
172.16.0.0/16

ASBR(config)#router os 100
ASBR(config-router)#summary-address 172.16.0.0 255.255.0.0
ASBR(config-router)#exit

②ospf的认证,接口认证与区域认证:可以是不认证、明文认证、密文认证。区域认证为思科私有技术。一般开启接口认证即可。

//接口认证:
sw1(config)#int vlan 13
sw1(config-if)#ip ospf authentication message-digest 
sw1(config-if)#ip ospf message-digest-key 1 md5 kkk
sw1(config-if)#exit

//注意:接口认证确保认证方式要匹配,认证的key-id要匹配,认证的密钥也要匹配
如果需要不中断邻居关系更换认证密钥,那么就需要再写一个不一样的key-id,然后将原来的删除就行。

③负载均衡:

负载均衡:默认4条,最大16条;思科默认启用了CEF快速转发技术,CEF表中遵循的负载均衡算法是基于会话的;CEF为每一个相同的会话执行负载行为;
可以调整为给予数据包的会话(....if)#ip cef load-sharing pre-packet 。 Router(config)router ospf 100 Router(config-router)#maximum-paths 16 Router(config-router)#exit

④接口下修改优先级和cost

r1(config-if)#ip ospf priority 2   //大好,思科0代表是丧失选举DR和BDR,华为0代表最小 ,影响DR与BDR的选举。
r1(config-if)#ip ospf cost 65535     //修改cost值。影响选路。

⑤通告缺省路由:强制通告和普通通告,普通通告时需要在自己的路由表中已存在一条缺省路由。

强制通告OSPF默认路由给邻居:强制通告的OSPF默认路由以外部路由体现,默认metric为1。

(config-router)#default-information originate always

修改参考带宽值

r1(config-router)#auto-cost reference-bandwidth 1000
一个路由器,有个G借口,有个F接口,但算出来的cost值都是1,不公平!全局生效。单位是M,cost值小于1按1算。
这个1000M实际是替代10的8次方,修改改为所有接口中最大的带宽为参考值。

⑤修改管理距离:因为不同的厂商的设备管理距离不一致,可能会导致次优选路或者环路的产生,所以要将他们改为一致。

r1(config-router)#distance 120
r1(config-router)#distance ospf intra-area 10 inter-area 20 external 30  //修改域间、域内、重分发的管理距离。

⑥修改接口带宽:修改接口带宽可以影响cost值的计算,从而影响选路。

⑦被动接口:passive接口,只收不发hello包,一般用于不建立邻居关系时使用。

⑧MTU值:一般MTU值不匹配无法建立完全邻居关系,会卡在Exstart状态。因为LSDBDB报文需要使用到MTU值,不匹配则无法传递LSDBDB报文。可以修改MTU值,也可以设置为忽略MTU值的检查。

⑨修改hello包发送间隔时间或者老化时间:可以加快网络的收敛速度,如果两端的hello包发送间隔时间或者老化时间不一致,则邻居关系起不来。

⑩LSA的组团更新:就是运行SPF算法的时间间隔,防止SPF长时间运行。

①①路由过滤:使用前缀列表匹配路由,然后应用在接口上,可以过滤LSA-3。加油一种就是distribute-list过滤,可以到达过滤LSA-3一样的效果,不通的是过滤的方式不一样,这个是过滤的是路由,而前者是过滤LSA-3。distribute-list过滤在out方向无效。

①②注意:当一端的链路类型为点对点,一端为广播时,邻居关系可以起来,但是无法计算出路由,也就是路由表中没有路由。还有一个就是在串口下两端的IP地址与掩码不一致的时候邻居关系也可以起来,也是没有路由。

①③邻居起不来总结:

物理层不同,ping不通| acl过滤了hello包| 被动接口| 
IP地址与掩码不匹配| 链路两端不在同一区域| 认证类型或认证密钥不一致|
接口类型或区域类型不一致| 接口的链路类型不一致| MTU不一致| ospf宣告错误| RID相同|

邻居长期处于2-way状态:DRothor与DRothor之间为正常长期处于2-way状态。

①④影响ospf的选路:带宽、cost值、metric值、管理距离、路由聚合........

-------------------完事~~----------------------------

 

posted @ 2022-09-02 22:25  Ant_blog  阅读(820)  评论(0编辑  收藏  举报