l
路由:路径的决策和路径的最佳决策过程。
IGP
:
AS
内部的路由协议
有类别路由协议
无类别路由协议
区别:路由更新时是否携带子网掩码。
EIGRP
OSPF
ISIS
BGP
:
AS
间
EBGP
l
EIGRP Features
:
高级距离矢量型
快速收敛
支持
VLSM
和不连续子网
无类别
部分更新,触发更新
支持等开销和非等开销的负载均衡
支持多种不同的网络层协议
使用组播和单播传递路由信息
基于端口的汇总
配置简单,不必考虑网络链路的类型
l
EIGRP Key Technologies
:
邻居的发现恢复机制;
可靠的传输协议
(RTP)
:
EIGRP
依靠
RTP
(
Reliable Transport Protocol
,可靠传输协议)保证有序分发
EIGRP
数据包给所有邻居。
RTP
要求所有
EIGRP Packets
(除了
Hello
和
Ack
)发出去以后都要有明确应答(
Ack
),没有得到应答就会不断查询。
DUAL
算法选择无环:
EIGRP
的邻居表中每一项都含有邻居
ID
和对应的
Interface
。
协议独立单元
(PDMs)
:
PDMs
(
Protocols-dependent Modules
,协议独立单元)支持
IP
,
Apple Talk
,
Novell Netware
这些网络层协议,每个协议均有独立的
EIGRP
模块。但就现在
IP
一枝独秀的局面,
PDMs
意义并不大。
l
三张表:
邻居表
neighbor table
,跟谁建立邻居关系
(Next-Hop Router | Interface)
拓扑表
topology table
路由表
routing table
AD = cost between the next-hop router and the destination
邻居到达目标网络的距离
FD = cost from local router = AD of next-hop router + cost between the local router and the next-hop router
从本地到邻居和从邻居到达目标网络的距离总长
最小的
FD
就是最佳路径
l
EIGRP packets
:
EIGRP
数据包分为
Hello
,
Update
,
Query
,
Reply
,
Ack
(其中
Update
,
Relay
,
Query
都要有
Ack
回应)。
Hello
:
建立和维持邻居关系
Update
:发送路由更新
Query
:
当本地去往目标网络没有主路由及备份路由时发送的查询包
Reply
:
邻居响应
ACK
l
邻居关系建立:
1. hello (5
秒周期,保持时间
15
秒
)
2.
返回
hello
3. ACK
4.
建立拓扑表
5. update
6.
返回
ACK
EIGRP
形成邻居的条件:
1) As
号相同
2)
度量计算的
K
值相同
3)
认证相同(
EIGRP
只支持密文认证)
4)
对端通告的
Neighbor ID
必须在本端的直连网段中存在。
配置
#router eigrp 100 (
进程号,两个路由器的
EIGRP
进程号必须相同
)
#no auto-summary
#network 10.1.1.0 0.0.0.255
#sh ip eigro neighbors
#debug ip eigrp
l
EIGRP
内部
(int)
路由管理距离是
90
,外部路由管理距离是
170
。
内部路由:通过
eigrp
路由协议本身的
network
学习的
外部路由:通过其它手段进入
EIGRP
的
组播地址:
244.0.0.10
l
计算度量值:
EIGRP
度量设计得相当全,包括带宽,延迟,可靠性,负载和
MTU
,但起作用的一般只有带宽和延迟,具体计算是用
IGRP
的方法再乘以
256
,因为
IGRP
度量值是
24
位,而
EIGRP
扩展到
32
位。公式为
Metric= [10^7/
所有链路的最小带宽(单位
kbps
)
+
延迟之和(单位
10ms
)
/10] * 256
。
Bandwidth
Delay
Reliability
Loading
MTU
K
值:
K1=1
,
K2=0
,
K3=1
,
K4=0
,
K5=0 (
权重
)
Metric= [K1*BW + ((K2*BW) / (256 �C Load)) + K3*Delay]
默认:
Metric = (BW + Delay) * 256
BW=10000000 /
沿途更新入向接口
BW
的最小值
(kbit/s)
Delay=
沿途更新入向接口所有
Delay
的总和
(
微秒
microseconds) / 10
Serial
接口默认带宽是
1544K
,
Delay
是
20000 usec
例如:
S1----S2----Lo0 2.2.2.2/24
S1
从
S2
学习到网络
2.2.2.0/24
的
Metric
计算:
BW
:
10000000 / 1544 = 6476 (
取整数值
)
Delay
:
(20000 + 500) / 10 = 2500 (
环回口的
delay
值是
5000
,
Serial
口的
delay
值是
20000)
Metric = (6476 + 2500) * 256 = 2297856
l
距离矢量型路由协议,只知道邻居。
l
链路状态型路由协议,能够对整个网络有完整的理解。
路由表查找:最长匹配原则。
l
网络边界路由器缺省路由:
RIP
作为载体:
#redistribute static metric 1
#default-information originate
ERGRP
作为载体:
#ip default-network 172.16.0.0
#int s1
#ip summary-address eigrp 100 172.16.0.0 255.255.0.0
l
路由汇总:
目的:减少路由表条目,大大提高路由器的转发效率,网络结构变化影响范围大大缩小。
自动
(
默认的
)
,自动在主类网络边界进行汇总。针对的是直连的网络号。
手动,针对的是直连或者不直连的网络。基于接口的。
EIGRP
对不连续子网的支持表现在可以关闭强制性的自动汇总,关闭后发出的路由条目带有子网掩码,且为明细路由。
配置:
#int s1/0
#ip summary-add eigrp 100 172.16.0.0 255.255.0.0
自动产生一条指向空接口的路由,管理距离是
5
,目的是防止路由环路。
(
路由黑洞
)
变相宣告默认路由:
#int s1/0
#ip summary-add eigrp 100 0.0.0.0 0.0.0.0
l
EIGRP Load Balancing
:
EIGRP
支持不等价负载均衡,通过命令
router
(
config-router
)
# variance number
执行,比如最小度量值
100
,
number=2
,那么度量值
<=200
以内的路由条目也可以加入到路由表中,默认支持
4
条,最多
6
跳。
(在
12.2
版本前,数据包这样分配:比如
Metric/
最小
Metric= 250/100 =5/2,
那么第一条链路走
5
个包,第二条走
2
个包;但这样有缺陷,若为
101
:
100 = 101/100,
第一条链路先发
101
个包,发的时候第二条长时间处于空闲,也就等于没有负载均衡。
12.3
版本后进行了改进,实行四舍五入,这样
101
:
100 =1/1,
一条链路发一个包,实现真正的负载均衡)。
去往目标网络有多条路径,可以是等开销的,最大允许
6
条路径。
Fast switching
快速交换,基于目的地,(路由器启用了
CEF
或者
ip route-cache
)
Process switching
处理交换,基于数据包的。
度量值不一样的时候也可以负载均衡,不等开销的路径。
实验:
R1 s1/1 ----- s1/0 R2 s1/1 ----- s1/0 R3
Fe0 Fe0
| |
|--------------------------------------------|
|
Fe0
R4
R2#show ip route
Gateway of last resort is not set
4.0.0.0/24 is subnetted, 1 subnets
D 4.4.4.0 [90/1892352] via 12.1.1.1, 00:05:20, Serial1/0
[90/1892352] via 23.1.1.2, 00:05:20, Serial1/1 //
到达目的地有两条路径
23.0.0.0/24 is subnetted, 1 subnets
C 23.1.1.0 is directly connected, Serial1/1
172.16.0.0/24 is subnetted, 3 subnets
D 172.16.1.0 [90/1889792] via 12.1.1.1, 00:05:20, Serial1/0
D 172.16.2.0 [90/1889792] via 12.1.1.1, 00:05:20, Serial1/0
D 172.16.3.0 [90/1889792] via 12.1.1.1, 00:05:20, Serial1/0
123.0.0.0/24 is subnetted, 1 subnets
D 123.123.123.0 [90/1764352] via 12.1.1.1, 00:05:20, Serial1/0
[90/1764352] via 23.1.1.2, 00:05:20, Serial1/1
12.0.0.0/24 is subnetted, 1 subnets
C 12.1.1.0 is directly connected, Serial1/0
R2#
R2#sh ip route 4.4.4.0
Routing entry for 4.4.4.0/24
Known via "eigrp 100", distance 90, metric 1892352, type internal
Redistributing via eigrp 100
Last update from 23.1.1.2 on Serial1/1, 00:04:27 ago
Routing Descriptor Blocks:
* 12.1.1.1, from 12.1.1.1, 00:04:27 ago, via Serial1/0
Route metric is 1892352, traffic share count is 1 //
负载均衡比例是
1
Total delay is 25100 microseconds, minimum bandwidth is 2048 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 2
23.1.1.2, from 23.1.1.2, 00:04:27 ago, via Serial1/1
Route metric is 1892352, traffic share count is 1 //
负载均衡比例是
1
Total delay is 25100 microseconds, minimum bandwidth is 2048 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 2
R2#
修改其中一条链路的带宽:
R2#int s1/1
R2(config-if)#bandwidth 512
R2#sh ip route eigrp
4.0.0.0/24 is subnetted, 1 subnets
D 4.4.4.0 [90/1892352] via 12.1.1.1, 00:00:13, Serial1/0 //
路由表中显示到达目的地路径只有一条
172.16.0.0/24 is subnetted, 3 subnets
D 172.16.1.0 [90/1889792] via 12.1.1.1, 00:00:13, Serial1/0
D 172.16.2.0 [90/1889792] via 12.1.1.1, 00:00:13, Serial1/0
D 172.16.3.0 [90/1889792] via 12.1.1.1, 00:00:13, Serial1/0
123.0.0.0/24 is subnetted, 1 subnets
D 123.123.123.0 [90/1764352] via 12.1.1.1, 00:00:13, Serial1/0
R2#sh ip eig topo
IP-EIGRP Topology Table for AS(100)/ID(23.1.1.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - Reply status
P 4.4.4.0/24, 1 successors, FD is 1892352
via 12.1.1.1 (1892352/156160), Serial1/0
via 23.1.1.2 (5642496/156160), Serial1/1 // via 23.1.1.2
路径变成
FS
了
P 12.1.1.0/24, 1 successors, FD is 1761792
via Connected, Serial1/0
P 23.1.1.0/24, 1 successors, FD is 5511936
via Connected, Serial1/1
via 12.1.1.1 (2276352/1764352), Serial1/0
P 123.123.123.0/24, 1 successors, FD is 1764352
via 12.1.1.1 (1764352/28160), Serial1/0
via 23.1.1.2 (5514496/28160), Serial1/1
P 172.16.1.0/24, 1 successors, FD is 1889792
via 12.1.1.1 (1889792/128256), Serial1/0
via 23.1.1.2 (5642496/156160), Serial1/1
P 172.16.2.0/24, 1 successors, FD is 1889792
via 12.1.1.1 (1889792/128256), Serial1/0
via 23.1.1.2 (5642496/156160), Serial1/1
P 172.16.3.0/24, 1 successors, FD is 1889792
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - Reply status
via 12.1.1.1 (1889792/128256), Serial1/0
via 23.1.1.2 (5642496/156160), Serial1/1
R2#
配置
via 23.1.1.2
作为负载均衡路径,不等值负载均衡。
R2(config)#router eigrp 100
R2(config-router)#variance 3
说明:
variance
的值默认是
1,
代表等价链路的均衡负载,它的取值范围
1
~
128
,这个乘数代表了可以接受的不等价链路的度量值的倍数,在这个范围内的链路都将被接受,并且被加入到路由表中。
比如说有两条链路,一条度量值是
1889792
,另一条是
5642496
,如果没有设置过
variance
的值,则会在路由表中出现度量值为
1889792
的路径,如果设置了
variance 3
,则两条路由都会出现在路由表中。
因为
1889792 * 3 = 5669376
,刚刚大于
5642496 (
必须要大于
)
。
R2#sh run
!
router eigrp 100
variance 3
network 12.1.1.0 0.0.0.255
network 23.1.1.0 0.0.0.255
no auto-summary
R2#sh ip route eigrp
4.0.0.0/24 is subnetted, 1 subnets
D 4.4.4.0 [90/1892352] via 12.1.1.1, 00:30:16, Serial1/0
[90/5642496] via 23.1.1.2, 00:30:16, Serial1/1
172.16.0.0/24 is subnetted, 3 subnets
D 172.16.1.0 [90/1889792] via 12.1.1.1, 00:30:16, Serial1/0
[90/5642496] via 23.1.1.2, 00:30:16, Serial1/1
D 172.16.2.0 [90/1889792] via 12.1.1.1, 00:30:16, Serial1/0
[90/5642496] via 23.1.1.2, 00:30:16, Serial1/1
D 172.16.3.0 [90/1889792] via 12.1.1.1, 00:30:16, Serial1/0
[90/5642496] via 23.1.1.2, 00:30:16, Serial1/1
123.0.0.0/24 is subnetted, 1 subnets
D 123.123.123.0 [90/1764352] via 12.1.1.1, 00:30:16, Serial1/0
R2#sh ip eigrp topo
IP-EIGRP Topology Table for AS(100)/ID(23.1.1.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - Reply status
P 4.4.4.0/24, 1 successors, FD is 1892352
via 12.1.1.1 (1892352/156160), Serial1/0
via 23.1.1.2 (5642496/156160), Serial1/1
P 12.1.1.0/24, 1 successors, FD is 1761792
via Connected, Serial1/0
P 23.1.1.0/24, 1 successors, FD is 5511936
via Connected, Serial1/1
via 12.1.1.1 (2276352/1764352), Serial1/0
P 123.123.123.0/24, 1 successors, FD is 1764352
via 12.1.1.1 (1764352/28160), Serial1/0
via 23.1.1.2 (5514496/28160), Serial1/1
P 172.16.1.0/24, 1 successors, FD is 1889792
via 12.1.1.1 (1889792/128256), Serial1/0
via 23.1.1.2 (5642496/156160), Serial1/1
P 172.16.2.0/24, 1 successors, FD is 1889792
via 12.1.1.1 (1889792/128256), Serial1/0
via 23.1.1.2 (5642496/156160), Serial1/1
P 172.16.3.0/24, 1 successors, FD is 1889792
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - Reply status
via 12.1.1.1 (1889792/128256), Serial1/0
via 23.1.1.2 (5642496/156160), Serial1/1
R2#sh ip route 4.4.4.0
Routing entry for 4.4.4.0/24
Known via "eigrp 100", distance 90, metric 1892352, type internal
Redistributing via eigrp 100
Last update from 23.1.1.2 on Serial1/1, 00:30:33 ago
Routing Descriptor Blocks:
* 12.1.1.1, from 12.1.1.1, 00:30:33 ago, via Serial1/0
Route metric is 1892352, traffic share count is 3
Total delay is 25100 microseconds, minimum bandwidth is 2048 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 2
23.1.1.2, from 23.1.1.2, 00:30:33 ago, via Serial1/1
Route metric is 5642496, traffic share count is 1
Total delay is 25100 microseconds, minimum bandwidth is 512 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 2
R2#
验证:
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#access-list 100 permit icmp any any
R2(config)#
R2#debug ip packet 100
IP packet debugging is on for access list 100
R2#
R2#ping
Protocol [ip]:
Target IP address: 4.4.4.4
Repeat count [5]: 4
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 4, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds:
!!!!
Success rate is 100 percent (4/4), round-trip min/avg/max = 16/30/48 ms
R2#
*Mar 1 03:22:38: IP: s=12.1.1.2 (local), d=4.4.4.4 (Serial1/0), len 100, sending
*Mar 1 03:22:38: IP: s=4.4.4.4 (Serial1/0), d=12.1.1.2 (Serial1/0), len 100, rcvd 3
*Mar 1 03:22:38: IP: s=12.1.1.2 (local), d=4.4.4.4 (Serial1/0), len 100, sending
*Mar 1 03:22:38: IP: s=4.4.4.4 (Serial1/0), d=12.1.1.2 (Serial1/0), len 100, rcvd 3
*Mar 1 03:22:38: IP: s=12.1.1.2 (local), d=4.4.4.4 (Serial1/0), len 100, sending
*Mar 1 03:22:38: IP: s=4.4.4.4 (Serial1/0), d=12.1.1.2 (Serial1/0), len 100, rcvd 3
*Mar 1 03:22:38: IP: s=23.1.1.1 (local), d=4.4.4.4 (Serial1/1), len 100, sending
*Mar 1 03:22:38: IP: s=4.4.4.4 (Serial1/1), d=23.1.1.1 (Serial1/1), len 100, rcvd 3
R2#
数据包发送的比例是
3:1
。
R2(config-router)#traffic-share balanced //
默认配置的命令,这是负载均衡的先决配置
如果修改为:
R2(config-router)#traffic-share min across-interfaces
意义:在多条路径中,在这多条路径中不做负载均衡,只使用其中最小的那一条,但是将所有可能的路径都列举在路由表中。
R2(config-router)#traffic-share min across-interfaces
R2(config-router)#
R2#sh
*Mar 1 03:33:27: %SYS-5-CONFIG_I: Configured from console by console
R2#sh ip route eigrp
4.0.0.0/24 is subnetted, 1 subnets
D 4.4.4.0 [90/1892352] via 12.1.1.1, 00:00:07, Serial1/0
[90/5642496] via 23.1.1.2, 00:00:07, Serial1/1
172.16.0.0/24 is subnetted, 3 subnets
D 172.16.1.0 [90/1889792] via 12.1.1.1, 00:00:07, Serial1/0
[90/5642496] via 23.1.1.2, 00:00:07, Serial1/1
D 172.16.2.0 [90/1889792] via 12.1.1.1, 00:00:07, Serial1/0
[90/5642496] via 23.1.1.2, 00:00:07, Serial1/1
D 172.16.3.0 [90/1889792] via 12.1.1.1, 00:00:07, Serial1/0
[90/5642496] via 23.1.1.2, 00:00:07, Serial1/1
123.0.0.0/24 is subnetted, 1 subnets
D 123.123.123.0 [90/1764352] via 12.1.1.1, 00:00:07, Serial1/0
R2#sh ip route 4.4.4.0
Routing entry for 4.4.4.0/24
Known via "eigrp 100", distance 90, metric 1892352, type internal
Redistributing via eigrp 100
Last update from 23.1.1.2 on Serial1/1, 00:00:17 ago
Routing Descriptor Blocks:
* 12.1.1.1, from 12.1.1.1, 00:00:17 ago, via Serial1/0
Route metric is 1892352, traffic share count is 1
Total delay is 25100 microseconds, minimum bandwidth is 2048 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 2
23.1.1.2, from 23.1.1.2, 00:00:17 ago, via Serial1/1
Route metric is 5642496, traffic share count is 0
Total delay is 25100 microseconds, minimum bandwidth is 512 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 2
R2#
l
EIGRP
支持的广域网链路为
Point-to-point
和
NBMA
,
EIGRP
路由协议更新使用的带宽不能超过链路带宽的
50%
。
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#int s1/0
R2(config-if)#ip bandwidth-percent eigrp 100 20 //
限制
eigrp
使用的带宽比例为
20%
。
l
EIGRP
认证,
EIGRP
仅支持
MD5
认证,
Router
产生并检查每个
EIGRP
数据包,认证每个
Update Packet
的源。
EIGRP
允许通过
“
钥匙链
”
来管理密匙,可以拥有多个钥匙,每把钥匙是
Key-id
和
password
的一对映射,且存在生存期,按
照顺序,最先的
Key
最先被使用。
实验:
R2(config)#key chain cisco
R2(config-keychain)#key 1
R2(config-keychain-key)#key-string 123456 //
定义密码
R2(config-keychain-key)#end
R2#conf t
R2(config)#int s1/1
R2(config-if)#ip authentication key-chain eigrp 100 cisco
R2(config-if)#ip authentication mode eigrp 100 md5 //eigrp
使用
MD5
认证
R2#sh run
!
key chain cisco
key 1
key-string 7 025756085F5359
!
interface Serial1/1
bandwidth 512
ip address 23.1.1.1 255.255.255.0
ip authentication mode eigrp 100 md5
ip authentication key-chain eigrp 100 cisco
!
l
DUAL (
迷散更新算法
)
算法工作过程:
1.
跟踪邻居通告所有的路由
2.
选择无环的路径
(
主路由,备份路由
)
3.
如果主路由丢失,将使用备份路由成为主路由
4.
如果主路由丢失而没有备份路由,那么将向邻居路由器发送一个查询,并且从新计算一个新的主路由
l
影响
EIGRP
的可扩展因素
1
)对等体之间交换路由信息的数量,在没有精细汇总的情况下,可能会过多的产生(应在
2000
条路由条目以内)
2
)拓扑改变时,必须严格考虑路由器的数量
3
)拓扑深度,即传输给所有
Router
必须经过的跳数(最远两跳间的距离,
EIGRP
支持到
224
)
4
)整个网络里可选路径的数目(过强的冗余对
EIGRP
来讲是浪费)
l
EIGRP
末节
EIGRP Stub
不会向末节路由器发出查询。
当
Router
的某条路由丢失并且没有可行后继的时候,路由会进入
“
活动状态
”
,并且
Router
会发送查询给全部接口上的全部邻居(除了原来
最优路径的接口),邻居查看路由表,如果也没有丢失的路由信息,接着发送查询给他们自己的邻居,直到某台
Router
有可选路由,应答该查询,才算终止。
这样的机制会造成两个问题:
1
)不断的查询对链路开销是很大的负担,解决办法:
EIGRP Stub EIGRP
末节一般用在
Hub-and-Spoke
拓扑中,可以提高网路可靠度,减少资源利用,并简化远端
Spoke Router
配置,末节
Router
会发送一个特别的对等体信息通告给所有邻居,说自己是末节
Router
,那么收到该信息的
Router
就不会向该
Router
发送
Query
信息。
router
(
config-router
)
# eigrp stub [receive-only/connected/static/summary]
receive-only:
阻止末节
Router
发送任何路由
connected
:允许发送直连路由(可能需要重发布)
static
:允许发送静态路由(必须通过重发布)
summary
:允许发送汇总路由
默认允许
connected
和
summary
2
)如果在
3mins
内都没有邻居应答,
Router
会进入
SIA
(
Stuck in Active
)状态,重设没有应答的邻居关系(其实就是所有邻居),这就相当于为了一条路由重设邻居关系,是一种缺陷。邻居没有应答原因有多种,可能是
CPU
使用率过高或内存不足,链路劣质导致分组丢失或者故障导致单向链路。
SIA
解决方式有两种:
1.
在
12.2
版本后对
SIA
进行了处理,在以前,
RouterA
发送
Query
无应答,
RouterA
就会重启所有的邻居关系,现在,在
1.5mins
后仍无应答会发送一个
SIA
查询,如果
B
发
SIA Relay
进行响应指明自己正在查询,这样可以继续维持邻居关系。
2. SIA
的状态出现一般是网络节点出现了故障,
Graceful Shutdown
可以解决该问题。比如
RouterA Down
掉了,在
EIGRP
进程关闭的时候,会发出广播信息,通知邻接对等体这里已不可达。