| 網際網路套組 |
| --- |
| 應用層 |
| * BGP
* DHCP
* DNS
* FTP
* HTTP
* HTTPS
* IMAP
* LDAP
* MGCP（英语：）
* MQTT
* NNTP
* NTP
* POP
* ONC/RPC
* RTP
* RTSP
* SIP
* SMTP
* SNMP
* Telnet
* TLS／SSL
* SSH
* XMPP
* *更多...*
 |
| 傳輸層 |
| * TCP
* UDP
* DCCP
* SCTP
* RSVP
* *更多...*
 |
| 網路層 |
| * IP
	+ IPv4
	+ IPv6
* ICMP
* ICMPv6
* ECN
* IGMP
* OSPF
* IPsec
* RIP
* *更多...*
 |
| 連結層 |
| * ARP
* NDP
* Tunnels
	+ L2TP
* PPP
* MAC
	+ Ethernet
	+ DSL
	+ ISDN
	+ FDDI
* *更多...*
 |
| * 
* 论
* 编
 |

**加強型閘道間選徑協定**（英語：，縮寫為EIGRP），又譯**增强型内部网关路由协议**，一種内部网关协议（IGP）。在内部网关路由协议（IGRP）的基础上，由思科公司發展而成，於2013年Cisco將此標準公開，不再是私有的路由协议，在同样。EIGRP是一种高级距离矢量路由协议（也称混合型路由协议）。

EIGRP的基本操作
----------

EIGRP所收集的信息存放在以下三个表中:

* 邻居表（Neighbor Table）：用来存放和邻居路由器相关的数据。如邻居路由器IP地址、与邻居路由器相连的本地接口、保持时间等。
* 拓扑表（Topology Table）：该表用来存放所有从邻居路由器学习到的路径信息。拓扑表中的每一条路径都至少有一个后继（Successor）。该表中的每一条路径信息可以被标记为被动（Passive）状态或者活动（Active）状态。被动状态说明此路径处于稳定状态，并且路由器知道如何到达该目的地。活动状态则说明网络拓扑发生变化，并且路由器正在处理相关資訊，以得到一条新的到达该目的地的最佳路径。
* 路由表（Routing Table）：拓扑表中的后继（Successor）会被放入路由表，路由器根据路由表来转发数据包。

EIGRP有以下四个基本组件：

* 邻居发现和恢复（Neighbor discovery/recovery）：邻居发现和恢复机制使得运行EIGRP的路由器可以自动的发现与之直接相连的其他运行EIGRP的路由器，并与它们建立邻居关系。邻居发现和恢复机制还维护路由器与其他路由器之间的邻居关系。EIGRP路由器通过发送Hello包来建立和维护邻居关系，如果在一定的时间间隔内没有收到邻居路由器发来的Hello包，则认为该邻居已经死亡，并中断邻居关系，将邻居从邻居表中清除。
* 可靠传输协议（Reliable Transport Protocol RTP）：可靠传输协议的作用是保障EIGRP协议数据包的可靠的、有序的传送。RTP同时使用单播和组播来传送EIGRP协议数据包。有些类型的EIGRP数据包必须被可靠的传送，有些则无需可靠的传送。所谓可靠的传送，即发送的数据包需要被接收方显示或隐式的确认。
* DUAL有限状态机（DUAL finite-state machine DUAL FSM）：DUAL有限状态机是EIGRP用来计算最佳路径的机制。
* 协议相关模块（Protocol-dependent modules PDMs ）：协议相关模块的引进，使得EIGRP可以支持不同的网络层协议，如IPX、AppleTalk、IPv6，而不仅仅是IPv4协议。

混合度量值
-----

EIGRP同时考虑了链路的带宽、延迟、可靠性、负载4个因素来计算路由的度量值：

```
Router>show ip eigrp topology 10.0.0.1 255.255.255.255
IP-EIGRP topology entry for 10.0.0.1/32
  State is Passive, Query origin flag is 1, 1 Successor(s) , FD is 40640000
  Routing Descriptor Blocks:
  10.0.0.1 (Serial0/0/0) , from 10.0.0.1, Send flag is 0x0
      Composite metric is (40640000/128256) , Route is Internal
      Vector metric:
        Minimum bandwidth is 64 Kbit
        Total delay is 25000 microseconds
        Reliability is 255/255
        Load is 197/255
        Minimum MTU is 576
        Hop count is 1
```

* 带宽（Bandwidth）：源和目的地之间的链路的最小带宽，单位为kbp。
* 负载（Load）：源和目的地之间的链路的最重负载，该负载基于分组速率和接口的配置带宽。
* 延时（Delay）：源和目的地之间接口的累计延时,单位为ms。
* 可靠性（Reliability）：源和目的地之间的最低可靠性，该可靠性基于存活消息。

EIGRP在计算混合度量值的时候还引入了5个K值：K1到K5。注意K值在计算的时候仅仅作为一个乘数，而不等于所对应的真实值，如K1的数值不等于带宽的数值。

默认情况下，EIGRP在计算混合度量值的时候只考虑了带宽和延迟（即K1和K3）两个因素，但是可以人工的修改K值来控制所考虑的因素。

EIGRP的混合度量值根据以下公式来计算：

{\displaystyle {\bigg [}{\bigg (}K\_{1}\cdot {\text{Bandwidth}}+{\frac {K\_{2}\cdot {\text{Bandwidth}}}{256-{\text{Load}}}}+K\_{3}\cdot {\text{Delay}}{\bigg )}\cdot {\frac {K\_{5}}{K\_{4}+{\text{Reliability}}}}{\bigg ]}\cdot 256}
公式中K1到K5的值可以手工的设为0～255之间任意整数。

默认情况下K1和K3设为1，其他K值设为0，公式可以简化为(Bandwidth + Delay) \* 256。

EIGRP域内所有路由器的K值都必须设为相同的值，否则可能会产生路由环路。Cisco规定如果两台EIGRP路由器的K值不同，那么它们不会建立邻居关系。

EIGRP使用以下公式来计算带宽：

Bandwidth for EIGRP = 107 / Interface Bandwidth
其中：Interface Bandwidth为使用链路（由目的到源）所有区间上的最小带宽，使用千比特每秒（kilobits per second/kbps）为计量单位； Interface Delay为各链路总延迟，单位为10μs（tens of microseconds)。

在Cisco路由器上，带宽和延时都是可以手工设置的。

IGRP也使用相同的基本公式来计算混合度量值，唯一不同的是该公式没有乘数256。

EIGRP同样也使用了跳数（Hop），不过在计算混合度量值的时候跳数并没有包括在其中。在Cisco路由器上，默认的跳数最大值为100，任何跳数超过100的路由都将被视为不可达。當然亦可調整每台Cisco路由器上頭的EIGR跳數來增加網路路由的範圍，最大跳數为244。

后继
--

后继（Successor），是指从当前路由器到目的路由器路径最优的路由。后继必须同时满足以下两个条件：

* 它到某目的地的路径具有最低的度量值。
* 它不是路由环路的一部分。

第一个条件可以通过比较所有从邻居路由器接收到的到相同目的地的路由的度量值，来选出具有最低度量值的路由器。
第二个条件可以通过可行条件（Feasibility Condition，FC）来保证。对于去往同一个目的地的路由，若有多個相同的目的地路由度量質，則會有多个后继，以達到負載平衡(Load Balance)。

后继会被加载到路由表以供路由器转发数据，并且EIGRP路由器会将加载到路由表中的路由通告给其他EIGRP邻居。

可行后继
----

除了度量值最低的路径外，拓扑表还会存储前往每个目的地的后备路径。要成为可行后继，下一跳路由器的通告距离(Advertisement Distance)必须小于当前路由的可行距离(Feasible Distance)，即AD<FD。可行后继比当前路由器离目的地更近，但不是度量值最小的路径，所以不会加载到路由表中，只会存储在拓扑表中。和后继一样，对于同一个目的地，可以有多个可行后继。

通告距离和可行距离
---------

通告距离（Advertised Distance，AD）是到目的地的下一跳路由器到该目的地的度量值。通告距离的英文也可写作Reported Distance（RD）。

可行距离（Feasible Distance，FD）是路由器到某目的地的最低度量值。FD等于AD加上从当前路由器到下一跳路由器的度量值。

可行条件
----

eigrp的可行条件为: 路由的AD< successor的FD

路由的状态
-----

被动(Passive)状态:EIGRP網路收斂完成後，並能提供無路由環路(Loop-Free Route)路由狀態。當前網絡為可用。

活动(Active)状态:當前的網路正處於發送查詢狀態，當前網絡不可用。若拓樸表一直出現此狀態，則EIGRP這條路由已經進入到 Stuck-in-Active (SIA)的狀態，提示EIGRP網路的收斂發生了問題。

更新(Update)等待狀態:當前網絡正處於等待更新包的回應狀態。(較少看見)

查詢(Query)等待狀態:當前網絡正處於等待查詢包的回應的狀態。(較少看見)

EIGRP的路由协议类型
------------

EIGRP其他特性
---------

⒈支援 Classful 與 Classless 路由特性:
EIGRP一改以往IGRP不支援Classless的缺點。在於發送路由更新的時候，亦攜帶該路徑的子網遮罩(submask)。而支援自動路由彙總(auto-summary)的功能，而這項功能是預設啟用。不過通常在於專業的網管人員使用EIGRP的時候，會強烈建議關閉該項自動路由彙總的功能。

⒉支援不對等路徑度量負載平衡(Unequal Cost Path Load Balancing):
雖然EIGRP支援不對等路徑度量負載平衡；但於Cisco路由器上仍需手動啟用此項功能。而要使用此項功能的要求在於拓樸表(topology table)當中必須擁有可行後繼(Feasible Sucessor)才可啟用此功能。而可行後繼路由路徑度量必須小於或等於所設定的變數(variance)的倍數值(1－128)才能啟用負載平衡的功能，符合該倍數值的可行後繼路由則會出現在路由表當中。目前此特性是所有路由協議(除IGRP外)望塵莫及。

⒊路由更新占用較少的介面頻寬(interface bandwidth):
EIGRP預設情況下，最多占用介面或子介面配置頻寬的50%。由於在早期的網路頻寬較少的狀況下，EIGRP協議能夠減少路由協議之間的溝通所占用的頻寬。至今頻寬較大的今日，這個功能也就顯得沒有那麼重要。目前此特性是獨一無二。當然亦可在Cisco路由器上的介面上配置頻寬或者調整占用的百分比等等。

⒋Stuck-in-Active:
EIGRP的路由環境在於中小型的路由環境中(小於20台)的路由收斂速度是首屈一指(由於使用DUAL算法，並且擁有自身的拓樸表。)；但是在於大型的的路由環境中(大於50台)的路由收斂速度反而會因為DUAL算法而導致路由收斂產生SIA(Stuck-in-Active)的問題發生。而這個問題的解決方案就是限制EIGRP查詢範圍，並且在路由器的介面(interface)上設置路由匯總(route summary)，如此才能夠阻止EIGRP的SIA狀況。

参考文献
----

TCP/IP路由技术（第一卷）（第二版）（美）多伊尔，（美）卡罗尔 著，葛建立，吴剑章 译
/ 人民邮电出版社

外部链接
----


1. ↑ .  [2014-09-18]. （原始内容存档于2014-09-07）.
2. ↑  IETF RFC7868 文档 （页面存档备份，存于） 5.6.1.1