ospf 优先级 10
引入外部路由 150
ospf组播地址:
224.0.0.5
224.0.0.6 DR/BDR用
ospf协议号 89
broadcast/NBMA网络需要选DR/BDR(不抢占)
OSPF(Open Shortest Path First)开放式最短路径优先
OSPF的工作过程
1:邻居建立
2:同步链路状态数据库
3:计算最优路路由
hello报文的作用
邻居发现:自动发现邻居路由器
邻居建立:完成hello报文中的参数协商
邻居保持:通过keepalive机制,检测邻居运行状态
broadcast/NBMA的状态下,子网掩码不一致不能ospf不能够连接
router id :用于在自治系统中唯一标识一台运行ospf的路由器,每台运行的ospf的路由器都有一个router id
down:这是邻居的初始状态,标识没有从邻居收到任何信息。
init:在此状态下,路由器已经从邻居收到了hello报文,但自己的router id不在所收到的hello报文的邻居列表中,标识尚未与邻居建立双向的通信关系。
2-way:在此状态下,路由器发现自己的router id存在于收到的hello报文的邻居列表中,已确认可以双向通信。
邻居建立过程如下:
因为邻居是未知的,所以hello报文的目的地址不是某个特定的单播地址,邻居从无到有,ospf采用组播的形式发送hello报文,(224.0.0.5),对于不支持组播的网络ospf路由器是如何发现邻居呢?
对于不支持组播的网络可以通过手动配置实现邻居发现与维护
接下来学习ospf如何实现链路状态数据库的同步。
链路状态信息主要包括:
链路的类型;
接口IP地址及掩码;
链路上所连接的邻居路由器;
链路的带宽(开销)。
下面介绍ospf是如何定义多种网络的
ospf的链路状态信息中的开销值是如何度量的呢?
ospf在计算接口的cost值时,cost值=参考带宽/实际带宽,默认参考带宽为100M,当计算结果有小数位时,只取整数位;结果小于1时,cost取1;
那么ospf路由器怎么表达链路状态信息并完成同步呢?
ospf协议号:89
version:对于当前所使用的的ospfv2,该字段的值是2.
type:ospf报文类型
packet length:标识整个ospf报文的长度,单位是字节
router id:标识生成此报文的路由器的router id。
area id:标识此报文需要被通告到的区域。
checksum:校验字段,其校验的范围是整个ospf报文,包括ospf报文头部。
auth type:为0时标识不认证,为1时表示简单的明文密码认证,为2时表示加密(MD5)认证。
authentication:认证所需的信息,该字段的内容随autype的值不同而不同。
ospf的报文头部定义了ospf路由器的通信的标准与规则,基于这个标准ospf报文需要实现什么功能呢?
type | 报文名称 | 报文功能 |
1 | hello | 发现和维护邻居关系 |
2 | Database Description | 交互链路状态数据库摘要 |
3 | Link State Request | 请求特定的链路状态信息 |
4 | Link State Update | 发送详细的链路状态信息 |
5 | Link State Ack | 发送确认报文 |
五种报文交互的过程。
ExStart:邻居状态变成此状态后,路由器开始向邻居发送DD报文,master/slave关系是再次状态下形成的,初始DD序列号也是在此状态下确定的,在此状态下发送DD报文不包含链路状态描述
Exchange:在此状态下,路由器与邻居之间相互发送LSR报文,LSU报文,LSAck报文,
full:LSDB同步过程完成,路由器与邻居之间形成了完全的邻接关系。
从建立邻居关系到同步LSDB的过程较为复杂,错误的配置或设备链路故障都会导致无法完成LSDB同步,为了快速排障,最关键的是要理解不同状态之间切换的触发原因。
●这是形成邻居关系的过程和相关邻居状态的变换过程。
o
Down :这是邻居的初始状态,表示没有从邻居收到任何信息。在NBMA网络上,此
状态下仍然可以向静态配置的邻居发送Hello报文,发送间隔为PolInterval ,通常和
Router DeadInterval间隔相同。
o Attempt :此状态只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经
周期性的向邻居发送报文,发送间隔为HelloInterval。如果Router DeadInterval间
隔内未收到邻居的Hello报文,则转为Down状态。
Init :在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的
Hell报文的邻居列表中,示尚未与邻居建立双向通信关系。在此状态下的邻居要
被包含在自己所发送的Hello报文的邻居列表中。
o 2-Way Received :此事件表示路由器发现与邻居的双向通信已经开始(发现自己在
邻居发送的Hello报文的邻居列表中)。Init状态 下产生此事件之后,如果需要和邻居
建立邻接关系则进入ExStart状态,开始数据库同步过程,如果不能与邻居建立邻接
关系则进入2-Way。
o 2-Way :在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是建立
邻接关系以前的最高级状态。
1-Way Received :此事件表示路由器发现自己没有在邻居发送Hello报文的邻居列
中,通常是由于对端邻居重启造成的。
ExStart :这是形成邻接关系的第一个步骤 ,邻居状态变成此状态以后,路由器开始
向邻居发送DD报文。主从关系是在此状态下形成的;初始DD序列号是在此状态下决
定的。在此状态下发送的DD报文不包含链路状态描述。
Exchange :此状态下路由器相互发送包含链路状态信息摘要的DD报文,描述本地
LSDB的内容。
o
Loading :相互发送LS Request报文请求LSA ,发送LS Update通告LSA。
o Full :两台路由器的L SDB已经同步。
LSA ( Link State Advertisement )是路由器之间链路状态信息的载体。LSA是L .SDB的最
小组成单位,也就是说L SDB由一条l SA构成的。
所有的LSA都拥有相同的头部,关键段的含义如下:
。LS age :齡段表示LSA已经生存的时间,单位是秒。
。LS type :此序段标识了LSA的格式和功能。常用的L SA类型有五种。
。Link State ID :序段是该L SA所描述的那部分链路的标识,例如Router ID等。
。Advertising Router :此字段是产生此L .SA的路由器的Router ID。
。LS sequence number :此字段用于检测旧的和重复的LSA。
LS type , Link State ID和Advertising Router的组合共同标识一条SA。
LSDB中除了自己生成的LSA,另一部分是从邻居路由器接收的。邻居路由器之间相互更新
LSA必然需要一一个“通道”。
ospf基本工作原理
DR(Designated Router)指定路由器,其负责在MA网络建立和维护邻接关系并负责LSA的同步,
DR与其他所有路由器形成邻接关系洴交换链路状态信息,其他路由器之间不直接交换链路状态信息。这样就大大减少了MA网络中的邻接关系数量吸交换链路状态信息消耗的资源。
DR- -旦出现故障,其与其他路由器之间的邻接关系将全部失效, 链路状态数据库也无法同步。此时就需要重新选举DR ,再与非DR路由器建立邻接关系,完成L .SA的同步。为了规避单故障风险,通过选举备份指定路由器BDR ,在DR失效时快速接管DR的工作。
邻居—>邻接