RIP在大型网络中部署面临的挑战:
1.网络规模扩大:企业新业务层出不穷,且业务呈现大集中趋势,使得网络规模不断扩大
2.网络可靠性要求提供:各种应用程序对网络可靠性要求越来越高,网络发生故障后,需要在更短的时间内恢复正常
3.网络异构化趋势加剧:在日常的运营维护中,硬件设备不断升级或更新,不同设备之间性能差异较大,设备间互连链路带宽也存在一定的差异。
需要一种各厂商均支持的开放路由协议
RIP在大型网络中部署所面临的问题:
RIP特性: 带来的问题:
逐跳收敛 收敛慢,故障恢复时间长
传闻性路由更新机制 缺少对全局网络拓扑的了解(完全信任所收到的路由)
最多有效跳数为15 环形组网中,使远端路由不可达
以跳数为度量 存在选择次优路径的风险
如何解决:
收敛慢,故障恢复时间长 收到更新->计算路由->发送更新” 改为“收到更新->发送更新->计算路由
缺少对全局网络拓扑的了解 路由器基于拓扑信息,独立计算路由
最多有效跳数为15 不限定跳数
存在选择次优路径的风险 将链路带宽作为选路参考值
串口带宽:2.048M
解决最大跳数为15跳:
跨16跳转发:1.路由重发布:默认引入之后路由跳数为1
2.聚合:聚合之后的路由取原路由中跳数最小值作为聚合后路由的跳数
动态路由协议:
距离矢量(单位:跳数):RIP :基于UDP,端口号520
BGP:基于TCP,端口号179
链路状态:OSPF:基于IP,协议号89
ISIS:集成
链路状态:IP地址及掩码,带宽,邻居,网络利用率,延迟……
OSPF:链路状态路由协议:
1.路由信息传递与路由计算分离:不直接传递各路由器的路由表,而传递链路状态信息,各路由器基于链路状态信息独立计算路由
2.基于SPF算法:所有路由器各自维护一个链路状态数据库。邻居路由器间先同步链路状态数据库,再各自基于SPF(Shortest Path First)算法计算最优路由,从而提高收敛速度
3.以“累计链路开销”作为选路参考值:在度量方式上,OSPF将链路带宽作为选路时的参考依据。 “累计带宽”是一种要比“累积跳数”更科学的计算方式
OSPF的工作过程:
1:通过hello报文建立邻居
2:交互LSA,同步LSDB
3:SPF算法,计算最优路由,加表
Router ID:用于在自治系统中唯一标识一台运行OSPF的路由器,每台运行OSPF的路由器都有一个Router ID
Router ID是一个32位的无符号整数,其格式和IP地址的格式是一样的
Router ID选举规则:
1.手工指定(通常建议手动配置),以大为优
2.如果没有手动配置Router ID,则从Loopback接口中最大的IP地址作为Router ID
3.如果没有配置Loopback接口,则从物理接口中最大的IP地址作为Router ID
邻居关系建立必要条件:
hello报文的间隔/死亡时间一致;端口处于UP状态;认证要通过;邻居在同一网段;router-id不能冲突;区域id要一致
邻居关系建立失败原因:
一般报文错误:
收到自己的报文;错误的报文;错误的版本号;错误的校验和;错误的区域号;报文在 Unnumbered 接口丢弃; 错误的虚连接;错误的认证类型; 错误的认证关键字;报文太短
报文长度大于ip 长度; 发送错误; 接口down;无法识别的邻居; 错误的网段 ;外部选项不匹配;路由器id冲突
HELLO报文错误:
网络掩码不匹配;hello定时器间隔不匹配;dead定时器间隔不匹配 0 : 虚连接的邻居无法识别;NBMA的邻居无法识别;非法的源地址
DD 报文错误:
邻居状态太低;无法识别的LSA类型 ; MTU选项不匹配
LS ACK报文错误:
邻居状态太低;无法识别的LSA类型
LS REQ报文错误:
邻居状态太低;空的请求列表;错误的请求
LS UPD报文错误:
邻居状态太低;更新的自己生成的LSA; LSA的校验和错;收到较旧的LSA; 无法识别的LSA类型
Opaque错误:
超出FLOOD范围;10-超出FLOOD范围;超出FLOOD范围;无法识别的TLV类型
重传超次错误:
DD报文重传超次次数; Update报文重传超次次数; Request报文重传超次次数
配置错误:
Tunnel花费错误
hello报文中E位:代表路由器支持计算5类LSA(支持外部路由)
发现并建立邻居 - Hello报文(组播发送HELLO包)
Hello报文的作用:
1.邻居发现:自动发现邻居路由器(被)
2.邻居建立:完成Hello报文中的参数协商,建立邻居关系
3.邻居保持:通过Keepalive机制(周期性10s/30s的Hello报文),检测邻居运行状态
4.在MA(NBMA(非广播多路访问)/BMA(广播多路访问))网络中选举DR/BDR
hello报文中携带:hello报文生存时间;死亡时间;邻居列表;router-id
hello报文重传时间:5s 重传延时:1s
hello报文时间间隔:
P2P/MA:10s 死亡时间:410
P2MP/NBMA:30s 死亡时间:430
接口下:Ospf enble area 0 在接口内开启ospf功能
接口状态:1.DR
2.BDR
3.DR other
4.P2P:只在P2P/P2MP网络中
链路状态信息主要包括:
1.链路的类型:P2P,……
2.接口IP地址及掩码;
3.链路上所连接的邻居路由器;
4.链路的带宽(开销)
状态机:
1.Down:邻居的初始状态,表示没有从邻居收到任何信息
2.Attempt:发送hello给邻居,没有收到邻居的hello报文;120s后没收到回到down(NBMA网络独有)
3.Init:路由器收到邻居Hello报文,但是自己的Router ID不在所收到的Hello报文的邻居列表中,表示尚未与邻居建立双向通信关系(自己的router-id不在活跃的邻居列表中)
4.2-Way:路由器发现自己的Router ID存在于收到的Hello报文的邻居列表中,已确认可以双向通信(自己的router-id在活跃的邻居列表中),此状态下选举DR/BDR
5.ExStart:路由器开始向邻居发送DD报文。Master/Slave关系是在此状态下形成的,初始DD序列号也是在此状态下确定的。在此状态下发送的DD报文不包含链路状态描述(LSA摘要)
6.Exchange:路由器与邻居之间相互发送包含链路状态信息摘要的DD报文(从路由器先进入此状态并发送自己的LSA摘要)
7.Loading:路由器与邻居之间相互发送LSR报文、LSU报文、LSAck报文
8.Full:LSDB同步过程完成,路由器与邻居之间形成了完全的邻接关系
邻居建立过程:
RTA和RTB的Router ID分别为1.1.1.1和2.2.2.2。当RTA启动OSPF后,RTA会发送第一个Hello报文。此报文中邻居列表为空,此时状态为Down,RTB收到RTA的这个Hello报文,状态置为Init
RTB发送Hello报文,此报文中邻居列表为空,RTA收到RTB的Hello报文,状态置为Init
RTB向RTA发送邻居列表为1.1.1.1的Hello报文,RTA在收到的Hello报文邻居列表中发现自己的Router ID,状态置为2-way
RTA向RTB发送邻居列表为2.2.2.2的Hello报文,RTB在收到的Hello报文邻居列表中发现自己的Router ID,状态置为2-way
2-way表示邻居关系的建立,邻接关系的开始
因为邻居都是未知的,所以Hello报文的目的IP地址不是某个特定的单播地址。邻居从无到有,OSPF采用组播的形式发送Hello报文(目的地址224.0.0.5)
224.0.0.5:监听所有运行了OSPF的路由器
224.0.0.6:监听DR/BDR
手动建立邻居 :对于不支持组播的网络可以通过手动配置实现邻居的发现与维护
OSPF支持通过单播方式建立邻居关系
网络类型:
原因:为了支持二层功能
类型:1.P2P网络:仅两台路由互连;支持广播、组播
2.P2MP网络:多个点到点网络的集合;支持广播、组播
3.广播型网络:两台或两台以上的路由器通过共享介质互连;支持广播、组播
4.NBMA网络:两台或两台以上路由器通过VC互连;不支持广播、组播
VC:虚电路 (需手工指定)
1.交换VC
2.永久VC
OSPF的度量方式:
默认参考带宽为100M
实际带宽G口1000M,E口100M
当计算结果有小数位时,只取整数位;结果小于1时,cost取1
修改开销的方式:
1.手动修改接口的开销:
接口视图下:ospf cost 开销值
2.修改参考带宽值:全局修改
协议视图下:bandwidth-reference 参考带宽值(越大越精准)
注意:如果一台路由器上既在接口上修改了开销,也修改了参考带宽值,接口开销生效
OSPF报文类型:
1.HELLO报文:用来发现、建立并维护邻居关系
2.DD报文:协商主从;交互LSA摘要(LSA的头部信息,可以唯一的确定一条)
3.LSR报文:用于请求自身缺少的LSA,LSR只携带摘要
4.LSU报文:用于回应对方所缺少的LSA,LSU携带是完整的LSA(定时更新/触发更新都会发送LSU,并具有撤销路由的作用)
5.LSACK报文:用于对收到邻居发送的LSA确定响应,表示已经收到LSU,LSACK携带的是收到的LSA的摘要,保证同步过程的可靠性
多种报文的存在可保证LSDB同步的可靠性和防止收到重复的LSA
协商主从:保证DD报文交互的可靠性
重传时间:5s 重传延时:1s
必须对接收的LSA(LSU报文)进行确认:
隐式确认:LSU报文
显示确认:LSACK报文
DD、LSR、LSU、LSACK中包含:
DD报文:LSA头部信息、LS Type、LS ID 、Advertising Router、LS sequence number、LS checksum
LSR报文:LS Type、LS ID 、Advertising Router
LSU报文:完整的LSA信息
LSACK报文:LSA头部信息、LS Type、LS ID 、Advertising Router、LS sequence number、LS checksum
OSPF报文的功能需求
功能 实现分析
发现邻居与保持 Hello机制即可实现
LSA同步 双方互相发送LSA,完成同步;同时同步速度更快,占用资源更少
可靠性 确保LSA同步过程的可靠性
在OSPF Packet部分,所有的OSPF报文均使用相同的OSPF报文头部:
• Version :对于当前所使用的OSPFv2,该字段的值为2。
• Type:OSPF报文类型。
Type=1为Hello报文
Type=2为数据库描述报文(DD)
Type=3为链路状态请求报文(LSR)
Type=4为链路状态更新报文(LSU)
Type=5为链路状态确认报文(LSAck)
• Packet length:表示整个OSPF报文的长度,单位是字节。
• Router ID:表示生成此报文的路由器的Router ID。
• Area ID:表示此报文需要被通告到的区域。
• Checksum:校验字段,其校验的范围是整个OSPF报文,包括OSPF报文头部。
• Auth Type:为0时表示不认证;为1时表示简单的明文密码认证;为2时表示加密(MD5)认证。
• Authentication:认证所需的信息。该字段的内容随AuType的值不同而不同。
OSPFv1:实验版本
OSPFv2:支持IPv4
OSPFv3:支持IPv6
OSPF认证:
认证类型:1.明文认证(简单认证),2.密文认证(MD5认证),3.不认证
默认不认证
认证方式:
1.接口认证:
在接口上配置,与该接口相连的接口上也必须配置认证
2.区域认证:
在区域里进行配置,一个区域里有一台配置了区域认证,该区域的所有路由器都得配置区域认证
注意:如果一台路由器上既配置了接口认证又配置了区域认证,接口认证生效
只要两端认证类型和认证信息一样,认证方式不一样也能建立邻居
LSDB同步过程如下:
1. RTA和RTB的Router ID分别为1.1.1.1和2.2.2.2并且二者已建立了邻居关系。当RTA的邻居状态变为ExStart后,RTA会发送第一个DD报文。此报文中,DD序列号被随机设置为X
I(起始位)设置为1,表示这是第一个DD报文,0表示不是第一个DD报文;
M(后继位)设置为1,表示后续还有DD报文要发送,为0表示后面没有DD报文;
MS(主从位)设置为1,表示RTA宣告自己为Master,为0表示自己为从。
2.当RTB的邻居状态变为ExStart后,RTB会发送第一个DD报文。此报文中,DD序列号被随机设置为Y(I=1,M=1,MS=1,含义同上)。由于RTB的Router ID较大,所以RTB将成为真正的Master。收到此报文后,RTA会产生一个Negotiation-Done事件,并将邻居状态从ExStart变为Exchange
3. RTA开始向RTB发送LSR报文,请求那些在Exchange状态下通过DD报文发现的、并且在本地LSDB中没有的链路状态信息。
4.RTB向RTA发送LSU报文,LSU报文中包含了那些被请求的链路状态的详细信息。RTA在完成LSU报文的接收之后,会将邻居状态从Loading变为Full。
5. RTA向RTB发送LSAck报文,作为对LSU报文的确认。RTB收到LSAck报文后,双方便建立起了完全的邻接关系。
为什么要选举主从关系:为了双方在描述LSDB的过程中可靠
为什么双方在描述LSDB的过程中要保证可靠:是为了保障后期LSDB同步的可靠
LSA头部:
LSA是OSPF链路状态信息的载体,LSA是LSDB的最小组成单位,也就是说LSDB由一条条LSA构成的
所有的LSA都拥有相同的头部,关键字段的含义如下:
LS age:此字段表示LSA已经生存的时间,单位是秒。 可以标识LSA的新旧,越小越新。
LSA老化时间3600s
更新时间1800s;只有路由器自己才能更新自己的LSA
LS type:标识了LSA的类型。1类和2类域内,3类域间,4类和5类域外,7类特殊区域。
Link State ID:链路状态标识id,该LSA所描述的那部分链路标识,例如Router ID等。用于区分同一路由器产生同一类型的不同LSA。唯一标识一条LSA
Advertising Router:是产生此LSA的路由器的Router ID。
LS sequence number:LSA序列号,数值越大越新,用于检测旧的和重复的LSA。
LS checksum:校验和,判断LSA的新旧。
Length:整个LSA的长度。
LSA新旧程度:1.序列号,越大越新
2.校验和时,越大越新
3.age,越小越小;相差900s内不更新(为了防止LSA重复)
周期更新:1800s 触发更新:收到新的LSA泛洪给其他邻居
LS type,Link State ID和Advertising Router的组合共同标识一条LSA。
LSDB中除了自己生成的LSA,另一部分是从邻居路由器接收的。邻居路由器之间相互更新LSA必然需要一个“通道”
MA网络中的问题:
1. n×(n−1)/2个邻接关系,管理复杂
2. 重复的LSA泛洪,造成资源浪费。
解决:选举DR/BDR
DR/BDR作用:DR负责在MA网络中建立和维护邻接关系,并负责LSA的同步
1.减少邻接关系建立数量
2.降低OSPF协议流量/报文数量
DR与BDR选举:在收到对方的hello报文中没有DR/BDR则会触发选举,40s(等待接收所有路由器的hello报文)
选举规则:DR/BDR的选举是基于接口的
1.接口的优先级越大越优先。取值范围(0-255),优先级为0不参与选举,默认接口优先级为1
2.接口的优先级相等时,Router ID越大越优先
在实际选举中先选BDR,再选DR(保证网络的稳定性)