EIGRP-6-EIGRP数据包
EIGRP在与邻居路由器进行通信时,使用以下7种不同类型的数据包:
Hello包
确认包
更新包
查询包
响应包
SIA查询包
SIA响应包
更新包,查询包,响应包,SIA查询包和SIA响应包也称为可靠数据包,因为EIGRP会确保它们传输成功且顺序正确。
1.有用的EIGRP数据包
可以使用show ip eigrp traffic来查看路由器上发送和接收到的所有EIGRP数据包的统计信息。
接下来详细介绍每一种EIGRP数据包
2.Hello
—旦管理员在路由器的某个接口上启用了EIGRP.它就会周期性地发送Hello包。这些 Hello消息能够用来识別邻居.确认邻居的配置是否合适(属于相同IP 子网、使用相同AS 号、K值和认证.如果配置了的话).还是用作邻居之间的存活确认机制。EIGRP Hello包 的目的组播组地址是:在IPv4中为224.0.0.10.在IPv6中为FF02:: A。如果邻居是工程师静态配置的.那么EIGRP会将Hello包以单播的形式发送到那个明确配置的邻居地址。默认的Hello间隔是5杪;在NBMA接口上.当带宽设置为1544 kbit/s及以下时.默认的Hello间 隔是60杪。EIGRP Hello包的操作码是5.不需要确认。
3.确认包
EIGRP确认(ACK)包用来确认接收到的EIGRP数据包,从而实现EIGRP数据包的可靠传输。对于更新包、査询包、响应包、SIA査询包和SIA响应包来说,需要用ACK作为确认,确认包总是以单播形式发送。根据数据包的格式规定,EIGRP ACK本质上就是没有内容 (没有TLV)的Hello包,只携带图8-3中展示的通用EIGRP数据包头部,确认号字段为非零的值,具体设置为需要确认的可靠数据包的序列号。ACK包的操作码与Hello包一样,都是5。
再次注意之前展示的EIGRP数据包头部,每个头部中都包含确认号字段。在EIGRP中,任何以单播形式传输的可靠数据包中都可以携带一个确认号。如果路由器既需要向一 个邻居发送一个单播可靠数据包,同时又需要确认之前从这个邻居那里收到的可靠数据包,它就可以在要发送的这个可靠数据包的确认号字段中,写入接收到的可靠数据包的序列号,而无须单独发送一个ACK包。对于携带有非零确认号的单播可靠数据包,接收方会根据它的实际类型进行处理,也会将它当作ACK包进行处理。
EIGRP对于确认号字段的使用,与TCP非常类似:在TCP会话建立后,每个TCP分段中可以同时在负戟中包含数据,在头部的确认号字段中包含确认信息。如果TCP分段的发送方需要向对方发送数据,它会在这个TCP分段中包含上次接收到的字节的确认信息(加1)。 如果它不需要向对方发送任何数据,它就会发送不携带内容的TCP分段头部,其中记录了 正确的确认信息。EIGRP的做法基本上是一样的:如果路由器需要向同一个邻居发送ACK包和可靠数据包,它可以将确认号写入可靠数据包的确认号字段中,无需发送单独的ACK包。 如果路由器不需要向邻居发送任何可靠数据包,而只需要发送确认包,EIGRP会选择能够携带空内容的数据报类型来承戟这个确认号,显然它会使用Hello包;因此单独的ACK包实际上就是没有任何TLV的Hello包,其中只设置了确认号字段。需要注意的是,ACK包实际 上只包含EIGRP数据包头部,这一点与TCP使用分段头部和空负戟来传输确认信息是一样的。
—定要记住这一点,除了可靠数据包外,EIGRP只能使用那些以单播形式发送的数据包来承载确认号。在组播可靠数据包中携带确认号是没有任何意义的,因为这种数据包是发送给多台路由器的,而确认信息本身只与一个邻居发送的一个数据包相关。
4.更新包
EIGRP的更新包中包含路由信息的更新.用来传输目的地的可达性信息。更新包可以是单播数据包.也以是组播数据包。使用组播还是单播来发送更新包的规则总结如下。
•在建立新邻接关系的过程中.新发现的邻居之间是以单播形式发送更新包的。在特殊环境中.如果在短时间内.EIGRP在一个多访问接口上检测到了多个新邻居.它可能会选择使用组播.以便高效地发送更新包(比如.DMVPN[动态多点VPN]网络中的中心路由器启动后.检测到了几十或上百个分支路由器)。在邻接关系建立阶段.选择以 何种形式(单播或组播)发送更新包的方法并没有公开。最终的选择只与初始化同步阶段的工作效率有关.并不会影响邻居间交换的实际信息。
•路由器完全同步后.之后的更新包都是以组播形式发送的。
•如果某个邻居没有对收到的更新包进行确认.EIGRP以单播形式.向未响应的邻居重传更新包。
•在点到点接口上.对于工程师静态配置的邻居.EIGRP总是以单播形式向其发送更新包。
更新包的传输是可靠的.因为它们总是需要确认.如果在特定时间段内没有收到确认信息.EIGRP就会重传未确认的更新包。更新包的操作码是1。
5.查询包
EIGRP使用查询包让邻居参与到寻找去往某目的地的工作中。与更新包类似,查询包的传输也是可靠的。查询包可以是单播数据包,也可以是组播数据包;默认情况下,在只连接动态邻居的多访问接口上.ElGRP以组播形式发送查询包。如果在特定时间段内没有收到某个邻居的确认信息,ElGRP就会以单播形式向这个未响应的邻居重传这个查询包。 在连接静态配置邻居的点到点接口上.ElGRP总是以单播形式发送查询包。需要注意的是, 虽然邻居必须发送ACK包,来对自己接收到的查询包进行确认,但这个ACK包中并不包含对这个查询消息的响应,而是只确认自己收到了这个查询包。下面介绍的响应包是用作这 目的的。EIGRP查询包的操作码是30
6.响应包
EIGRP使用响应包来对查询包做出响应,其中包含发送方去往该目的地的当前距离,这个距离是依照触发了查询包的拓扑变化重新计算过的。响应包总是以单播形式发送给查询包发送者的,同时它的传输也是可靠的。EIGRP响应包的操作码是4。
7.SIA查询包和SIA响应包
这两个数据包类型是在弥散计算过程中使用的,用来确认那些还未对查询包发出响应包的邻居是否确实可达,是否还在忙于相应的弥散计算。SIA查询包用来询问某个邻居. 它是否还在处理最初的查询包。如果邻居仍然可达,并且仍在对SIA查询中指定的目的地 进行弥散计算,那这个邻居会马上以SIA响应包作为回应。这样一来,定义了弥散计算可以持续多长时间的计时器会被重置.为计算提供更多的时间。SIA查询包和SIA响应包都是以单播形式发送的,它们的传输都是可靠的。SIA查询包的操作码是10. SIA响应包的操作码是11。