OSPF:开放式最短路径优先协议
RIP/ospf 都属于IGP的协议
IGP/BGP
O开放式指的是:公有,也就是大家都可以用
S应该是SHORTEST
P是PATH
F为FIRST
无类别链路状态路由协议,IGP路由协议
无类别指的携带掩码 IGP就理解成企业内部使用
和rip不同的点是链路状态(距离矢量)
1.Rip是把自己路由直接给linju
OSPF是把周边所有连接信息发给邻居(我的前后左右是谁,我是谁)
最后就收到所有人的拼图,从而知道了整个网络
更新量非常大,因为每个人都要发自己的周边环境
支持等开销负载均衡,基于组播进行更新-224.0.0.5-224.0.0.6
支持触发更新,每30min一次周期更新,其实我有hello,有确认
不需要周期更新了,但我们需要一个兜底,30min更新一下
需要结构化部署----区域划分规则,良好地址规划
为什么需要区域划分,正是因为更新量太大,我们就把区域划分成一块一块
这样一来,在内部更新量会变小,而区域之间互联的那个路由器负责把第一个
区域内拓扑信息计算出的路由发送给另一个网段
(区域之内传拓扑,区域之外传路由)
OSPF数据包类型(rip只有一个更新包,没有确认包,没有hello包)
- Hello包(用于邻居的发现,关系的建立,周期的保活)
Deadtime是hello时间的4倍,hello是10S
Rip对端是谁不重要,但ospf必须知道邻居是谁才能画,
这样一来,每个邻居b必须有一个名字标识自己,全网唯一
这个名字对于设备来说叫做router id
- DBD(数据库描述包)database description
Ospf最怕什么,更新量太大,当两个路由器刚开始发送hello建立邻居关系
以后,不是直接发自身拓扑(拓扑保存在数据库里),太大(有可能有重复),而是将拓扑做成一个目录给对方,
让对方先看看,有一些你有的,有一些你没有的
- LSR (链路状态请求)R request 请求 LS link State request
在查看完对端邻居DBD后,基于本地未知的LSA信息查询。
请求我自身没有的拓扑
- LSU (链路状态更新)U UPDATE
用于携带LSA信息
- LSack (链路状态确认)
用于确认接收到对端信息
LINK STATE AD
LSA—链路状态通告---具体的路由或者拓扑信息
2.OSPF的状态机---OSPF路由间的邻居关系状态
(男女刚开始不认识,一个状态)
(各种机缘巧合,认识了,这是一个状态)
(两个人认识了,看对眼了,一个状态)
(暧昧期,一个状态)
(表白了,一个状态,情侣关系)
(有孩子了,结婚吧,一个状态)
(结婚了七年之痒,离婚也是一种关系)
两个人关系一直在变化,不同关系就是不同状态机
Two-way state 只是认识,每天你都会认识新的人,但最终你只能和一个人或者2个人走在一起,我们虽然建立了邻居关系,但我们是否可以继续发展,要看是否看对眼,看不对眼,只能永远是邻居,也就是two-way
现在进入了一个exstart 预启动,这个是邻接关系,就关系已经非常好了,不局限邻居了
现在看我们交换DBD包了
他两对比的内容是routerid,就是数字内容,谁大,谁先发
到了exchange阶段,会把LSDB(也就是链路状态数据库)贡献,但数据库太大了,为了防止同时发出拥塞网络,那么最开始设计者就设计了先后顺序,为了避免拥塞
到了exchange截断,是真的互换目录了,收到目录是不是要确认
确认
LSACK确认,将自己没有的进行请求,对方将你的请秋给你
最开始DOWN 一旦本地发出hello,进入下一个状态机
INIT初始化,一旦接收到的hello包中,存在本地RID(A收到B的hello,B的hello包
中有A的名字)
2way 双向通讯,邻居关系建立的标志
条件匹配:在点对点的网络类型直接进入下一个状态机,在MA网络中,将进行
DR/BDR选举;所有非DR/BDR设备不能进入下一个状态机
如果成功匹配:
Exstart预启动,使用不携带数据库目录信息的DBD包进行主从关系选举
RID大的为主,优先进下一个状态机
Exchange 准交换 使用携带具体数据信息的DBD包进行目录交换,需要ACK确认
Loading加载 在查询完对端邻居的DBD后,使用LSR查询本地未知LSA信息,
对端使用LSU来进行LSR回复,本地需要使用ACK确认收到的LSU
Full 转发 邻接关系建立的标志
3.OSPF工作过程
启动配置完成后,本地组播224.0.0.5发送hello包;
Hello包中将携带本地的RID值,以及本地已知所有邻居RID值
若接收到来自对端的hello包中,存在本端的RID,那么久视为双方
认识,邻居关系建立(2way),生成邻居表
在邻居关系建立后,条件匹配,匹配失败,将停留于邻居关系,仅
Hello包保活即可
若条件匹配成功,可以建立邻接关系
先使用不携带数据库信息的DBD包进行主从关系选举,RID数值大为主
优先共享数据库目录,之后本地再基于对端LSDB来查找到本地未知LSA信息,
之后使用LSR/LSU/LSACK来获取未知LSA信息,最终成数据库表(LSDB---链路
状态数据库)
之后本地启用SPF算法,基于本地LSDB生成有向图,再计算出最短路劲树。
再基于树形结构(树形结构没有环路),算出本地为起点到达所有未知网段最短路径,加载于本地路由表
收敛完成后, hello包周期保活,每30min邻接关系周期更新一次LSA信息
区域划分规则:
连接两个区域的路由叫做边界路由(ABR)
- 星型拓扑结构 骨干区域为区域0,大于0为非骨干区域
- 所有的非骨干区域必须直接连接到骨干区域
4.OSPF的基础配置
[R1]OSPF 1 router-id x.x.x.x
【R1-OSPF】area 0
【r1-ospf-1-area-0.0.0.0】network 12.1.1.0 0.0.0.255
Dis ospf routing (可以看到学到的和自己直连的所有网段)
网络类型
点到点:在一个网段内仅支持存在两个节点
串口 1.544M=1544k
最早人类发明的网线,里面只有两根铜丝和电话线差不多,带宽只有64k
64/8 * 85% = 6k,太低,为了提高网线,加头数量,从64k到1544k也是一个大的突破
这个线路又稳又安全,因为这么多铜丝只传递这点数据,没干扰
其次这个设备是点到点,只允许两个人,其他人无法加入,保证安全
MA:多路访问----在一个网段内,存在的节点数量不限制
路由器是以太网,允许加一个交换机,交换机又能连接路由器
就是多路访问
OSPF协议在点到点网络中,所有的邻居关系将直接建立为邻接关系
这个网络只有你们两个,不邻接没办法了
重复分享
1和2,3,4,5分享,2和1,3,4,5
Rip也一样,互相分享,但是rip是水平分割
但ospf不能应用水平分割,因为ospf需要对比DBD,就要把我的拓扑发给你
你的发给我,如果从此口进 不能从此口出,就无法完成对比
那如果规避重复更新呢
五个路由器,选一个老大,叫做DR
DR和四个小弟关系邻接
四个小弟关系邻居
在MA网段中,若所有设备间均为邻接关系,将可能出现大量的重复更新
故进行DR(指定)/BDR(备份指定)选举,一个老大一个老二,老二等上位
所有非DR/BDR是邻居关系
Other只有跟other之间才是邻居,和DR和BDR都是邻接
串口没有DR和BDR,点对点不进行选举
第一个左边图第四个,只有四个路由器才能有邻居关系,两个非DR和BDR
右边图,DR和BDR只是基于网段,并不是路由器本身是DR和BDR
选举规则:
- 先比较参选接口优先级,默认为1,取值范围0-255,越大越好;
- 若参选接口优先级相同,比较参选设备的routerid,数字大优
- DR和BDR非抢占,故所需要的网段内部重新选举,需要重启该网段内所有参选设备
OSPF进程,若参选接口优先级为0,将放弃选举;一个网段内至少应该存在一台DR
为什么非抢占,如果添加一个路由器进拓扑,路由器优先级相对较高,这样就会发生抢占,重新收敛,时间40S,对于上网用户不友好
该完优先级,再确定网络可以终端40s,对ospf进行进程重启
设备routerid选举规则
在配置了routerid的情况下,就按配置走,在没有配置routerid的情况下,
如果存在LOOPBACK接口,那么我们的routerid就是loopback接口地址
如果不存在loopback,就从我们设备接口ip中,找到一个最大值,称为我们的routerid(不考虑接口up/down状态)
因为我们的配置顺序会影响设备的routerid选举,咱们第一个配置的接口地址时,routerid已经进入了选举机制,所以会以第一个接口地址当做routerid,我们即便配置了loopback接口地址,也不会生效,因为routerid选举是非抢占的,此时,可以先将接口ip删除掉,这样一来,routerid会重新选举,选中我们的loopback接口地址
Info: Router ID has been modified, please reset the relative protocols manually to update the Router ID.
手动设置routerid后,我们会收到一个信息,让修改相关协议中的routerid
想让1.1.1.1称为我们的routerid,有两个办法,第一删除最开始配置的接口地址
第二手动进行设置
Router id x.x.x.x
Ospf 1 router id 1.1.1.1
需要重置我们ospf的进行
Reset ospf process
关于设备全局的routerid与ospf的routerid
1 当ospf未配置routerid的时候,我们routerid是设备的routerid
2.当我们ospf配置了routerid的时候,我们的routerid就是自己配置的
注意:ospf的routerid可以和设备的routerid不相同
假如在设备手动设置routerid之前,我们的ospf协议已经运行,并且默认无配置routerid,
此时,手动修改后,需要去重启我们的ospf进程,才可以
但是一般情况下,我们的ospf约定俗成,并且较为好记忆的方式,就是把routeri配置成
1.1.1.1这类的换回地址,但是不强制
记住!!!ospf的routerid一定不能重叠
如果我们R4和R3的routerid一致,在R2上可以显示出两个邻居的routerid都为3.3.3.3
但是由于routerid一致,导致r2会将R4和R3当成一个邻居,但是LSA不一致,造成链路状态数据库发送错误,无法得到正确的R4的路由
交换机vlan
Vlan(虚拟局域网)
Vlan可以隔离广播域
Vlan分为两条链路
交换机连接主机的链路,我们称之为access链路,也就是接入链路
交换机连接交换机之间的链路,我们称之为trunk链路,也叫干道链路
交换机和pc相连的端口 设置成access模式
并且该端口下的pc属于vlan几,我们就需要将该端口加入到vlan几
交换机默认所有端口加入到vlan1
同vlan下的终端只要跨越交换机,想进行数据传输,那么我们就需要
对交换机与交换机相连的端口进行一个trunk配置
Port link-type trunk
Port trunk allow-pass vlan xx xxx 或all
如果没有特殊要求,可以将vlan后面允许通过的都设置成all
Vlan batch 20 to 30
10个vlan 20 21 22 23 24。。。。30
Vlan batch 20 30
Port link-type access
Port default vlan ?