OSPF:开放式最短路径优先协议
无类别链路状态路由协议,属于IGP(内部网关路由协议) 更新方式:组播更新224.0.0.5、224.0.0.6 ,触发更新,30min一次周期更新。 更新量大:为了在中大型网络中使用,必须进行结构化的部署,即区域划分、地址规划。 判断网络协议的好坏: 1、收敛好 2、选路佳——即无环 3、占用资源少
1、OSPF的数据包: 跨层封装在3层报头 协议号89
1 、 hello数据包 2 、 数据库描述包–DBD 3 、 链路状态请求包—LSR 4 、 链路状态更新包—LSU 5 、 链路状态确认包—LSAck
LSA—链路状态通告—具体的每条拓扑或路由信息
2、OSPF的状态机
down ——一旦收到对端的hello包进入下一个状态。 init ——初始化,一旦接收到的hello包中存在本地的RID,进入下一个状态。 2way ——双向通讯,邻居关系建立的标志。
状态含义: 条件:点到点直接进入下一状态,MA网络进行40s的DR/BDR选举,非DR/BDR间不能进入下一状态。 Exstart 预启动——使用不携带数据库目标的DBD包进行主从关系选举,RID数值大为主即优先。 先进入下一个状态 Exchange—— 准交换,使用携带信息的DBD进行数据库目录共享。 Loading ——加载,查看完对端的DBD后,基于本地未知的LSA信息,使用LSR查询,对端使用LSU应答,本地使用LSack确认,来获取所有未知的LSA信息。 FULL——转发,邻接关系建立的标志。
LSDB同步过程如下: 1、RTA和RTB的Router ID分别为1.1.1.1和2.2.2.2并且二者已建立了邻居关系。当RTA的邻居状态变为ExStart后,RTA会发送第一个DD报文。此报文中,DD序列号被随机设置为X,I-bit设置为1,表示这是第一个DD报文,M-bit设置为1,表示后续还有DD报文要发送,MS-bit设置为1,表示RTA宣告自己为Master。
2、当RTB的邻居状态变为ExStart后,RTB会发送第一个DD报文。此报文中,DD序列号被随机设置为Y(I-bit=1,M-bit=1,MS-bit=1,含义同上)。由于RTB的Router ID较大,所以RTB将成为真正的Master。收到此报文后,RTA会产生一个Negotiation-Done事件,并将邻居状态从ExStart变为Exchange。
3、当RTA的邻居状态变为Exchange后,RTA会发送一个新的DD报文,此报文中包含了LSDB的摘要信息,序列号设置为RTB在步骤2中使用的序列号Y(隐式确认),I-bit=0,表示这不是第一个DD报文,M-bit=0,表示这是最后一个包含LSDB摘要信息的DD报文,MS-bit=0,表示RTA宣告自己为Slave。收到此报文后,RTB会产生一个Negotiation-Done事件,并将邻居状态从ExStart变为Exchange。
4、当RTB的邻居状态变为Exchange后,RTB会发送一个新的DD报文,此报文包含了LSDB的摘要信息,DD序列号设置为Y+1, MS-bit=1,表示RTB宣告自己为Master。
5、虽然RTA不需要发送新的包含LSDB摘要信息的DD报文,但是作为Slave,RTA需要对Master发送的每一个DD报文进行确认。所以,RTA向RTB发送一个新的DD报文,序列号为Y+1,该报文内容为空。发送完此报文后,RTA产生一个Exchange-Done事件,将邻居状态变为Loading。RTB收到此报文后,会将邻居状态变为Full(假设RTB的LSDB是最新最全的,不需要向RTA请求更新)。
3、OSPF的工作过程
启动配置完成后,运行ospf协议的路由器,将组播收发hello包;若hello包中存在本地的RID,视为对端已经认识本地,故标志邻居关系建立;生成邻居表。 之后条件的匹配,匹配失败将停留于邻居关系,仅hello周期保活即可。匹配成功者间,将建立邻接(毗邻)关系;首先使用不携带数据库目录的DBD进行主从关系选举;之后主优先与从进行DBD目录交换;交换后再使用LSR/LSU/LSack来获取未知的LSA信息;直到邻接间数据库完全一致;生成LSDB表(即链路状态数据库(该网络所有LSA的集合)) 当数据库的同步完成后,本地将所有的LSA进行组合;生成有向图—>最短路径树将最佳路径加载到本地的路由表中;网络收敛完成,hello包周期保活。 之后每30min邻接关系间周期比对下一数据库目录(查漏补缺)。 即: 1、启动配置完成后,本地收发hello包,建立邻居关系,生成邻居表。 2、再进行条件的匹配,匹配失败将停留于邻居关系,仅hello包保活即可。 3、匹配成功者之间建立邻接关系,需要DBD共享数据库目录,LSR/LSU/LSack来获取未知的LSA信息,当收集完网络中所有的LSA后,生成数据表–LSDB。 4、LSDB建立完成后,本地基于OSPF选路规则,计算本地到达所有未知网段的最短路径,然后将其加载到路由表中,完成收敛。 5、收敛完成后–hello包周期保活–30分钟周期的BDB比对,若不一致将会使用LSR/LSU/LSack重新获取。
网络结构突变: 1、新增网段——直连新增网段的ospf设备,使用LSU告知本地所有邻接,对端需确认。 2、断开网段——直连断开网段的ospf设备,使用LSU告知本地所有邻接,对端需确认。 3、无法沟通——dead time到时时,断开邻居关系,删除从该邻接学习到信息。
默认hello 包的hello time 为10s或30s ;dead time 为hello time的4倍。 邻居间hello包中必须完全一致的参数、 hello time和dead time、区域ID、认证字段。 末梢区域标记:在华为设备的体系中,邻居间接口所配置ip地址子网掩码必须完全一致。
4、OSPF的基础配置
[r1]ospf 1 router-id 1.1.1.1 启动时需要定义进程号;进程号仅具有本地意义; 同时配置RID,全网唯一;使用IPV4地址格式; 手工配置—环回接口最大地址数值—物理接口最大地址数值。
宣告:1)区域划分 ;2)激活接口协议 ; 3)传递接口信息。
[r1-ospf-1]area 0 [r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0 [r1-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255
区域划分规则: 1、星型拓扑(中心到站点、轴辐状) 区域0为骨干,大于0为非骨干;所有非骨干必须连接到骨干区域 2、必须存在ABR—区域边界路由器 –同时连接两个区域 启动配置完成后,邻居间收发hello包,建立邻居关系;生成邻居表。 [r2]display ospf peer brief
邻居关系建立后,邻居间进行条件匹配;匹配失败,停留于2way的邻居关系。 匹配成功将建立成为邻接关系,关系间将进行LSA的洪泛、LSDB的同步(OSPF收敛); 完成后,生成LSDB—数据库表。
当数据库表完全一致后,本地基于数据库生成有向图,在转换为最短路径树;之后将本地到达所有未知网段的最短路径加载于本地的路由表中。 优先级为10,选路基于cost值进行。 Cost开销值= 参考带宽/接口带宽 向上取整 默认优选整段路径cost值之和最小。 若接口带宽大于参考带宽,cost值为1;可能导致选路不佳;故需要修改默认的参考带宽。 默认参考带宽=100m
[r2]ospf 1 [r2-ospf-1]bandwidth-reference ? INTEGER<1-2147483648> The reference bandwidth (Mbits/s) [r2-ospf-1]bandwidth-reference 1000
切记:网络中一定修改参考带宽,需要全网设备修改一致。
5、邻居关系成为邻接关系的条件
邻居关系成为邻接关系的条件基于网络类型决定的。 点到点——OSPF在点到点网络必然成为邻接关系。 MA ——由于OSPF协议没有接口水平分割,故该网段两两间皆邻接,将可能出现大量的重复更新;因此ospf协议在MA网络中将进行DR/BDR选举;所有非DR/BDR间仅为邻居关系。 选举规则:先比较参选接口的优先级,默认1,0-255越大越优;0为不参选 若接口优先级相同,比较参选设备的RID,数值大的优先。
[r2]interface GigabitEthernet 0/0/0 [r2-GigabitEthernet0/0/0]ospf dr-priority 3 修改参选接口的优先级
DR/BDR为选举而非抢占,故修改优先级后不会影响网络选举结果。 因此修改优先级后,需要管理员重启该网段所有设备的ospf进程。
reset ospf process Warning: The OSPF process will be reset. Continue? [Y/N]:y
还可以将非DR/BDR设备优先级修改为0,这样不需要重启进程。 P2P:点到点网络 P2MP:点到多点网络 NBMA:非广播型网络 BMA:广播型网络
6、注意
OSPF协议要求邻接关系间接口MTU值必须一致,否则将卡在exstart或exchange状态机;华为设备默认不检测邻接间的MTU。
[r1]interface GigabitEthernet 0/0/1 [r1-GigabitEthernet0/0/1]ospf mtu-enable
要求本地与该接口连接的邻接设备进行mtu值一致。
作业
1、使用OSPF实现全网可达; 2、R1与R3之间,R1为DR,没有BDR; 3、R3与R4,R4为DR,没有BDR。
解:
1、配置所有设备的IP地址 2、使用OSPF实现全网可达 1)对R1:
[r1]ospf 1 rou
[r1]ospf 1 router-id 1.1.1.1
[r1-ospf-1]area 0
[r1-ospf-1-area-0.0.0.0]net
[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
[r1-ospf-1-area-0.0.0.0]net
[r1-ospf-1-area-0.0.0.0]network 123.1.1.1 0.0.0.0
2)对R2:
[r2]ospf 1 rou
[r2]ospf 1 router-id 2.2.2.2
[r2-ospf-1]area 0
[r2-ospf-1-area-0.0.0.0]net
[r2-ospf-1-area-0.0.0.0]network
[r2-ospf-1-area-0.0.0.0]net
[r2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
3)对R3:
[r3]ospf 1 rou
[r3]ospf 1 router-id 3.3.3.3
[r3-ospf-1]area 0
[r3-ospf-1-area-0.0.0.0]net
[r3-ospf-1-area-0.0.0.0]network 123.1.1.3 0.0.0.0
[r3-ospf-1]area 1
[r3-ospf-1-area-0.0.0.1]net
[r3-ospf-1-area-0.0.0.1]network 3.3.3.3 0.0.0.0
[r3-ospf-1-area-0.0.0.1]net
[r3-ospf-1-area-0.0.0.1]network 34.1.1.1 0.0.0.0
[r3-ospf-1]display this
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 123.1.1.3 0.0.0.0
area 0.0.0.1
network 3.3.3.3 0.0.0.0
network 34.1.1.1 0.0.0.0
return
4)对R4:
[r4]ospf 1 router-id 4.4.4.4
[r4-ospf-1]area
[r4-ospf-1]area 1
[r4-ospf-1-area-0.0.0.1]net
[r4-ospf-1-area-0.0.0.1]network 34.1.1.2 0.0.0.0
[r4-ospf-1-area-0.0.0.1]net
[r4-ospf-1-area-0.0.0.1]network 4.4.4.4 0.0.0.0
3.R1-R3之间R1为DR,没有BDR 先比较接口优先级,然后人为修改优先级。 R1为DR,其他的全是DROTHER。 现在修改除R1外的两个路由器的优先级为0,R1为1,在修改后重启三个路由器,再查询R1的优先级。 修改接口优先级命令:【对应接口:ospf dr-priority +优先级】
1)对R1:
2)对R2: 3)对R3:
4.R3与R4,R4为DR,没有BDR 先修改R4的优先级为0,再修改后重启R3与R4两个由器,最后查询R3的优先级。 1)对R3: 2)对R4:
|