EIGRP 路由汇总、默认路由.note

noteId: WEB4bd768165e8b789869e8702824198845 · 原始路径:/ALL/网络 - C模块/1-路由协议合集、路由控制、策略路由/EIGRP 动态路由协议/EIGRP 路由汇总、默认路由.note · 图片:4 · 附件待处理:0

 
内部路由AD值:90
外部路由AD值:170
汇总路由AD值:5
 
 
一、什么是路由汇总、怎么配置:
 
1、路由汇总的作用:
用一条“范围更大的前缀”来代表多条“连续的小网段路由”
 
路由汇总的作用:
(1)减少路由表规模
原来:N 条明细路由
汇总后:1 条路由➡ 路由表更小,查表更快
(2)减少路由更新流量
距离矢量协议是周期性或触发式通告
汇总后:通告条目大幅减少➡ 网络更稳定,CPU/带宽占用更低
(3)提高网络稳定性
明细链路 flap(抖动)
汇总路由不随单条子网变化➡ 上游设备感知不到细节变化
(4)隐藏内部拓扑(非常重要)
上游只看到“我这有一块网段”
不知道你内部有多少条链路
 
2、自动汇总/手工汇总:
 
1)自动汇总:
RIP、EIGRP 默认都开启自动汇总,但在真实网络/比赛中:一定要关
 
# 自动汇总:
按照传统主类网络边界来汇总:
A类:1.0.0.0 - 126.0.0.0 /8
B类:128.0.0.0 - 191.255.0.0 /16
C类:192.0.0.0 - 223.255.255.0 /24
 
# 当路由更新要从一个“主类网络”发到另一个“主类网络”时,路由器会把本主类下的明细前缀,自动汇总成该主类的默认掩码前缀再发出去。
举个例子,假设内部有这些路由,触发了自动汇总:
10.1.1.0/24
10.1.2.0/24
10.2.3.0/24
当 EIGRP/RIP 的更新从一个接口发出去,而该接口所在网络不是 10.(比如发到 192.168. 那边)时,自动汇总会把它们发成(汇总成主类网络):
10.0.0.0/8
 
# 为什么自动汇总在现代网络里几乎一定是错的
核心原因:现代网络几乎都是 CIDR/VLSM + 不连续主类网(discontiguous networks)
现代网络到处都是 /30 /31 /26 /23 这种可变掩码。
但 auto-summary 的逻辑是 按 A/B/C 默认掩码,它会把你精心划分的子网“粗暴放大”。
结果:
你只想汇总成 10.1.1.0/22,它却汇总成 10.0.0.0/8
 
什么是不连续的主类网络:
# 在两个相同的主类网络之间有着另一个主类网络作分隔,例如:
Site A: 10.1.0.0/16
   |      (中间是 192.168.0.0/16)
Site B: 10.2.0.0/16
 
如果开启 auto-summary:
Site A 往外宣告:10.0.0.0/8
Site B 往外也宣告:10.0.0.0/8
中间的路由器会觉得:“10.0.0.0/8 两边都有,那我就选一边(按度量/ECMP)”
然后就会发生:去 10.2.x 的流量,可能被送到 Site A,Site A 根本没有 10.2.x 明细路由,要么黑洞,要么绕路,要么环路
如果将中间的 192.168.0.0/16 改为 10.3.0.0/16,此时,子网就是连续的,就不会进行自动汇总了
 
2)手工汇总:
 
·当汇总路由本地的所有明细路由都消失时,汇总路由也会从路由表中消失(因为汇总路由必须有路由依据)
 
手工汇总相比自动汇总,能够自主选择汇总的范围、前缀,以及在哪个路由器,哪个接口对外公布
 
# 配置手工汇总:
## 例如,要汇总这些路由:
10.1.20.0/24
10.1.21.0/24
10.1.22.0/24
10.1.23.0/24
 
router eigrp 90
 no auto-summary    //关闭自动汇总
 
interface g0/0
 # ip summary-address eigrp <ASN> <summary-network> <summary-mask>
 ip summary-address eigrp 90 10.1.20.0 255.255.252.0
 
# 可以这样算:
打开 calc,点到程序员,取最小和最大的路由,这里是 .20 和 .23
然后在计算器中算出 20的二进制是:0001 0100
23的二进制是:0001 0111
一模一样的就是网络位了:000101 00,这里有6个网络位,加上前面都一样的16个网络位(10.1.),掩码就是 /22
如果要换算成255.255.... ,在计算器中,点到二进制这里,有多少个网络位,就输入多少个1,剩余只用0来代替(最多只输入8位),这样就能得出这一段的掩码是 252
要计算该网段的网络号,就直接将这里的网络位放到计算器中即可:000101 00(因为计算器不能输入0开头,所以只在二进制那里需要输入 10100即可),这样就能得出网络号是 20
换算成二进制:
 
 
 
换算成掩码:
 
换算成网络号:
(这里输入的是10100,前面的0是自动补的)
 
 
 
3)为什么路由汇总下一跳是 Null0:
只有在本机进行路由汇总时,下一跳才会是Null0,当在 EIGRP 上做路由汇总,无论是 ip summary-address eigrp ... (手工汇总),还是 auto-summary (自动汇总)触发的汇总行为,路由器都会将该汇总路由的下一跳设置成 Null0:
summary-prefix → Null0
例如汇总出 10.0.0.0/8,会看到下一跳为 Null0:
D 10.0.0.0/8 is a summary, Null0
 
# Null0是什么:
Null0 是一个“黑洞接口”,发到 Null0 的包会被直接丢弃(等价于 /dev/null)
 
# 下一跳是Null0的作用:
Null0 是为了让“汇总覆盖但本机不可达的流量”被丢弃,避免环路和不可控绕路。
核心逻辑:
Null0其实只是一个兜底,正常工作时我将这条汇总路由发给其他路由器(在其他路由器的路由表中,这条路由的下一跳就是我,而不是Null0),其他路由器将属于该汇总路由范围的路由发给我,我再按照路由表再查明细,然后转发;正常工作时本地不使用这条 Null0路由,但是一旦其他路由器发了一个属于该汇总的网络的路由,但是我本地又没有它属于的明细,或者我汇总的路由,其中一条down掉了,路由消失了,就会触发该 Null0路由,将流量发到 Null0,然后被丢弃
如果没有 Null0,这个包可能会被“默认路由/其他路由”转发出去,然后在网络里兜圈子(环路)或者跑到不该去的地方(更隐蔽的黑洞)
 
简而言之,这条汇总路由,是发给其他路由器给其他路由器使用的,本地查询转发仍然使用的是明细路由,只有当碰到本地不存在的明细路由时(属于该汇总路由范围的),为了避免它通过默认路由转走,最终为了兜底才使用这条 Null0的路由将其丢弃。
 
 
 
·leak-map(可用于排除路由汇总中的某条路由):
# 可以用于排除汇总中 某个或某几个精确的地址/网段:
例如,我们将
10.1.20.0/24
10.1.21.0/24
10.1.23.0/24
汇总成:10.1.20.0/22,但是我并不想将 10.1.22.0/24汇总出去,就可以使用 leak-map 进行限制,这样,对邻居发送路由时,就会同时发送 10.1.20.0/22 这条汇总路由和 10.1.22.0/24 这条明细路由。
 
# 配置:
access-list 1 permit 10.1.22.0 0.0.0.255
route-map DENY_SUMMARY permit 10
 match ip address 1
interface g0/1
 ip summary-address eigrp 90 10.1.20.0 255.255.252.0 leak-map DENY_SUMMARY
 
 
 
二、默认路由的四种配置方式:
1、重分发静态路由/重分发其他路由:
ip route 0.0.0.0 0.0.0.0 <next-hop>
router eigrp 90
 redistribute static
 
2、通过Network的方式通告 0.0.0.0/0 路由:
ip route 0.0.0.0 0.0.0.0 <next-hop>
router eigrp 90
 network 0.0.0.0
 或:
 network 0.0.0.0 0.0.0.0
 
3、使用汇总的方式汇总出 0.0.0.0/0 路由(仅对指定的接口生效):
## 但是当EIGRP中没有任何明细路由时,这条路由也会消失(汇总路由特性)
interface g0/0
 ip summary-address eigrp 90 0.0.0.0 0.0.0.0
 
4、使用 ip default-network 方式将指定的主类网络标记为默认路由(不推荐使用):
# 它不会在本地或邻居生成一条默认路由(0.0.0.0/0),但是会有默认路由的效果,让邻居在查不到更精确路由时,指向这条被标记的路由
# 假设:ip default-network 10.0.0.0;等同于告诉邻居,如果你能到达 10.0.0.0 这个 主类网络,那么去它的下一跳 = 默认出口。
 
# 配置:
ip route 10.0.0.0 255.0.0.0 Null0
ip default-network 10.0.0.0
router eigrp 90
 network 10.0.0.0
 或:
 network 10.0.0.0 255.0.0.0
 
# 查看:
show ip route:能够看到一条 ‘Gateway of last resort is 0.0.0.0 to network 10.0.0.0’
并且路由表中,该路由有 * :
C* 10.0.0.0/8 is directly connected, Null0
或:
S* 10.0.0.0/8 via ...
 
## 假设同时存在 0.0.0.0/0 和 ip default-network 设置的路由,那么邻居会先使用 0.0.0.0/0