文章目录
DD报文(Database Description Packet)
LSR报文(Link State Request Packet)
LSU报文(Link State Update Packet)
Router-LSA(link state advertisement链路状态通告)
前言
学习目标:
1.描述动态路由协议的优势和它的分类
2.描述OSPF的基本概念和适用的组网场景
3.阐明OSPF协议的工作原理
4.了解OSPF协议的基础配置
作用:静态路由只适用于小型网络,设备的增加会导致配置量增加,链路故障时无法及时响应,发生网络变化无法自动收敛。动态路由协议用来解决以上问题。
动态路由分类
按工作范围区分:
内部网关协议IGP: ospf isis rip
外部网关协议EGP: BGP
按算法区分:
距离矢量路由协议:rip,bgp(路径优先协议):
路由器周期性泛洪自己的路由表。通过路由的交互,每台路由器都从相邻的路由器学习到路由,并加载进自己的路由表中。
对于网络中的所有路由器而言,路由器并不清楚网络拓扑,只是简单的知道要去往某个方向,距离有多远(跳数)。
链路状态路由协议: ospf isis:
与距离矢量路由协议不同,链路状态路由协议通告的是链路状态而不是路由表。运行路由状态路由协议的路由器之间首先会建立一个协议的邻居关系,然后彼此交互LSA(link state advertisement链路状态通告——LSA描述了路由器 接口的状态信息,例如接口的开销、连接的对象等)
目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version (RFC2740)。
一、OSPF概述
OSPF交互过程
1——建立协议的邻居关系,泛洪LSA(Link State Advertisement,链路状态通告)。
2——将LSAs写入LSDB(Link State DataBase链路状态数据库)中。
3——使用SPF(Shortest Path First,最短路径优先)算法进行计算。
4——最后,路由器将计算出来的优选路径,加载进自己的路由表(Routing Table)。
与距离矢量路由协议不同,链路状态路由协议通告的的是链路状态而不是路由表。运行链路状态路。
具体工作过程:
运行链路状态协议的路由器之间首先会通过hello报文建立一个协议的邻居关系,然后彼此之间开始交互LSA(Link State Advertisement,链路状态通告)包含路由器接口状态、带宽。
每台路由器都会产生LSAs,路由器将接收到的LSAs放入自己的LSDB(Link State DataBase,链路状态数据库)。路由器通过LSDB,掌握了全网的拓扑。建立邻接关系。state显示full。
使用SPF(Shortest Path First,最短路径优先)算法进行计算。每台路由器都计算出一棵以自己为根的、无环的、拥有最短路径的“树”。有了这棵“树”,路由器就已经知道了到达网络各个角落的优选路径。
最后,路由器将计算出来的优选路径,加载进自己的路由表(Routing Table)。
OSPF基本术语
Router-ID(router identical路由器标识符):用于在一个区域中标识一台路由器。
通过手动或自动配置(自动配置时首先选择look back地址大的,否则选择物理接口大的,通常把某个环回地址作为router-id)。
Area:用于标识一个ospf区域,从逻辑上将设备划为不同的组。
度量值:使用cost(开销)作为度量值,缺省为100M/s÷接口带宽。一条ospf链路的cost值是——从本路由器到目的网段出接口的开销总和。缺省带宽100可以更改。
三大表项
ospf邻居表、lsdb表、ospf路由表
ospf邻居表
Display ospf peer
ospf在传递链路状态信息之前需要通过hello报文建立邻居关系。
该表显示了路由器邻居状态,用display ospf peer查看
lsdb(链路状态数据库)表
Display ospf lsdb
该表保存自己产生的和邻居发送的lsa信息。
使用命令行display ospf lsdb查看LSDB表。
ospf路由表
Display ospf routing
包含destination、cost、next hop等指导转发信息。
使用display ospf routing查看OSPF路由表。
二:OSPF报文传递过程
报文名称 | 报文功能 |
Hello | 周期性发送,用来发现和维护OSPF邻居关系。 |
Database Description | 描述本地LSDB的摘要信息,用于两台设备进行数据库同步。 |
Link State Request | 用于向对方请求所需要的LSA。设备只有在OSPF邻居双方成功交换DD报文后才会向对方发出LSR报文。 |
Link State Update | 用于向对方发送其所需要的LSA。 |
Link State ACK | 用来对收到的LSA进行确认。 |
邻接关系的建立过程:
OSPF完成邻接关系的建立有四个步骤,建立邻居关系、协商主/从、交互LSDB信息,同步LSDB。
1、建立邻居关系,组播发送hello报文
2、协商主从/交互LSDB信息(先交互空的dd报文确定id大的为master,再交互lsa摘要信息,报文中除图中报文信息还有more,为1表示还有后续,为0则表示发送完毕)
3、同步LSDB
三、OSPF报文解析
OSPF报文头部
OSPF用IP报文直接封装协议报文,协议号为89。OSPF分为5种报文:Hello报文、DD报文、LSR报文、LSU报文和LSAck报文。
OSPF这五种报文具有相同的报文头格式,长度为24字节。
hello报文
Hello报文是最常用的一种报文,其作用为建立和维护邻接关系,周期性的在使能了OSPF的接口上发送。报文内容包括一些定时器的数值、DR、BDR以及自己已知的邻居。
DD报文(Database Description Packet)
两台路由器在邻接关系初始化时,用DD报文(Database Description Packet)来描述自己的LSDB,进行数据库的同步。报文内容包括LSDB中每一条LSA的Header(LSA的Header可以唯一标识一条LSA)。LSA Header只占一条LSA的整个数据量的一小部分,这样可以减少路由器之间的协议报文流量,对端路由器根据LSA Header就可以判断出是否已有这条LSA。在两台路由器交换DD报文的过程中,一台为Master,另一台为Slave。由Master规定起始序列号,每发送一个DD报文序列号加1,Slave方使用Master的序列号作为确认。
LSR报文(Link State Request Packet)
两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地的LSDB所缺少的和哪些LSA是已经失效的,这时需要发送LSR报文(Link State Request Packet)向对方请求所需的LSA。内容包括所需要的LSA的摘要。LSR报文格式如下图所示,其中LS type、Link State ID和Advertising Router可以唯一标识出一个LSA,当两个LSA一样时,需要根据LSA中的LS sequence number、LS checksum和LS age来判断出所需要LSA的新旧。
LSU报文(Link State Update Packet)
用来向对端Router发送其所需要的LSA或者泛洪自己更新的LSA,内容是多条LSA(全部内容)的集合。LSU报文(Link State Update Packet)在支持组播和广播的链路上是以组播形式将LSA泛洪出去。为了实现Flooding的可靠性传输,需要LSAck报文对其进行确认。对没有收到确认报文的LSA进行重传,重传的LSA是直接发送到邻居的。
常用的LSA共有5种,分别为:Router-LSA、Network-LSA、Network-summary-LSA、ASBR-summary-LSA和AS-External-LSA。
所有的LSA都有相同的报文头:
Router-LSA(link state advertisement链路状态通告)
Network-LSA、Network-summary-LSA、ASBR-summary-LSA和AS-External-LSA
暂略
四:OSPF网络类型
[R1-GigabitEthernet1/0/0] ospf network-type ?
broadcast Specify OSPF broadcast network
以太网
nbma Specify OSPF NBMA network
允许多台网络设备接入且不支持广播 典型为帧中继(Frame-Relay)
p2mp Specify OSPF point-to-multipoint network
P2MP相当于将多条P2P链路的一端进行捆绑得到的网络。
没有一种链路层协议会被缺省的认为是P2MP网络类型。该类型必须由其他网络类型手动更改。
常用做法是将非全连通的NBMA改为点到多点的网络。
p2p
Specify OSPF point-to-point network 点对点(ppp链路)
ospf两端网络类型必须相同才可以正常运行。