Eigrp 的五种报文
1.       HELLO 包 :发现邻居和维护邻居关系的
2.       update :更新邻居最新信息以快速收敛
3.       查询包:当本地路由的链路DOWN 本地路由表没有路径和拓扑表里没有可行后继 就会发送一个询问报给邻居 以询问的方式来查询邻居路由
4.       回复: 对邻居查询报加以回复
5.       ACK 对更新、查询、回复报加以确认
Eigrp 邻居建立过程
RA 启动时激活eigrp链路 以组播方式发送hello报到链路上
RB 收到hello包后以单点应答一个Update (包含自己知道的所有路由表信息且设置了init  表明是初始过程)这时他们邻居关系还没建立,直到RB发回hello报给RA 当双方互换hello 时邻居关系建立
RA回发一个ACK报给RB 表示自己已经收到update 包
RA吸收来自RB update包里所有信息到自己的拓扑表里
RA 发送一个update 包给RB 
RB 收到了udate 后就回发一个ack 报给RA
后继:就是本地路由器的邻居到达目的网络cost 最小
可行后继:是通过邻居路由器到达目标网络的COST最小 起metric 比其他路由都大作为备份路由
FD :可行距离即本地路由到达目的网络度量值cost最小
AD:通告距离即是相邻路由通告自己到目的网络的cost 最小
可行后继条件:AD<FD
 
OSPF 邻居机状态
Down    无效
Attamp :在NBMA环境会有 为尝试状态
Init :表示初始过程
2way :双方建立通信并确认了dr/bdr
Exstart: 预交换状态
Exchang:交换DBD过程
Loading :装载
Fullling:完成
OSPF 邻居建立过程(广播环境)
RA 启动接口时激活ospf链路 以组播方式发送一个hello 包 (neighbor=0)
RB 收到来自RA 的hello 报时 创建一个数据结构、RB 回发一个hello包(neighbor=RA-ID) 表示自己已经收到了来自RA的HELLO报 同时把RA的邻居机状态改为init
RA收到来自RB的hello包为其创建一个数据结构 同时回发一个hello(neighbor=RB-ID)表示自己已经收到了hello包、同时将RB邻居机状态标为exstart 状态 为下一步双方交换链路状态数据库做准备
为了提高网络的交换效率 RA和RB预先了解双方数据库中各自需要什么LSA(自己已经有的LSA 就不需要了)所以RA和RB先以DD 报文来交换下彼此的LSA 摘要(每一个LSA摘要都唯一标记自己数据库的LAS )因为LSA要封装IP协议中进行传输所以要确保它的传输可靠性 DD报文在传输中要确定他们的主从关系
过程如下 RA 认为自己是主位 发送了DD(seq=x l=1 m=1 ms=1 不包含了LSA摘要信息)
RB在收到了RA的DD后把RA 的邻居机设置为exstart 并回复了一个DD (不包含LSA摘要)由于RB的ID大 所以RB认为自己是主位  并改用自己的序列
RA 收到了RB 的DD序列后认同了RB为主位并将RB 邻居状态机设置为exchange
RA收到了RB的DD 并把自己的MS=0 表明自己是从位 并用RB 的序号作为自己的序号来确认收到了RB 的报文
RB 收到RA的DD将RA邻居机设置为exchange
RB正式发送了LSA摘要这时把自己的seq=y+1 给RA  , RB通过把自己的seq=Y+N 来确认收到了RA的LSA
RA收到了RB的LSA摘要 
重复上述的过程
当RB发送到最后一个LSA 时把自己的M=0    RA 收到了最后一个DD 发现RB数据库里还有很多自己需要的LSA 这时把RB 邻居机设置为loading 状态 此时RB也收到了来自RA的最后一个DD 发现并没有自己需要的LSA 把RA 的邻居机设置为FULLING
这时RA会发送一个LSR来请求RB 发送自己想要的LSA
RB收到后回发一个LSU给RA
RA收到后会发送一个LSACK 给RB    直到双方的数据库同步 双方的邻居机都设置为FULLING