获取未知网段路由信息的方法:
静态路由 --- 由网络管理员手工配置的路由信息
动态路由 --- 所有路由器运行相同的路由协议,由路由器之间彼此沟通交流,最终计算出到达未知网段的路由信息
AS --- 自治系统
IGP --- 内部网关协议 --- RIP,OSPF,EIGRP,ISIS
EGP --- 外部网关协议 --- BGP
IGP协议根据算法进行划分:
距离矢量型协议:路由器之间直接传递路由条目信息 --- "贝尔曼·福特算法" --- "依据传闻的路由" ---RIP
链路状态型协议:路由器彼此之间交换LSA(链路状态通告)信息,之后将收集到的拓扑信息形成图形结构,再使用SPF算法,将图形结构转换为树形结构,计算到达位置网段的路由信息 --- OSPF
IGP的评判标准:
选路佳,收敛快,占用资源少
1.OSPF因为是链路状态型协议,所以,从选路的角度,不会出现环路,并且,使用带宽作为开销的评判标准,相较于RIP而言,会更加合理一些
2.因为OSPF的计时器时间比RIP跟短,所以,收敛速度优于RIP
3.从占用资源的角度,因为RIP单个数据包中携带的路由信息占用资源量并不大,而OSPF单个数据包中携带LSA信息资源占用量会高于RIP,但是,从整体的角度看,OSPF并不存在像RIP这样高频的周期更新,并且,OSPF存在很多针对资源占用的优化机制,所以,从整体的角度看,OSPF的资源占用量略优于RIP
RIP的版本:RIPV1,RIPV2 --- IPV4
RIPNG --- IPV6
OSPF的版本:OSPFV1(实验室夭折),OSPFV2 --- IPV4
OSPFV3 --- IPV6
RIPV2和OSPFV2的相同点:
1.RIPV2和OSPFV2一样,都是无类别的路由协议
2.RIPV2和OSPFV2一样,都使用组播传递信息
RIPV2:224.0.0.9
OSPFV2:224.0.0.5和224.0.0.6
3.RIPV2和OSPFV2都支持负载均衡
RIPV2和OSPFV2的不同点:
RIP只能应用在小型网络环境中,而OSPF协议可以应用中大型网络环境中 --- OSPF支持结构化部署 --- 区域划分
如果整个网络只有一个OSPF区域,我们称之为单区域OSPF网络,如果一个网络规模较大,我们可以划分出多个OSPF区域,则这样的网络我们称为多区域OSPF网络
区域划分的目的:区域内部传递拓扑信息,区域之间传递路由信息
ABR --- 区域边界设备 --- 同时属于多个区域,一个接口对应一个区域,并且其中一个接口连接在骨干区域
一个ABR设备可以对应多个区域,区域之间也可以存在多个ABR设备
区域划分的要求:
1.区域之间必须存在ABR设备
2.区域划分必须按照星型拓扑结构进行划分 --- 星型拓扑中间区域我们称为骨干区域,其他的区域称为非骨干区域 --- 为了区分和标识不同的区域,我们需要给每一个区域设置一个区域ID(area ID)--- 由32位二进制构成 --- 可以直接使用十进制来表达,也可以使用点分十进制来表达 --- 骨干区域的区域ID被定义为区域0
1.OSPF的数据包
hello报文 --- 周期性的发现,建立和保活邻居关系
hello时间 --- 默认10S(30S)
Dead time --- 死亡时间 --- 4倍的hello时间
RID --- 路由器的ID --- 32位二进制构成
1.全网唯一;2.必须使用IP地址的格式进行配置
手工配置:由网络管理员直接配置给设备,手工配置仅需满足以上两点要求即可
自动生成:首先设备会选择自身环回接口的IP地址作为本地的RID,如果环回接口存在多个,则选择这些IP地址中数值最大的作为RID;如果设备并不存在环回接口,则使用物理接口的IP地址作为本地的RID,如果存在多个物理接口,则选择这些IP地址中数值最大的作为RID
DBD报文 --- 数据库描述报文 --- 链路状态数据库(LSDB)--- 里面携带的是LSA的摘要信息 --- 菜单
LSR报文 --- 链路状态请求报文 --- 基于DBD包请求未知的LSA信息
LSU报文 --- 链路状态更新报文 --- 真正携带LSA的数据包 --- 基于LSR的请求内容发送对端需要的LSA信息
LSACK报文 --- 链路状态确认报文 --- 确认包
OSPF存在每30分钟一次的周期更新
2.OSPF的状态机
Two-Way状态 --- 双向通信状态 --- 标志着邻居关系的建立
(条件匹配)条件匹配成功,则进入到后续的状态中,条件匹配失败,则将停留在邻居关系中,使用hello包进行周期保活
主从关系选举 --- 在Exstart状态下,使用未携带数据的DBD包,通过比较RID进行主从关系选举,RID大的为主,为主的可以优先挑选LSA
主从关系选举一方面为了避免同一时间进行数据交换而造成大量的链路资源浪费,另一方面是为了完成隐性确认--- 为主的设备可以主导隐性确认
Full状态 --- 标志着邻接关系的建立 --- 主要为了和邻居关系进行区分;邻居关系仅能使用hello包进行周期的保活,而只有邻接关系可以交换LSA信息
Down状态:发送hello包后进入到下一个状态
Init(初始化)状态:当收到对方的hello包中包含自己本地的RID时,则可以进入到下一个状态
Tow-way(双向通信)状态:标志着邻居关系的建立
(条件匹配)--- 如果条件匹配通过,则进入到后续的状态中,条件匹配失败,则停留在邻居关系中,使用hello包进行周期保活
Exstart(预启动)状态:使用未携带数据的DBD包进行主从关系选举,为主的可以优先获取LSA信息
Exchange(准交换)状态:使用携带数据的DBD包,交换LSDB的摘要信息
Loading(加载)状态:使用LSR、LSU、LSACK报文交换未知的LSA信息
Full(转发)状态:标志着邻接关系建立
3.OSPF的工作过程
设备将从所有激活OSPF的接口处以组播形式发送hello包,组播地址是224.0.0.5,当收到一个其他设备发送的hello包中包含自己本地的RID时,则将进入到邻居状态,设备会将所有的邻居状态进行记录,生成一张表 ---邻居表;之后再进行条件匹配;匹配失败,则将停留在邻居关系,仅使用hello包进行周期保活;匹配成功,则开始建立邻接关系,首先,使用未携带数据的DBD包进行主从关系选举,之后,使用携带数据的DBD包交换本地LSDB的摘要信息;使用LSR、LSU、LSACK这三种数据包基于DBD包获取未知的LSA信息;之后,将所有的LSA信息记录在本地的一张表中 ---数据库表(LSDB)之后,根据本地的LSDB数据库表,获取完整的拓扑信息,使用SPF算法,将图形结构转换成树形结构,最终,计算出到达未知网段的路由信息;将这些路由信息加载到路由表中;收敛完成后,依然会使用hello包每隔10S进行一次周期保活;每隔30MIN进行一次周期更新
结构突变:
1.突然新增一个网段 --- 触发更新,在结构变更的第一时间中,将变更信息通过LSU包发送出去,需要LSACK进行确认
2.突然断开一个网段 --- 触发更新,在结构变更的第一时间中,将变更信息通过LSU包发送出去,需要LSACK进行确认
3.无法沟通 --- 40S死亡时间
4.OSPF的基础配置
1.启动进程
[R1]ospf 1 router-id 1.1.1.1
2.创建区域
[R1-ospf-1]area 0
3.宣告
宣告的作用:1.激活接口 --- 所有宣告网段范围内的接口将被激活,所有激活的接口可以收发OSPF的数据
2.发布路由 --- 只有激活接口对应的直连网段路由信息才能发布
[R1-ospf-1-area-0.0.0.0]network 1.1.1.00.0.0.255 --- 反掩码--- 由连续的0和连续的1构成,0对应位不可变,1对应位可变
MTU:0 --- 华为设备默认没有开启MTU的检测,所以,这里用0表示,并不代表真实的MTU值为0
在华为设备中,OSPF协议的默认优先级为10
COST = 参考带宽 / 真实带宽 --- 参考带宽默认为100Mbps --- 如果计算的结果是一个小于1的小数,则直接按1来取值;如果是一个大于1的小数,直接取整数部分
[R1-ospf-1]bandwidth-reference 1000 --- 修改参考带宽的数值
在运行OSPF的所有设备中必须修改为相同的参考带宽的数值
条件匹配
指定路由器 --- DR --- 在一个广播域中,我们需要拥有一台DR设备,DR设备和其他设备之间保持邻接关系
备份指定路由器 --- BDR --- 在一个广播域中,我们也需要选择一台设备为BDR设备,BDR设备和其他设备之间需要保持邻接关系
在一个广播域中,在DR和BDR都存在的情况下,至少需要四台设备才能看到邻居关系
DR和BDR其实是接口概念
条件匹配:如果在一个广播域中,所有设备都建立邻接关系,则将造成大量的重复更新,所以,需要进行DR/BDR的选举,只有DR和BDR和其他设备之间保持邻接关系,剩余所有DROther之间仅保留邻居关系即可
DR和BDR的选举规则:
1.先比较接口的优先级,接口优先级最大的设备为DR设备,在DR设备选出来后,会在剩余所有设备中选择优先级最大的为BDR设备
优先级默认为1,取值范围0 - 255,如果将一个接口的优先级修改为0,则这个接口将放弃 DR/BDR选举
[R1-GigabitEthernet0/0/0]ospf dr-priority ? --- 修改接口的优先级
INTEGER<0-255> Router priority value
2.如果接口的优先级相同,则比较RID;优先选择RID大的设备所对应的接口为DR,之后选择BDR设备,在剩余设备中,优先选择RID大的设备所对应的接口为BDR
DR和BDR的选举是非抢占模式的
<R1>reset ospf process --- 重新启动OSPF进程
Warning: The OSPF process will be reset. Continue? [Y/N]:y
所有运行OSPFV2的设备都会加入到一个组播组中,这个组播组的地址是224.0.0.5
所有DR和BDR设备会监听另外一个组播地址,224.0.0.6
OSPF的数据包
OSPF是一个跨层封装的协议,没有传输层,直接封装在网络层之上,IP协议中会有一个协议号来标定OSPF --- 89
OSPF的头部 --- 所有类型的OSPF数据包公共部分
版本 --- OSPF的版本,一般使用OSPFV2,所以这里写2
类型 --- OSPF数据包的类型
Hello包 --- 1
DBD包 --- 2
LSR包 --- 3
LSU包 --- 4
LSACK包 --- 5
路由器ID --- RID --- 发送该数据包设备的RID
区域ID --- areaID --- 发出数据包接口所在的区域
验证类型 --- null --- 空认证
simple --- 明文认证
MD5认证 --- 比对摘要值
OSPF在进行手工认证时,需要比对两部分内容,第一部分是认证类型,必须一致;之后比对认证数据,也必须一致
网络掩码 --- 发出数据包的接口地址的掩码
hello时间,死亡时间 --- 保活和失效判定的时间
8位的可选项 --- 每一位置1时都代表该设备符合某一种OSPF的特性
特殊区域的标记
路由器的优先级 --- 发出接口在进行DR和BDR选举时的优先级
DR和BDR --- 如果选举完成,则将DR和BDR的IP地址放在这个位置;如果没有选举出来或者缺少某种角色,则使用0.0.0.0来进行字段填充
邻居的RID --- 将携带所有本地已知的邻居的RID,用来建立邻居关系
Hello包在建立邻居关系时的条件:
1.hello时间
2.死亡时间
3.认证
4.特殊区域标记
5.网络掩码 --- 在P2P网络环境下,该项不需要相同
以上邻居双方任何一个参数不一致,将导致邻居关系建立失败
在DR和BDR选举时,存在一个选举时间,计时器时间为40S(同死亡时间,死亡时间修改,这个计时器的时间也会同步修改)
2.DBD包 --- 1.进行主从关系选举;2.共享LSA摘要信息;3.确认包
MTU(最大传输单元) --- 开启检测功能后,会携带接口的MTU值,如果两端MTU值不同,可能会停留在Exstart状态
[Huawei-GigabitEthernet0/0/0]ospf mtu-enable --- 开启MTU检查功能
8位可选项 --- 每一位置1时都代表该设备符合某一种OSPF的特性
I --- init --- 如果I置1,则代表这个DBD包是用来进行主从关系选举的数据包
M --- more --- 如果M位置1,则代表后面还有其他的DBD包
MS --- master --- 如果MS位置1,则代表发送该数据包的设备为主设备
序列号 --- 1.用来表示数据包的顺序;2.用来进行隐型确认的
LSA头部 --- LSA的摘要信息
LSR包 --- 基于DBD包请求未知的LSA
链路状态类型,链路状态ID,通告路由器 --- LSA的三元组 --- 这三个参数可以唯一的标识出一条LSA
LSU包 --- 真正携带LSA的数据包
LSACK包 --- 确认包
网络类型 --- 依据数据链路层所使用的协议类型来进行划分
MA网络 --- Muti-Access --- 多点接入网络
BMA --- 支持广播的多节点接入网络
NBMA --- 不支持广播的多节点接入网络
P2P --- 点到点的网络
以太网:需要通过MAC地址进行物理寻址 --- 主要是因为利用以太网建立的二层网络中可以包含多个(两个或两个以上)的接口,每个以太网接口之间都可以通过交互以太网帧的形式进行二层通信 --- BMA
如果一个网络中只能存在两个节点,则不需要MAC地址也能正常通信,这样的网络我们称为P2P网络
T1 --- 1.544Mbps
E1 --- 2.048Mbps
频分 --- 所谓频分就是在同一种介质上利用不同频段同时发送信号而且互不干扰;实现数据的并行发送
OSPF接口的网络类型 --- 指OSPF在不同网络环境下不同的工作方式
[R1]interface serial 4/0/0 --- 进入串口
[R1-Serial4/0/0]ip address 12.0.0.1 24 --- 给串口配置IP地址
| 网络类型 | OSPF接口的网络类型(OSPF的工作方式) |
| BMA(以太网) | Broadcast,需要进行DR和BDR的选举,hello时间为10S,死亡时间为40S,可以建立多个邻居关系 |
| P2P(HDLC,PPP) | P2P,不需要进行DR和BDR的选举,hello时间为10S,死亡时间为40S,只能建立一个邻居关系 |
| 环回接口 | P2P(只是华为写作P2P,实际无意义),无法建立邻居关系,不发送数据包;按照主机路由学习(注意:可以通过将接口的网络类型修改为broadcast来还原真实配置网段掩码) |
| NBMA(帧中继) | NBMA,需要进行DR和BDR的选举,hello时间为30S,死亡时间为120S,可以建立多个邻居关系,需要手工指定邻居关系 |
| P2MP,不需要进行DR和BDR的选举,hello时间为30S,死亡时间为120S,可以建立多个邻居关系 |
[R1]display ospf interface GigabitEthernet 0/0/0 --- 查看OSPF接口的网络类型
[R3-LoopBack0]ospf network-type ? --- 查看环回接口可以修改为什么类型
broadcast Specify OSPF broadcast network
nbmaSpecify OSPF NBMA network
p2mpSpecify OSPF point-to-multipoint network
p2p Specify OSPF point-to-point network
这里的状态说明是DR/BDR选举过程中等待的状态,最长默认40S
注意:在NBMA的网络环境,因为不支持广播和组播,所以,无法使用组播的hello包建立邻居关系,只能通过手工指定单播邻居去建邻
[R6-ospf-1-area-0.0.0.0]peer 6.6.6.6 --- 进行手工指定单播邻居
Attempt --- 尝试状态 --- 在NBMA网络环境中,使用单播邻居进行建邻,需要双方都指定,如果一方指定后,则将进入该状态等待对端指定
OSPF的不规则区域
OSPF的区域划分要求:
1.区域之间必须存在ABR设备
2.区域划分必须按照星型拓扑进行划分
1.远离骨干的非骨干区域
2.不连续骨干
1.使用虚链路解决不规则区域问题 --- 虚链路永远属于区域0
[R5-ospf-1-area-0.0.0.1]vlink-peer 6.6.6.6(为对端的router-id) --- 配置虚链路 --- 注意,虚链路的配置两边都要配
虚链路的邻居之间使用单播的方式维持邻居关系并进行保活
虚链路的局限性:1.会存在周期性的单播报文穿越中间区域,造成穿越区域资源浪费
2.虚链路只能跨越一个区域
2.多进程双向重发布
重发布:不同路由协议之间因为运行的规则,使用的算法都各不相同,包括不同进程之间,都会存在信息隔离;通过重发布可以将一种协议按照另外一种协议的规则发布出去,也可以将一个进程的信息发布到另一个进程中去
R4身上启动了两个OSPF进程,相当于连接了两个不同的网络,一个是单区域OSPF网络,还有一个是多区域OSPF网络;如果在R4身上做了重发布,则这种情况下,R4我们称为ASBR设备(自治系统边界路由器)
[R5-ospf-1]import-route ospf 2 --- 在ASBR设备中配置重发布
O_ASE代表是从其他网络发布进来的域外路由信息