eigrp---消息格式_第1张图片 eigrp---消息格式_第2张图片
 
 
EIGRP 消息的数据部分封装在数据包内。此数据字段称为 TLV(类型/长度/值)。
 
每个 EIGRP 数据包无论类型如何,都具有 EIGRP 数据包报头。然后,EIGRP 数据包报头和 TLV 被封装到一个 IP 数据包中。在该 IP 数据包报头中,协议字段被设为 88 以代表 EIGRP,目的地址则被设为组播 224.0.0.10。如果 EIGRP 数据包被封装在以太网帧内,则目的 MAC 地址也是一个组播地址:01-00-5E-00-00-0A。
 
eigrp---消息格式_第3张图片
每条 EIGRP 消息都包含该报头。我们将讨论的重要字段包括 Opcode(操作码)和 Autonomous System Number(自治系统编号)。操作码用于指定 EIGRP 数据包类型:
.更新
.查询
.应答
.Hello
自治系统 (AS) 编号用于指定 EIGRP 路由进程。Cisco 路由器可以运行多个 EIGRP 实例,这一点与 RIP 不同。AS 编号用于跟踪不同的 EIGRP 实例。
 
eigrp---消息格式_第4张图片
EIGRP 参数消息包含 EIGRP 用于计算其复合度量的权重。默认情况下,仅对带宽和延迟计权。它们的权重相等,因此,用于带宽的 K1 字段和用于延迟的 K3 字段都被设为 1,其它 K 值则被设为零。
 
“保留时间”是收到此消息的 EIGRP 邻居在认为发出通告的路由器发生故障之前应该等待的时长。
eigrp---消息格式_第5张图片
“IP 内部”消息用于在自治系统内部通告 EIGRP 路由。我们将讨论的重要字段包括:度量字段(“延迟”和“带宽”)、子网掩码字段(“前缀长度”)和“目的地”字段。
延迟根据从源设备到目的设备的总延迟来计算,单位为 10 微秒。带宽是路由沿途的所有接口的最低配置带宽。
子网掩码被指定为前缀长度或子网掩码中网络位的数量。例如,子网掩码 255.255.255.0 的前缀长度为 24,因为 24 是网络位的数量。
“目的地”字段用于存储目的网络的地址。尽管图中只显示了 24 位,但此字段取决于 32 位网络地址的网络部分的值。例如,10.1.0.0/16 的网络部分为 10.1。因此,该“目的地”字段会存储开始的 16 位。因为此字段的长度最小 为 24 位,不足 24 位时字段的其余部分用零填充。如果网络地址长于 24 位(例如 192.168.1.32/27),则“目的地”字段会延长 32 位(共 56 位),未使用的字段用零填充。
 
eigrp---消息格式_第6张图片
 
当向 EIGRP 路由过程中导入外部路由时,就会使用“IP 外部”消息。在本章中,我们会将一条默认静态路由导入(即重新分配)到 EIGRP 中。请注意,IP 外部 TLV 的下半部分包括 IP 内部 TLV 所用的所有字段。
注:某些 EIGRP 文献可能讲述 MTU(最大传输单元)是 EIGRP 所用的度量之一,但这是错误的。MTU 并不 是 EIGRP 所用的度量。MTU 虽然包括在路由更新中,但不用于确定路由度量。
 
 
PDM(协议相关模块)
 
eigrp---消息格式_第7张图片
EIGRP 可以路由多种不同的协议(包括 IP、IPX 和 AppleTalk),这通过使用 PDM(协议相关模块)实现。PDM 负责处理与每个网络层协议对应的特定路由任务。
例如:
.IP-EIGRP 模块负责发送和接收在 IP 中封装的 EIGRP 数据包,并负责使用 DUAL 来建立和维护 IP 路由表。如图所示,EIGRP 针对每个网络层协议使用不同的 EIGRP 数据包,并为其维护单独的邻居表、拓扑表和路由表。
.IPX EIGRP 模块负责与其它 IPX EIGRP 路由器交换与 IPX 网络相关的路由信息。
 
RTP 和EIGRP数据包类型
 
可靠传输协议 (RTP) 是 EIGRP 用于发送和接收 EIGRP 数据包的协议。EIGRP 被设计为与网络层无关的路由协议,因此,它无法使用 UDP 或 TCP 的服务,原因在于 IPX 和 Appletalk 不使用 TCP/IP 协议簇中的协议。图中从概念上显示了 RTP 的工作原理。
尽管其名称中有“可靠”字眼,RTP 其实包括 EIGRP 数据包的可靠传输和不可靠传输两种方式,它们分别类似于 TCP 和 UDP。可靠 RTP 需要接收方向发送方返回一个确认。不可靠的 RTP 数据包不需要确认。
RTP 能以单播或组播方式发送数据包。组播 EIGRP 数据包使用保留的组播地址 224.0.0.10。
 
EIGRP 数据包类型
eigrp---消息格式_第8张图片
Hello 数据包用于发现邻居并与所发现的邻居建立邻接关系。EIGRP hello 数据包以组播方式发送,且使用 不可靠传输
eigrp---消息格式_第9张图片
更新数据包用于传播路由信息。与 RIP 不同的是,EIGRP 不发送定期更新,而仅在必要时才发送更新数据包。EIGRP 更新仅包含需要的路由信息,且仅发送给需要该信息的路由器。EIGRP 更新数据包使用 可靠传输。当多台路由器需要更新数据包时,通过组播发送;当只有一台路由器需要更新数据包时,则通过单播发送。在图中,因为链路属于点对点类型,因此更新通过单播发送。
 
确认 (ACK) 数据包由 EIGRP 在使用可靠传输时发送。对于 EIGRP 更新、查询和应答数据包,RTP 使用可靠传输。EIGRP 确认数据包始终以不可靠单播方式发送。EIGRP 确认数据包使用不可靠传输。
eigrp---消息格式_第10张图片
查询和应答数据包由 DUAL 在搜索网络以及进行其它任务时使用。查询和应答使用可靠传输。 查询可以使用组播或单播,但应答则始终以单播发送
在图中,R2 失去了与 LAN 的连接,所以它向所有 EIGRP 邻居发送查询,搜索可以到达该 LAN 的路由。因为查询使用可靠传输,所以收到查询的路由器必须返回一个 EIGRP 确认。(在本例中,为简单起见,图中省略了确认。)
所有邻居不管是否具有通向该故障网络的路由,均会发送一个应答。因为应答也使用可靠传输,所以收到应答的路由器(例如 R2)也必须发送一个确认。
注:您可能有些疑惑:为什么 R2 要发送查询来查找它知道已经发生故障的网络呢。事实上,只是连接到该网络的接口发生了故障。可能有另一台路由器连接到同一个 LAN。因此,R2 在从其数据库中彻底删除该网络前,会查询是否还存在连接到该网络的路由器。
 
 
 
 
HELLO协议
eigrp---消息格式_第11张图片
 
EIGRP 必须首先发现其邻居,才能在路由器间交换 EIGRP 数据包。EIGRP 邻居是指在直连的共享网络上运行 EIGRP 的其它路由器。
EIGRP 使用 Hello 数据包来发现相邻路由器并与之建立邻接关系。在大多数网络中,每 5 秒发送一次 EIGRP Hello 数据包。在多点 NBMA(非广播多路访问)网络上,例如 X.25、帧中继和带有 T1 [1.544 Mbps] 或更慢访问链路的 ATM 接口上,每 60 秒单播一次 Hello 数据包。EIGRP 路由器假定,只要它还能收到邻居发来的 Hello 数据包,该邻居及其路由就仍然保持活动。
 
 
保留时间用于告诉路由器在宣告邻居无法到达前应等待该设备发送下一个 Hello 的最长时间。默认情况下,保留时间是 Hello 间隔时间的三倍,即在大多数网络上为 15 秒,在低速 NBMA 网络上则为 180 秒。保留时间截止后,EIGRP 将宣告该路由发生故障,而 DUAL 则将通过发出查询来寻找新路径。
 
 
eigrp限定更新:
eigrp---消息格式_第12张图片
EIGRP 使用术语部分 或限定 来描述其更新数据包。与 RIP 不同的是,EIGRP 不发送定期更新,而仅在路由度量发生变化时才发送更新。
 
术语部分 是指更新仅包含与路由变化相关的信息。EIGRP 在目的地状态变化时发送这些增量更新,而非发送路由表的全部内容。
 
术语限定 是指部分更新仅传播给受变化影响的路由器。部分更新自动“受到限定”,这样,只有需要该信息的路由器才会被更新。
 
EIGRP 仅发送必要的信息且仅向需要该信息的路由器发送,从而将发送 EIGRP 数据包时占用的带宽降到最低。