OSPF基本概念及单区域配置
-内部网关路由协议
OSPF内部网关路由协议:用于在单一自治系统(Autonomous System-AS)内决策路由
自治系统(AS):执行统一路由策略的一组网络设备的组合
-区域
为了适应大型的网络,OSPF在AS内划分多个区域
每个OSPF路由器只维护所有区域的完整的链路状态信息
-链路状态路由协议
OSPF是链路状态路由协议,链路状态路由协议中的路由器了解OSPF网络内的链路状态信息
链路状态路由协议中,直连的路由器之间建立邻接关系,互相“交流”链路信息,来“画”出完整的网络结构
l 为了标识链路信息是由谁发出的,用Router ID标识路由器
l 相邻路由器之间建立邻接关系,保存在邻居列表中
l 路由器学习到的链路信息,表存在链路状态数据库中
-Router ID
Router ID:是在OSPF区域内唯一标识一台路由器的IP地址
Router ID选取规则:
l 首先,路由器选取它所有loopback接口上数值最高的IP地址
l 如果没有loopback接口,就在所有物理端口中选取一个数值最高的IP地址
-链路状态路由协议中的数据库类型
邻居列表:列出每台路由器全部已经建立邻接关系的邻居路由器
链路状态数据库(LSDB):列出网络中其他路由器的信息,由此显示全网的网络拓扑
路由表:列出通过SPF算法计算出的到达每个相连网络的最佳路径
-链路状态生成过程
建立邻接关系 -(学习链路状态信息)- 链路状态数据库 - (Djkstra算法)- 最短路径树 – 路由表
-建立邻接关系的过程
Init:接收到对方的HELLO报文,转换为初始状态
2-way:在对方发来的HELLO报文中看到自己的Router ID,转换为双向状态
ExStart:确定数据库描述报文的序列号,转换为信息交换初始状态 - DBD(Seq)
ExChange:发送数据库描述报文,转换为信息交换状态 - DBD
ExChange:发送链路状态信息请求报文,获取未知的链路状态信息 – LSR
Loading:发送链路状态信息更新报文,同步链路状态数据库 – LSU
Full:知道两台路由器的链路状态数据库完全一致,形成邻接关系
-OSPF的邻接关系需满足的条件
邻居:两个路由器之间如果不能满足下列条件,则它们就不能成为邻居:
l Area-id:两个路由器必须在共同的网段上,它们的端口必须属于该网段上的同一个区,且属于同一个子网
l 验证(Authentication OSPF):同一区域路由器必须交换相同的验证密码,才能成为邻居
l Hello Interval和Dead Interval:OSPF协议需要两个邻居路由器的这些时间间隔相同,否则就不能成为邻居路由器
l Stub区域标记:两个路由器可以在Hello报文中通过协商Stub区域的标记来成为邻居
-OSPF的网络类型
路由器接口类型不同,在建立邻接关系的时候,OSPF路由器执行的操作也略有不同
网络类型 |
举例 |
广播 |
以太网 |
非广播多路访问NBMA |
帧中继、X.25 |
点到点 |
PPP,HDLC |
点到多点 |
多个点到点链路的集合 |
-OSPF的DR与BDR
指定路由器(DR):一个网段上的其他路由器都和指定路由器(DR)构成邻接关系,而不是它们互相之间构成邻接关系
通过Hello报文选择DR和BDR来代表OSPF网段
其他的路由器(DRothers)只和DR及BDR路由器之间形成邻接关系
通过组播发送Hello报文
具有最高OSPF优先级的路由器会被选为DR
如果OSPF优先级相同,则具有最高Router ID的路由器会被选为DR
-OSPF包类型总结
包类型 |
描述 |
Hello |
用于邻居路由器之间建立和维护邻接关系 |
数据库描述包DBD |
描述每台OSPF路由器的链路状态数据库的内容 |
链路状态请求包LSR |
请求链路状态数据库的部分内容 |
链路状态更新包LSU |
传送链路状态数据通告LSA给邻居路由器 |
链路状态确认包LSAck |
确认邻居发过来的LSA已经收到 |
-OSPF的Hello协议
当路由器上启动OSPF进程时,每台路由器都回间隔一定的时间发送Hello包
Hello包通过组播地址224.0.0.5发送
OSPF路由器使用Hello包发起建立邻接关系并监视这种关系的存在和消失
在广播网或者点对点网上,Hello的发送间隔是10秒;在NBMA网络上,Hello的发送间隔是30秒
-OSPF的度量方法
COST=108/BW
OSPF协议决定最短路径是基于路由器每一个接口指定的代价(cost)来的
一条路由的代价:是指沿着到达目的网络的路由路径上所有出战接口的代价之和
-何时需要OSPF路由协议
网络的规模:网络中路由器在10台以上;中等或大规模的网络
网络的拓扑结构:网络的拓扑结构为网状,并且任意两台路由器之间都有胡同的需求
其他特殊的需求:要求路由变化时快速收敛,要求路由协议自身的网络开销尽量降低
对路由器自身的要求:运行OSPF协议时,对路由器的CPU的处理能力及内存的大小都有一定的要求,性能很低的路由器不推荐使用OSPF协议
-OSPF路由协议的特点
l 可适应大规模网络
l 路由变化收敛速度快
l 无路由环
l 支持变长子网掩码VLSM
l 支持区域划分
l 支持以组播地址发送协议报
-OSPF与RIP的比较
OSPF:链路状态路由协议;没有跳数的限制;支持可变长子网掩码(VLSM);收敛速度快;使用组播发送链路状态更新,在链路状态变化时使用触发更新,提高了带宽的利用率
RIP:距离矢量路由协议;RIP的15跳限制,超过15跳的路由被认为不可达;V1不支持可变长之网掩码(VLSM),V2支持;收敛速度慢;周期性广播整个路由表,在低速链路及广域网中应用将产生很大问题
-OSPF单区域的配置命令
配置loopback接口地址: – 用于产生路由器的Router ID
Router(config)#interface loopback looback-number
Router(config-if)#ip address ip-address mask
启动OSPF路由进程:
Router(config)#router ospf 进程号 - 本路由器的进程号,用于标识同一路由器上多个OSPF进程
指定OSPF协议运行的接口和所在的区域:
Router(config-router)#network 网络号 反向掩码 area 区域号
*网络号:可以是网络地址、子网地址、接口地址
*区域号:指明网络所述区域
修改接口的Cost值:
Router(config-if)#ip ospf cost number
配置OSPF计时器:
Router(config-if)#ip ospf hello-interval 时间(s)
Router(config-if)#ip ospf dead-interval 时间(s)
*为了交换信息,相邻路由器必须有相同的hello和dead间隔,通常dead时间是hello时间的4倍
查看邻居列表:
Router#show ip ospf neighbor
查看链路状态数据库:
Router#show ip ospf database
查看路由表:
Router#show ip route
查看OSPF的配置:
Router#show ip ospf
查看OSPF接口数据结构:
Router#show ip ospf interface 接口