文章目录
一OSPF概述
1.根据网关协议分类
AS是指由同一个技术管理机构管理、使用统一选路策略的一些路由器的集合。
内部网关路由协议(IGP):运行在AS内部的路由协议,主要解决AS内部的选路问题,发现、计算路由
主要有:RIP1/RIP2、OSPF、ISIS、EIGRP(思科私有协议)
外部网关路由协议(EGP):运行在AS与AS之间的路由协议,他解决AS之间选路问题。
通常有:BGP
2.OSPF
OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。著名的迪克斯彻(Dijkstra)算法被用来计算最短路径树。OSPF支持负载均衡和基于服务类型的选路,也支持多种路由形式,如特定主机路由和子网路由等。
3.工作原理
1.建立邻居表
2.形成链路状态数据库
3.形成路由表
OSPF的简单说就是两个相邻的路由器通过发报文的形式成为邻居关系,邻居再相互发送链路状态信息形成邻接关系,之后各自根据最短路径算法算出路由,放在OSPF路由表,OSPF路由与其他路由比较后优的加入全局路由表。整个过程使用了五种报文、三个阶段、四张表。
二.OSPF区域
1.OSPF区域
目的:OSPF 中划分区域的目的就是在于控制链路状态信息LSA 泛洪的范围、减小链路状态数据库LSDB的大小、改善网络的可扩展性、达到快速地收敛。
1.当网络中包含多个区域时,OSPF 协议有特殊的规定,即其中必须有一个 Area 0,通常也叫做骨干区域(Backbone Area),当设计 OSPF 网络时,一个很好的方法就是从骨干区域开始,然后再扩展到其他区域。
2.骨干区域在所有其他区域的中心,即所有区域都必须与骨干区域物理或逻辑上相连,这种设计思想的原因是 OSPF 协议要把所有区域的路由信息引入骨干区,然后再依次将路由信息从骨干区域分发到其它区域中。
2.路由器
1)Router ID :OSPF区域内唯一标识路由器的IP地址
2)Router ID选取规则:
选取路由器loopback接口上数值最高的IP地址
如果没有loopback接口,在物理端口中选取IP地址最高的
上面两个都是自动选取的,下面这个是手动选取的规则:
使用router-id命令指定Router lD
3)DR和BDR
当多台OSPF路由器连到同一个多路访问网段时,如果每两台路由器之间都相互交换LSA,那么该网段将充满着众多LSA条目,为了能够尽量减少LSA的传播数量,这时候需要一个路由器和所有的路由器互换LSA,减少LSA的数量,那么这个路由器被称为DR;在选DR的时候,也会选出一个作为备份,称为BDR;最后其他路由器(DRothers)只和DR和BDR形成邻接关系。
4)DR和BDR的选举方法
自动选举DR和BDR
网段上Router ID最大的路由器将被选举为DR,第二大的将被选举为BDR
手工选择DR和BDR
优先级范围是0~255,数值越大,优先级越高,默认为1
如果优先级相同,则需要比较Router lD
如果路由器的优先级被设置为0,它将不参与DR和DBR的选举
现实中,很少能有路由器同时开机,所以先上线的是DR,第二上线的是BDR。
注:当DR和BDR存在时,除非他俩down了,不然没法强制更换。
5)在OSPF中使用224.0.0.5和224.0.0.6作为组播地址,选举时,大家都是用组播地址224.0.0.5发送Hello包(这个时候路由器都认为自己是DR),当DR和BDR选出来后,DR和BDR使用224.0.0.5发送,其他路由器使用224.0.0.6发送。
3.OSPF组播地址
- 224.0.0.5
- 224.0.0.6
DR/BDR工作原理
DRothers向DR/BDR发送DBD、LSR或者ISU时目标地址是224.0.0.6 。或者理解为:DR/BDR帧听224.0.0.6
DR/BDR向DRothers发送更新的DBD、lSR或者LSU时日标地址是224.0.0.5,或着理解为: DAothors侦听224.0.0.5
4.OSPF的度量值:COST
规则:数值越小越优先
最短路径是基于接口指定的代价(COST)计算的
计算公式=108 /BW
常用的端口与COST
接口类型 | COST(108 /BW) |
---|---|
Gigabit Ethernet | 0.1 |
fast Ethernet | 1 |
Ethernet | 10 |
电话线56k | 1785 |
5.OSPF数据包(5个包)
OSPF数据包承载在lP数据包内,使用协议号89
OSPF的包类型 | 描述 |
---|---|
Hello包 | 用于发现和维持邻居关系,选举DR和BDR |
数据库描述包(DBD) | 用于向邻居发送摘要信息以同步链路状态数据库 |
链路状态请求包(LSR) | 在路由器收到包含新信息的DBD后发送,用于请求更详细的信息 |
链路状态更新包(LSU) | 收到LSR后发送链路状态通告(LSA),一个LSU数据包可能包含几个LSA |
链路状态确认包(LSAck) | 确认已经收到DBD/ LSU,每个LSA需要被分别确认 |
6.OSPF的7个状态
状态 | 作用 |
---|---|
down状态 | 初始化,没有来自邻居的Hello包 |
init状态 | 收到第一个Hello包,但没发出去,建立了自己的邻居表 |
2 Way 状态 | 双向建立会话,邻居表都建立完成 |
Exstart状态 | 建立主从关系 |
Exchange状态 | 交换摘要信息,到确认信息收到 |
Loading状态 | 加载详细信息 |
full状态 | 完全连接,计算最短路径,并载入路由表 |
7.OSPF与RIP的比较
OSPF | RIPv1 | RIPv2 |
---|---|---|
链路状态路由协议 | 距离矢量路由协议 | 同v1 |
没有跳数的限制 | RIP的15跳限制,超过15跳的路由被认为不可达 | 同V1 |
支持可变长子网掩码(VLSM) | 不支持可变长子网掩码(VLSM) | 支持可变长子网掩码(VLSM) |
收敛速度快 | 收敛速度慢 | 同V1 |
使用组播发送链路状态更新 | 周期性广播更新整个路由表 | 周期性组播更新整个路由表 |
8.OSPF状态
路由器从启动OSPF进程,到根据链路状态数据库计算出路由表,同样需要经历一系列的启动过程,总共有7种可能的启动过程,但并不是一定会经历这7个过程,具体过程如下:
Down → Init → Two-way → Exstart → Exchange → Loading → Full
Down
邻居状态机的初始状态,是指在过去的Dead-Interval时间内没有收到对方的Hello报文或OSPF没有成功启动时。
Init
本状态表示已经收到了邻居的Hello报文,但是该报文中列出的邻居中没有包含我的Router ID(对方没有收到我的Hello报文)。
2-way
本状态表示双方互相收到了对端发送的Hello报文,建立了邻居关系,在广播和NBMA类型的网络中,两个接口状态是DRother的路由器之间将停留在此状态。
EXStart
在此状态下,路由器和他的邻居间通过互相交换DD报文(该报文并不包含实际内容,只包含一些标志位)来决定发送时的主/从关系,建立主/从关系主要是为了保证在后续的DD报文交换中能够有序的发送。
EXchange
路由器将本地的LSDB用DD报文来描述,并发送给邻居。
Louding
路由器发送LSR报文向邻居请求对法的DD报文。
Full
在此状态下,邻居路由器的LSDB中所有的LSA本路由器全都有了,即本路由器和邻居建立了邻接adjacency状态。
9.4种网络划分类型
点到点网络
自动发现邻居,不需要DR/BDR,组播224.0.0.5
广播多路访问网络
自动发现邻居,选举DR/BDR,组播224.0.0.5、224.0.0.6
非广播多路访问网络
手工指定邻居,选举DR/BDR,单播
点到多点网络
自动发现邻居,不需要DR/BDR,组播224.0.0.5
简单配置
R1
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 192.168.10.1 24
[R1-GigabitEthernet0/0/0]un shu
[R1-GigabitEthernet0/0/0]un shutdown
Info: Interface GigabitEthernet0/0/0 is not shutdown.
[R1-GigabitEthernet0/0/0]int g0/0/1
[R1-GigabitEthernet0/0/1]ip add 12.0.0.1 24
[R1-GigabitEthernet0/0/1]un shu
[R1-GigabitEthernet0/0/1]un shutdown
Info: Interface GigabitEthernet0/0/1 is not shutdown.
[R1-GigabitEthernet0/0/1]q
[R1]int loo
[R1]int LoopBack 0
[R1-LoopBack0]ip add 1.1.1.1 32
[R1-LoopBack0]ospf
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]net 1.1.1.1 0.0.0.0
[R1-ospf-1-area-0.0.0.0]net 192.168.10.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]net 12.0.0.1 0.0.0.255
[R1-ospf-1-area-0.0.0.0]
R2
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip add 23.0.0.2 24
[R2-GigabitEthernet0/0/0]un shu
[R2-GigabitEthernet0/0/0]un shutdown
Info: Interface GigabitEthernet0/0/0 is not shutdown.
[R2-GigabitEthernet0/0/0]int g0/0/1
[R2-GigabitEthernet0/0/1]ip add 12.0.0.2 24
[R2-GigabitEthernet0/0/1]un shu
Info: Interface GigabitEthernet0/0/1 is not shutdown.
[R2-GigabitEthernet0/0/1]int loo 0
[R2-LoopBack0]ip add 2.2.2.2 32
[R2-LoopBack0]os
[R2-LoopBack0]ospf
[R2-ospf-1]are
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]net 2.2.2.2 0.0.0.0
[R2-ospf-1-area-0.0.0.0]net 12.0.0.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]net 23.0.0.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]
R3
[R3]int g0/0/0
[R3-GigabitEthernet0/0/0]ip add 23.0.0.3 24
[R3-GigabitEthernet0/0/0]un shu
Info: Interface GigabitEthernet0/0/0 is not shutdown.
[R3-GigabitEthernet0/0/0]int g0/0/1
[R3-GigabitEthernet0/0/1]ip add 192.168.20.1 24
[R3-GigabitEthernet0/0/1]un shu
Info: Interface GigabitEthernet0/0/1 is not shutdown.
[R3-GigabitEthernet0/0/1]q
[R3]int lo
[R3]int LoopBack 0
[R3-LoopBack0]ip add 3.3.3.3 32
[R3-LoopBack0]os
[R3-LoopBack0]ospf
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]net 3.3.3.3 0.0.0.0
[R3-ospf-1-area-0.0.0.0]net 23.0.0.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]net 192.168.20.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]