学习路由协议从3个方面分析
1.范围(IGP)
2.设计原理(LS)
3.有类无类
 
OSPF 建立路由过程
首先OSPF协议封装在IP 协议中,协议号为89(EIGRP为88),组播地址有2个:224.0.0.5,224.0.0.6
 
先建立邻居关系:hello包
交互LSA数据包:有6种类型的LSA
建立LSDB数据库
通过SPF算法建立路由表
 
所以OSPF中有三张表:邻居表,拓扑表,路由表
 
OSPF的拓扑表比EIGRP要详细很多,不光有路由信息,还有拓扑信息,所以说OSPF构建的路由是树状结构的
 
OSPF 区域
OSPF划分区域的3点优势
1.减少路由条目:区域汇总(域间汇总)
2.拓扑变化限制在自己的区域中
3.限制LSA传播范围,减少流量
 
区域以接口划分
 
区域边界路由器(ABR)是连接主干区域(area0)和子区域的路由器
 
OSPF区域设计原则(子区域都连接到area0)
 
邻居和邻接
邻居和邻接的区别
只交换hello包的是邻居,交换LSA的是邻接
 
所有点到到点的连接,所有邻居成为邻接(串口)
 
多路访问网络邻居不一定是邻接(多路访问网络分为以太网和帧中继网)
在以太网中:DR,BDR和 DRother成为邻接关系,而DRothers之间只是邻居关系
 
所以,只有邻接关系的才交换路由信息(这样是为了减少路由协议占用的带宽)
 
 
OSPF 的路由更新
在同一区域中,所以路由器的的LSDB都是一样的,然后各路由器以自己为根算出最短路径
 
OSPF能触发更新路由信息,也能周期性更新(30Min更新一次,60Min后收不到更新就删掉LSA),而EIGRP是触发式更新,RIP是30秒周期更新整个路由表
 
LSA的序列号(棒棒糖式):一个很抽象的东西。。。最大的序列号比最小的序列号要小。。。木有理解,貌似不是网络工程师所研究的问题了。。。是数学家需要理解的。。
 
OSPF的5种报文
1.hello 建立邻居(不用确认)
2.database description 摘要信息(减少占用带宽,不用确认)
3.link-state request请求详细信息(不用ACK确认,而用LSU确认)
4.link-state update详细信息(LSU中是LSA信息,唯一需要用ack确认的报文)
5.link-state ack确认信息(只做LSU确认)
 
OSPFv2支持IPv4,IPv6需要启用OSPFv3
 
OSPF的数据报格式
(封装在IP中,所以IP部分就不写了)

Ver(OSPF版本)--Type(类型)--packet length(数据报长度)--Router ID(见下方Tips)--Aero ID-check sum(验证完整性,类似CRC)-auth type(认证方式)--data(数据,内容取决于类型,即上述的5种报文)

 
Tips:
Route ID(唯一表示区域内某台路由器)选举方式
1.手工指定(任意)
2.Loopback口最大的IP地址
3.没有Loopback口就用物理地址最大的IP地址
 
具体展开 OSPF 过程
 
第一步:建立邻居
 
Init状态
第一次发送hell包
hello的something(不是专业术语,只是卖弄下eng。。。)
1.分10s和30s,dead时间为hello时间的4倍(EIGRP为3倍),OSPF路由器之间Hello时间必须匹配(EIGRP不需要)
2.area ID必须一致
3.启用auth,密钥必须一致
4.stub area必须一致(留着以后解释)
 
2way状态
收到自己的routerID后进入此状态
 
第二步:交互DBD
在点对点网络中直接交互DBD
在多路访问网络中,首先选出主从关系,DR在DBD报文中宣告对方我将要向你发送LSU
 
Exstart状态:在第一个DBD报文中,选出主从关系
DBD的3个字段
Init:第一次发送的置为1
More:如果将继续发送置为1
Master/Slave:如果自己为master置为1
 
exchange状态
互相交互DBD
 
第三步:交互详细路由信息
查看对方DBD信息,比自己新就进入进入loading状态(向对方发送LSR),然后对方发送LSU(即是LSR所要请求的信息,也是确认信息),最后向对方发送ACK后进入full状态
 
DR BDR 的选举
DR和BDR监听224.0.0.6
DRother监听224.0.0.5
P2P中只有224.0.0.5
 
选举方式:

1.较大的priority(默认为1):修改方法 在接口中 ip ospf priority [数值],其中0的话直接就是BR,数字越高,优先级越高

2.较大的Routr ID
 
Tips:

1.在这里DR,BDR选举和Router ID选举容易混淆,指明一下:Route ID相当于路由器的×××,只是唯一标识某一台路由器,而DR,BDR的选取可以参考Router ID值

 
2.DR和BDR是不抢占的,选举出DR和BDR后,即使修改priority后, DR和BDR不变,想要在现有拓扑下手工修改参数直到DR和BDR可以清理邻居表实现
DR如果DOWN掉,BDR成为DR,再选举BDR
 
3.DR和BDR只是接口的概念
 
4.不同网段分别选取DR和BDR
 

几个零散的知识点:

OSPF cost值(相当于metric值):10^8/BW (BW单位为bps)
 

OSPF中环回接口的路由都为32位的掩码(不管你设置的是几位):环回口只是做测试的话,比EIGRP有优势,也可以改,命令是 :在环回口中 ip ospf network point-to-point

 
修改hello时间:在接口中 ip ospf hello-interval [数值]