免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5668 | 回复: 9
打印 上一主题 下一主题

[新原创]Cisco网络专家教程Phase2-路由技术教程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-05-12 12:34 |只看该作者 |倒序浏览
下载地址:http://www.show-tym.com/bbs/zboard.php?id=works
省略了BGP和NAT的内容,原因是我认为BSCI里讲的比较少,推荐看Routing TCP/IP Vol.2


Building Scalable Cisco Internetworks

Preface


Noco#sh start
!
Written by 大写的J(红头发,绯瞳) a.k.a Ca.J
Description请保留作者信息
Homepage http://www.show-tym.com/
Apr.12th.2004
!


Module1 Advanced IP Addressing


Scalable Network Design

一般说来在规划网络的时候要考虑到一点,即可扩展性网络设计一般是把它设计为层次化的,一般分为以下三层:
Access Layer(访问层):用户接入到网络中的接入点
Distribution Layer(分发层):该层是访问层用户访问网络资源的一个汇聚点
Core Layer(核心层):负责在各个分割的网络之间进行高速有效的数据传输

网络层次化的设计可以基于以下两种方法来划分:
1.按功能,企业的不同部门来划分
2.按地理位置来划分
但是记得不管你按何种方式来设计你的网络,三层元素要考虑进去:
1.核心层:需要大带宽,冗余连接
2.访问层:用户接入到网络的接入点.地址的分发(比如DNCP),VLAN的设计,防火墙,ACL等都在这层考虑进去
3.分发层:访问层设备的汇聚点

看看核心层的两种设计,如下:
1.全互连(fully meshed)的方式,优点是提供冗余连接,但是随着网络的扩展,成本会越来越高
2.星形设计方式(hub-and-spoke),让其他设备都连接到相对独立的中心设备上去.这样做节省了一些开销,但是冗余度上比全互连的方式要差

Benefits of Good Network Design

先来看看RFC1918定义的私有IP地址范围:
A类:10.0.0.0到10.255.255.255
B类:172.16.0.0到172.31.255.255
C类:192.168.0.0到192.168.255.255

在注意设计一个好的网络的IP地址规划的时候要注意以下几点:
1.可扩展性(scalability)
2.可预测性(predictability)
3.灵活性(flexibility)

Benefits of an Optimized IP-Addressing Plan

层次化地址规划的好处:
1.减少了路由表(routing table)的条目(entry)
2.可以有效的对地址进行分配

可以使用路由汇总(route summarization)来减少路由表的条目,路由汇总使得多个IP地址是集合看上去就像是一个IP地址从而减少在路由器中的条目.这样就可以减轻路由器的CPU和内存的负载,提供更为有效的路由服务,加快了网络收敛(convergence)的速度,简化了排错(troubleshooting)的过程

Hierarchical Addressing Using Variable-Length Subnet Masks

变长子网掩码(Variable-Length Subnet Masks,VLSM)的出现是打破传统的以类(class)为标准的地址划分方法,是为了缓解IP地址紧缺而产生的

先来看看前缀(prefix)的概念:假设给你个地址范围192.168.1.64到192.168.1.79.前3个8位位组(octet)是一样的,我们来看看组后个8位位组,写成2进制,如下:
64:0100 0000
65:0100 0001
66:0100 0010
……………..
77:0100 1101
78:0100 1110
79:0100 1111
注意它们的共通点:前4位是一样的,加上前3个8位位组的24位就等于28位,所以我们就可以认定这个网段的前缀是/28(即255.255.255.240).所以在这个例子里,主机位就只有4位

来看下VLSM的应用:
假如一个公司使用的是172.16.0.0/16的地址空间.给公司的分部A分配172.16.12.0/22到172.16.14.255/22的地址块.D需要2个VLAN,然后每个VLAN容纳200个用户.A,B和C连接3个以太网,分别用1个24口的交换机相连(不考虑级联等因素)
先从需要最大用户的入手:要让1个子网容纳200个用户,即主机位应该保留为8位(254台主机,假如主机位是9位的话可以容纳510台主机,但是造成了地址空间的浪费).所以前缀为/24,从172.16.12.0/24开始分配起走.如下图:

然后分配A,B和C的地址:A连接一个24口的交换机,即需要24个主机地址,那么主机位应该保留为5位(可以容纳30台主机),即前缀为/27(255.255.255.224),因为172.16.12.0/24和172.16.13.0/24已经被D全部占用,所以从172.16.14.0/27开始分配.如下图:

最后来给A和D,B和D,C和D之间分配IP地址.由于它们之间是点对点连接,所以主机位只保留2位,即前缀是/30就可以了.除掉掉2个VLAN和3个LAN占用了的地址,还剩下下面几个地址块:
172.16.14.96/27
172.16.14.128/27
172.16.14.160/27
172.16.14.192/27
172.16.14.224/27
我们从172.16.14.224/27来进行划分(一般选择最后1个地址块进行划分).如下图:


Route Summarization and Classless Interdomain Rouring

我们先来看下什么是路由汇总和无类域间路由(Classless Interdomain Rouring,CIDR),它是为了缓解IP地址短缺,减小路由表的体积,打破传统的以类划分网络的一种技术,如下图:

4个C类地址的子网经过D的路由汇总成一条192.16.12.0/22,注意这个192.16.12.0/22既不是A类也不是B类更不是C类,可以理解成超网(supernetting),即无类的概念

Understanding IP Version 6

IPv6是IPv4的增强版本,和IPv4相比,有很多优点包括:
1.支持更大的地址空间
2. IPv6的头部格式比IPv4的头部更为简化,IPv6的头部可以根据需要进行扩展(简单并不代表短,注意不要混淆)
3.更高的安全性和能很好的和移动IP相互兼容
4.能够平滑过渡IPv4到IPv6

移动IP是IETF标准,使得移动设备在不中断现有连接的情况下进行迁移.这一特征是内建在IPv6中的,但是IPv4就不是.IP Sec是IETF开发的标准,用于增强IP网络安全性,这一特性对IPv6是必须的

IPv6 Addressing

IPv4是32位长,4字节;IPv6是128位长,16字节;IPv4支持的地址最多达到42亿,IPv6支持的地址多达3.4乘以10的38次方.增加IP地址的位长即增加了IP包头部信息的大小

IPv6的表示方法:
1.X:X:X:X:X:X:X:X(每个X代表16位的16进制数字).不区分大小写
2.排头的0可省略,比如09C0就可以写成9C0,0000可以写成0
3.连续为0的字段可以以::来代替,但是整个地址中::只能出现一次.比如FF01:0:0:0:0:0:0:1就可以简写成FF01::1
来看几个简写的例子:
0:0:0:0:0:0:0:0可以写成::
0:0:0:0:0:0:0:0可以写成::1

Multicast Use

IPv4中的广播(broadcast)可以导致网络性能的下降甚至广播风暴(broadcast storm).在IPv6中,就不存在广播这一概念了,取而代之的是组播(multicast)和任意播(anycast)组播的接受对象是一组成员,是个群体.任意播是多个设备共享一个地址.分配IPv6单播(unicast)地址给拥有相同功用的一些设备.发送方发送一个以任意播为目标地址的包,当路由器接受到这个包以后,就转发给具有这个地址的离它最近的设备.单播地址用来分配任意播地址.对于那些没有配备任意播的的地址就是单播地址;但是当一个单播地址分配给不止一个接口的时候,单播地址就成了任意播地址

Autoconfiguration

来看下IPv6的自动配置:当本地链路的路由器发送网络类型信息给所有节点的时候.支持IPv6的主机就把它自己64位的链路层地址附着在64位的前缀自动配置成128位长的地址,保证地址的唯一性.自动配置启用即插即用(Plug and Play)

IPv6 Renumbering

IPv6的重编号:路由器发送组播数据包,其中数据包中包含2个前缀,一个是拥有比较短的生存期的前缀,还有一个是新的拥有正常时间的前缀.通知网络上的节点用完旧的前缀后换成新的前缀,这样就能进行平滑的前缀过渡

IPv4 to IPv6 Transitioning

两种转换的方式:
1.双栈(dual stack)
2.IPv6到IPv4(6to4)的隧道(tunnel)
还有一种是利用NAT来翻译46地址

来看看双栈配置的例子,如下:
Router#sh run
(略)
!
interface Ethernet0
ip address 192.168.99.1 255.255.255.0
ipv6 address 3ffe:b00:c18:1::3/127
!
(略)

隧道技术是在双栈路由器上,将IPv6包封装在IPv4包中,然后经过IPv4网络传递到另外一端的双栈路由器上去,然后再由它解封装
要注意的是对采用了隧道技术的网络进行排错的话比较复杂,要记住的是这只是一个过渡方案,不是最终的体系结构对隧道进行配置,需要满足以下2个条件:
1.在连接网络的两端采用双栈路由器
2.在双栈路由器的接口同时配置IPv4和IPv6的地址


Module2 Routing Principles


Principles of Static Routing

我们来复习下配置静态路由的语法,在全局配置模式下使用:
ip route prefix mask {next-hop address|interface} [distance] [permanent]
看下各个参数的含义:
prefix mask:要加进路由表中去的远程网络及其子网掩码
next-hop address:下一跳地址
interface:到达目标网络的本地路由器的出口
distance:管理距离(AD),可选
permanent:路由条目永久保存在路由表中,即使路由器的接口down掉了
注意,一般只在点对点的连接中使用interface选项,否则应该使用next-hop address选项

使用静态路由的好很多,比如可以对网络进行完全的掌控,不会占用额外的路由器CPU和内存资源以及网络带宽.适用于小型网络中

如下就是一个静态路由的例子:

如图,对于A,只需要在它上面配置ip route 10.2.0.0 255.255.0.0 s0就可以了,这里采用的就不是next-hop address而是采用本地的出口接口(因为是点到点是连接);当然也可以这样配置成ip route 10.2.0.0 255.255.0.0 10.1.1.1,这里采用的就是next-hop address
同样对于B的配置就可以使用ip route 172.16.1.0 255.255.255.0 s0或者ip route 172.16.1.0 255.255.255.0 10.1.1.2

默认路由(default route):一般使用在stub网络中,stub网络是只有1条出口路径的网络.使用默认路由来发送那些目标网络没有包含在路由表中的数据包或者所有的数据包.语法是把静态路由中的prefix mask写成0.0.0.0和0.0.0.0

Principles of Dynamic Routing

动态路由允许路由器自动交换路由信息从而了解整个网络的信息.动态路由的好处是:使用中型和大型网络,能够根据网络拓扑的变化自动更改路由表的信息,避免了人工手动更改;但是带来的缺点就是占用路由器额外的CPU和内存资源以及网络带宽

Principles of On-Demand Routing

ODR是Cisco私有的,主要用在如下的一种星型环境中:

有的时候你会觉得假如你使用静态路由,当网络拓扑发生变化以后,就得手动修改路由表;但是你又不想使用动态路由,因为那样占用了你额外的一些硬件资源和网络带宽.在如上图的环境中就可以使用ODR.ODR使用Cisco发现协议(CDP)携带网络信息.ODR的好处是最大可能的减少了网络硬件和资源的负载,同时又减少了手动修改的工作量.但是ODR只使用于hub-and-spoke这样的拓扑结构中.如上图,AC,D和E就是spoke router,或者叫做stub router,B作为中心,叫做hub router.当配置了ODR以后,spoke router使用CDP发送IP前缀信息到hub router,spoke router发送IP前缀信息给所有和它直接相连的网络.ODR报告子网掩那子信息,所以ODR支持VLSM.然后hub router依次发送指向到它自己的默认路由给周边的spoke router

严格说来ODR不算是真正的路由协议,因为它交换的信息仅仅局限在IP前缀信息和默认路由上,ODR没有包含度(metric)的信息.ODR使用跳数(hop count)作为度

配置ODR只需要在hub router上的全局配置模式下起用router odr命令,不需要在stub router上配置IP路由信息,但是必须在接口上开启CDP功能

对ODR的验证,如下:
B#show ip route
(略)
o 172.16.1.0/24 [160/1] via 10.1.1.2, 00:00:23, Serial0
o 172.16.2.0/24 [160/1] via 10.2.2.2, 00:00:03, Serial1
o 172.16.3.0/24 [160/1] via 10.3.3.2, 00:00:16, Serial2
o 172.16.4.0/24 [160/1] via 10.4.4.2, 00:00:45, Serial3
(略)
注意o代表ODR,管理距离为160

Classful Routing Protocol Concept

基于类的路由协议最大的特点是在路由更新(routing update)中不包含子网掩码的信息.由于不知道子网掩码的信息,当一个基于类的路由器接受或发送,路由器会假设认为网络所使用的子网掩码是包含进路由更新中的,而且这些假设是基于IP的类.在接收到路由更新以后,运行了基于类的路由协议的路由器就会根据以下其中一条来决定网络路径:
1.如果路由更新信息包含相同的主网络号和接收更新的接口配置相同的话,路由器就应用接收更新的接口的那个子网掩码
2.如果路由更新信息包含相同的主网络号和接收更新的接口配置不相同的话,路由器将应用默认的子网掩码:
A类:255.0.0.0
B类:255.255.0.0
C类:255.255.255.0

当使用基于类的路由协议的时候,所有的网络主网络号必须相同,而且子网必须连续.否则路由器将对子网信息做出错误的判断.运行了基于类的路由协议会在网络的边界(boundary)做自动的路由汇总

常见的基于类的路由协议有:IGRP和RIPv1

Network Summarization in Classful Routing

来看看网络汇总在边界的发生,如下图:

B作为网络的分界,从C到A,B将两条条目(172.16.1.0和172.16.2.0)的信息汇总成一条(172.16.0.0);从A到C,B将两条条目(10.1.0.0和10.2.0.0)的信息汇总成一条(10.0.0.0).在基于类的路由协议里,这样的汇总是自动进行的,不需要手动配置.前提是子网掩码等长,子网连续

假如说子网不连续,如下图:

如图中的表所示,D给C传送一条汇总路由10.3.0.0;B传送条汇总路由10.2.0.0给C.对于C而言它就会做出错误的判断,它区分不了10.2.0.0和10.3.0.0分别在哪边.所以说做基于类的路由协议的路由汇总,子网必须连续.但是这样一来,会造成地址空间的浪费(和VLSM相比)

Examining a Classful Routing Table

假设我们使用show ip route命令,产生如下输出:
J# show ip route
(略)
Gateway of last resort is 0.0.0.0 to network 0.0.0.0     
10.0.0.0/24 is subnetted, 3 subnets,
R    10.1.1.0/24 [120/1] via 10.1.2.2, 00:00:05, Ethernet0
C    10.1.2.0/24 is directly connected, Ethernet0
R    10.1.3.0/24 [120/2] via 10.1.2.2, 00:00:05, Ethernet0
R    192.168.24.0/24 [120/2] via 10.1.2.2, 00:00:16, Ethernet0
R    172.16.0.0/16 [120/3] via 10.1.2.2, 00:00:16, Ethernet0
R*   0.0.0.0/0 [120/3] via 10.1.2.2, 00:00:05, Ethernet0
(略)
如上,可以看出10.1.2.0/24是直接相连,其他的都是通过RIP学习到的.现在我们假设有以下几个目的地的包,它们对于上面的输出会如何进行匹配:
192.168.24.3
172.16.5.1
10.1.2.7
200.100.50.0
10.2.2.2
根据show ip route的输出可以看出,到达192.168.24.3的包会跟第四条(92.168.24.0/24)相匹配,(虽然最后一条也可以,但是匹配原则是匹配掩码最长的那条);接下来,172.16.5.1和第五条(172.16.0.0/16)匹配;10.1.2.7和第二条(10.1.2.0)相互匹配;200.100.50.0和前五条都不匹配,和第六条默认路由(0.0.0.0/0)相互匹配;10.2.2.2虽然和前三条的第一个8位位组匹配,但是后面3个8位位组不匹配,所以它将被丢弃而不会采用默认路由

如果你在全局模式下使用了ip classless命令的话,目的地是10.2.2.2的包就不会被丢弃,就会采用默认路由.ip classless命令在Cisco IOS版本12.0和12.0以后默认打开的,无须手动打开

Classless Routing Protocol Concepts

基于无类概念的路由协议可以说是第二代路由协议,相比基于类的路由协议,它可以解决地址空间过于浪费的问题.这类协议的例子有RIPv2,OSPF,EIGRP,IS-IS,BGPv4.使用无类的路由协议,拥有相同主网络号的不同子网就可以使用不同的子网掩码(VLSM).假如在路由表中到达目的网络的匹配条目不止一条,将会选择子网掩码长的那条进行匹配.比如假如有两条条目172.16.0.0/16和172.16.5.0/24,如果目的地是172.16.5.99的包将会和172.16.5.0/24进行匹配而不是和172.16.0.0/16进行匹配

还有一点是无类的路由协议的自动汇总可以手动关闭,这样的自动汇总会影响不连续的子网的使用而造成错误的汇总路由信息(这点和基于类的路由协议在不连续子网的情况下的自动汇总所带来的问题是一样的)

Automatic Network-Boundary Summarization Using RIPv2 and EIGRP

基于无类的路由协议一般不会对所有的子网进行宣告(advertise).默认的,比如像EIGRP和RIPv2会像基于类的路由协议那样,在网络的边界进行自动汇总,这样就使得它们能和它们的之前的RIPv1和IGRP很好的兼容但是和之前的RIPv1和IGRP不同的是,你可以手动关闭自动汇总.在配置相关路由的时候只需要输入no auto-summary就可以了.这个命令在配置OSPF和IS-IS的时候是不必输入的,因为默认OSPF和IS-IS不会进行自动汇总

在RIPv2中关闭自动汇总,如下:
Router(config)#router rip
Router(config-router)#version 2
Router(config-router)#no auto-summary
version 2命令是启用RIPv2版本

Characteristics of RIP Version 1

RIPv1的特点包括:
1.使用跳数(hop count)作为度来决定最佳路径
2.允许最大跳数是15跳
3.默认是每30秒广播路由更新(实际环境中并不是设定的固定为30秒,而是25秒到30秒之间的随机时间,防止两个

路由器发送同时更新产生冲突)
4.最多支持6条等价链路的负载均衡,默认是4条
5.是基于类的路由协议,不支持VLSM
6.不支持验证(authentication)

Characteristics and Configuration of RIPv2

RIPv2比RIPv1增强的特点包括:
1.基于无类概念的路由协议
2.支持VLSM
3.可以人工设定是否进行路由汇总
4.使用多播来代替RIPv1中的广播
5.支持明文或MD5加密验证
RIPv2使用多播地址224.0.0.9来更新路由信息

RIPv2的配置命令步骤如下:
1.启动RIP路由协议 :
Router(config)#router rip
2.启动版本2 :
Router(config-router)#version 2
3.设置进行宣告的网络号
Router(config-router)#network network-number
一默认Cisco IOS会接收版本1和2的更新包, ;但是只发送版本1的包.要设置成只发送和接收一种版本的包,使用version {1|2}命令即可

一些其他的命令,如下 :
Router(config-if)#ip rip send | receive version {1|2} or 1 2
在接口模式下设置摸个接口接受和发送不同版本的包或同时接收发送版本1和2的包
Router(config-if)#ip summary-address rip network mask
如果之前在全局配置模式下使用no auto-summary关闭了自动汇总的话,要在某个接口做人工汇总的话就用上面这个命令

来看一个例子,如下图:

如图所显示的是一个RIPv1和RIPv2协同工作的网络.A运行RIPv2,C运行RIPv1,B同时运行RIPv1和RIPv2
对C的配置,如下:
C(config)#router rip
C(config-router)#version 2
C(config-router)#network 10.0.0.0
C(config-router)# network 192.168.1.0.
对B配置,如下:
B(config)#router rip
B(config-router)#version 2
B(config-router)#network 10.0.0.0
光配置这些是不够的,还要对B做进一步配置,如下:
B(config)#int s3
B(config-if)#ip rip send version 1
B(config-if)#ip rip receive version 1
如上,我们在s3口配置了接收和发送RIPv1的更新,因为RIPv2是作为主要运做的协议,C运行的是RIPv1,所以要让B和C进行正确的信息交换的话,就要在B的s3口配置上述命令
对A进行配置,如下:
A(config)#router rip
A(config-router)#version 2
A(config-router)#network 10.0.0.0
A(config-router)#network 172.16.0.0
A(config-router)#no auto-summary
如上我们关闭了自动汇总,当然这样是不够的,还应该做如下配置进行手动汇总:
A(config)#int s2
A(config-if)#ip summary-address rip 172.16.1.0 255.255.255.0
这样做的目的是允许把172.16.1.0/24的信息发送给B,因为默认发送给B的信息是172.16.0.0/16

Administrative Distance

看看Cisco制定的各个路由协议的管理距离(AD),如下:
1.直接相连:0
2.静态路由:1
3.EIGRP汇总路由(summary route):5
4.外部BGP:20
5.内部EIGRP:90
6:IGRP:100
7.OSPF:110
8.IS-IS:115
9.RIP(v1,v2):120
10.外部EIGRP:170
11.内部BGP:200

Floating Status Route

因为静态路由的AD比一些动态路由协议的AD高,假如你又想优先采用动态路由,而让静态路由作为备份路由的话,就可以在配置静态路由的时候指定一个AD值,这个AD值要比你采用的动态路由协议要高才行.所以一般当动态路由正常的时候,你在路由表里是看不到这条静态路由的;当动态路由出问题的时候,静态路由开始生效,于是出现在路由表里,这样的静态路由就叫做浮动静态路由(floating static route)

来看一个例子,如下图:

对A的配置如下:
A(config)#ip route 10.0.0.0 255.0.0.0 172.16.1.2 100
A(config)#router eigrp 100
A(config-router)#network 192.168.1.0
A(config-router)#network 172.17.0.0
如上,我们对静态路由的AD指定为100,EIGRP的AD为90,所以优先采用EIGRP
对B的配置和A类似,如下:
B(config)#ip route 172.17.0.0 255.255.0.0 172.16.1.1 100
B(config)#router eigrp 100
B(config-router)#network 10.0.0.0
B(config-router)#network 192.168.1.0
注意,不能在ISDN上配置EIGRP,因为ISDN一般作为备份连接,如果在ISDN上配置了EIGRP的话,那ISDN连接将永久保持,就失去了作为备份连接的意义了

Criteria for Inserting Routes in the IP Routing Table

路由器决定最佳路径要参考以下几个标准,如下:
1.有效的下一跳IP地址
2.最佳的度
3.管理距离
4.选择前缀匹配最长的路由

Protocols, Ports, and Reliability

各个路由协议的协议号,端口号和可靠性的比较,如下图:

IGRP,EIGRP和OSPF是OSI参考模型中传输层的协议,都通过IP包进行数据交换,IGRP使用无连接特性,尽最大努力进行传送;EIGRP和OSPF使用一一确认的窗口技术(即发送出一个包要等待该包的确认后再发送下一个包).IGRP的协议号是9,EIGRP的协议号是88;OSPF的协议号是89RIP和BGP都是OSI参考模型应用层的协议.RIP使用UDP作为它的传输协议,不可靠,只是尽力传送,使用UDP端口520.RIPv1使用广播传输;RIPv2使用多播传输
BGP使用TCP作为它的传输协议,最大特点是可靠,使用了窗口技术.IS-IS是OSI参考模型中网络层的协议,它不使用IP作为它的传输协议.IS-IS包是直接封装在OSI参考模型中的数据链路层中的

Routing Protocol Comparison

各种路由协议的比较如下图:

BGP严格的来说是路径矢量(path-vector)路由协议

Module3 Configuring EIGRP


EIGRP Features

EIGRP是Cisco的私有路由协议,它综合了距离矢量和链路状态2者的优点,它的特点包括:
1.快速收敛:EIGRP使用Diffusing Update算法(DUAL)来实现快速收敛.路由器使用EIGRP来存储所有到达目的地的备份路由,以便进行快速切换.如果没有合适的或备份路由在本地路由表中的话.路由器向它的邻居进行查询来选择一条备份路由
2.减少带宽占用:EIGRP不作周期性的更新,它只在路由的路径和度发生变化以后做部分更新.当路径信息改变以后,DUAL只发送那条路由信息改变了的更新,而不是发送整个路由表.和更新传输到一个区域内的所有路由器上的链路状态路由协议相比,DUAL只发送更新给需要该更新信息的路由器
3.支持多种网络层协议:EIGRP通过使用protocol-dependent modules(PDMs),可以支持ApplleTalk,IP和Novell Netware等协议
4.无缝连接数据链路层协议和拓扑结构:EIGRP不要求对OSI参考模型的层2协议做特别是配置.不像OSPF,OSPF对不同的层2协议要做不同配置,比如以太网和帧中继总之,EIGRP能够有效的工作在LAN和WAN中,而且EIGRP保证网络不会产生环路(loop-free);而且配置起来很简单;支持VLSM;它使用多播和单播,不使用广播,这样做节约了带宽;它使用和IGRP一样的度的算法,但是是32位长的;它可以做非等价的路径的负载平衡

EIGRP Databases

运行了EIGRP的路由器维持3张表:neighbor table,topology table和routing table.其中neighbor table保存了和路由器建立了邻居关系的,直接相连的路由器;topology table包含路由器学习到的到达目的地的所有路由条目,其过程如下:
1.neighbor table中的每个邻居都转发1份IP路由表的拷贝给它们的邻居
2.然后每个邻居把从它们自己的邻居处得来的路由表存储在自己的EIGRP拓扑数据库中
3.EIGRP检查拓扑数据库,然后选择出一条到达目的地的最佳路由
4.EIGRP从拓扑数据库中选择到达目的地的最佳的successor routes,然后把它们放到路由表里.路由器为每种协议(比如IP,IPX)各自保持1张单独是路由表

Feasible Distance vs. Advertised Distance

为了决定到达目的地的最佳路由(successor)和备份路由(feasible successor),EIGRP使用下面2个参数:
1.advertised distance:EIGRP邻居到达目标网络的度
2.feasible distance:到达邻居路由器的度加上advertised distance(即邻居到达目标网络的度)
路由器比较所有的FD,然后选择FD值最低的放进IP路由表

来看一个例子,如下图:

如图显示的是C的EIGRP拓扑数据库,里面包含了邻居A和B的信息.A和B都知道如何到达网络10.1.1.0/24.从图中我们看见A到达目标网络的advertised distance是1000;B是1500.FD分别是2000和2500.C经过比较,将FD值低的,这里就是A的条目,作为到达网络10.1.1.0/24的最佳路径

EIGRP Metric Calculation

EIGRP选择一条主路由(最佳路由)和一条备份路由放在topology table(EIGRP到目的地支持最多6条链路).它支持几种路由类型:内部,外部(非EIGRP)和汇总路由.EIGRP使用混合度
EIGRP度的5个标准如下:
1.带宽:10的7次方除以源和目标之间最低的带宽乘以256
2.延迟(delay):接口的累积延迟乘以256,单位是微秒
以上是默认的2个,下面是可选的3个标准:
3.可靠性(reliability):根据keepalive而定的源和目的之间最不可靠的可靠度的值
4.负载(loading):根据包速率和接口配置带宽而定的源和目的之间最不差的负载的值
5.最大传输单元(MTU):路径中最小的MTU.MTU包含在EIGRP的路由更新里,但是一般不参与EIGRP度的运算

EIGRP使用DUAL来决定到达目的地的最佳路由(successor).当最佳路由出问题的时候,EIGRP不使用holddown timer而立即使用备份路由(feasible successor),这样就使得EIGRP可以进行快速收敛

看看EIGRP计算度的公式,K是常量,公式如下:
metric=[K1*bandwidth+(K2*bandwidth)/(256–load)+K3*delay]*[K5/(reliability+K4)]
默认:K1=1,K2=0,K3=1,K4=0,K5=0
这样就得到默认的度的简化计算公式,如下:
metric=bandwidth+delay
注意,不推荐修改K值.K值通过EIGRP的hello包运载.如果两个路由器的K值不匹配的话它们是不会形成邻居关系的

EIGRP Metrics Backward Compatible to IGRP

EIGRP的度和IGRP的度能够很好的进行兼容.IGRP的度是以24位的格式,而EIGRP是32位的格式.它们之间的关系是EIGRP的度是256倍于IGRP的度.也就是说假如IGRP的度为1000的话,换算成EIGRP的度为256000

来看一个EIGRP度的计算的例子,如下图:

注意图上各个路由器之间的链路带宽,先看看A经过B,C到达D之间的度的计算,AB之间,BC之间为T1线路,CD之间带宽为64kbps,计算如下:
带宽=10,000,000/64*256=40,000,000
累积延迟=(2000+2000+2000)*256=1,536,000
所以度=带宽+累积延迟=41,536,000

EIGRP Packets

EIGRP的5种包的类型,如下:
1.hello包:路由器使用hello包来发现邻居,采用多播的方式
2.update包:采用单播或多播的方式发送.更新发生在路由器启动,拓扑或度发生变化,和路由状态的迁移(主动到被动)
3.query包:当路由器开始进行路由计算和没有FD的时候,它就发送给邻居一个可靠的查询包来询问是否有到达目的地的FD.查询包通常以多播的方式发送
4.reply包:以单播的方式发回给发出查询包的路由起,作为应答
5.acknowledge(ACK)包:ACK包是采用单播的hello包,包含非0的确认数字.update包,query包和reply包均是可靠发送,所以它们都需要确认;而hello包和ACK包就不需要确认

EIGRP Hello Packets

当你在路由器的接口配置了EIGRP以后,路由器会周期性的以组多播的方式向外发送hello包.多播地址是224.0.0.10.当和它在1个AS里的其他运行了EIGRP的路由器接收到hello包以后,就会和它形成邻居关系.不在1个AS里,而且度的计算方式不一样(即K值不同),是不会形成邻居关系的

EIGRP Timers

hello包在不同的介质上发送间隔是不一样的,如下:
1.在以下介质中是以每5秒进行发送:广播型介质,比如以太网,令牌环(Token Ring)和分布式光纤接口(FDDI);在点到点类型的串行链路中比如PPP和HDLC,还有帧中继和ATM;带宽大于T1线路的多点线路,比如交换式多兆位数据服务(SMDS),帧中继,ATM和ISDN PRI
2.在以下类型中间隔时间是60秒:带宽小于T1线路的多点线路,比如ISDN BRI,帧中继,SMDS,ATM和X.25当配置EIGRP的时候,EIGRP进程动态发现和它直接相连的运行了EIGRP的路由器.每个路由器在它自己的neighbor table中都保持的有邻居的信息,包括到达邻居路由器的地址和接口.还保持的有hold time.hold time是3倍于hello time

EIGRP在低速链路上发送hello包的频率较低,因为hello包会占用额外的带宽.不过可以在接口配置模式对默认时间进行修改,使用ip hello-interval eigrp {AS-number} {seconds}命令;修改hold time的时间的命令也是在接口配置模式,使用ip hold-time eigrp {AS-number} {seconds}命令.当你修改了hello包的时间间隔以后,hold time是不会自动修改的(之前hold time=hello time*3)所以要人工进行修改

EIGRP Adjacency Establishment Conditions

即使两个路由器的hello time和hold time相互之间不匹配,它们仍然有可能成为邻居.hello包包含了hold time的信息和保持跟踪每个EIGRP邻居路由器的hold time如果EIGRP路由器在hold time超出之前没有收到EIGRP包,路由器就会察觉拓扑的变化.路由器删除邻居路由器的相关信息,包括从邻居那里认可的topology table条目.假如FD可用的话,EIGRP进程将进行重新收敛

EIGRP不会基于次要地址(secondary address)建立邻居关系,因为EIGRP使用接口的主地址

show ip eigrp neighbors Command

使用show ip eigrp neighbors命令查看EIGRP邻居关系,如下图:

看下各个输出的含义,如下:
1.neighbor address:邻居路由器的地址,如上图可以看出p2r2有2个邻居
2.queue(Q Cnt):等待发送的排队排列的包.如果这个值持续高于0的话,说明发生了拥塞问题
3.Smooth Round Trip Timer(SRTT):从邻居处发送和接收包的平均回程时间.单位是毫秒.这个通常用来决定

RTO(Retransmit Time Out)
4.RTO:单位是毫秒.路由器在重新传输包之前等待ACK的时间
5.hold time:定义了等待没有从邻居那里接收到任何包的最大时间.当接受到新的包以后,hold timer复位
6.Interface:本地到邻居的接口

EIGRP Reliability

Reliable Transport Protocol(RTP)用来保证EIGRP包发送给邻居的可靠的传输.RTP支持单播和多播的混合方式.出于效率问题的考虑,只有一些特定的EIGRP包需要可靠的传输.比如在拥有多播能力的多路访问网络中,比如以太网,就不需要单独的发送可靠的hello包给所有邻居.EIGRP发送1个单独的hello包的多播,其中包含接收者不需要对这些包进行确认其他类型包,比如update包就需要确认.所有运载路由信息的包(update,reply和query)就需要可靠传输因为它们不是周期性的发送.每个包分配的有序列号然后要求确认.这些序列号和确认就使得这些包可以可靠的传输ACK包和hello包,是不需要可靠性的

EIGRP Retransmission Policy and Transport Mechanism

RTP的重传机制:路由器发送给邻居可靠的包在RTO超出以后,还没得到确认的话,将进行包的重传.最大重传次数16次,直到hold time超出

EIGRP的传输使用了窗口技术,并且窗口大小是1,stop-and-wait机制,即要对传输的包进行一一确认.假如一个路由器A有两个邻居B和C,当分别给B和C发送1个包以后,B做出了及时的应该而C还没有做出应答,A就必须等待,直到C做出应答以后才能发送下一个包,这样带来的影响是降低了效率.解决的办法是对没有得到确认的多播包采用单播包来传送

Initial Route Discovery in EIGRP

来看看EIGRP中邻居的发现和建立过程,如下图:

具体过程如下:
1.路由器A启动,然后在链路上发送hello包
2.路由器B接收到A发来的hello包,然后做出应答,发回update包给A,告诉A它自己的路由表的信息.但是这个时候

邻居关系还没有建立直到B发回hello包给A.在B给A的update包里设置了初始位(init bit)的,说明这是初始过程
3.当双方交换过hello包以后,邻居关系建立.A发回ACK包给B确认它已经收到了从B而来的update包
4.A吸收update包到它自己的topology table中去.topology table包括了从邻居那里得来的所有目的地信息
5.A发送update包给B
6.B收到A发来的update包后做出应答;发回ACK包给A
整个过程完成

Verifying EIGRP Connectivity Using debug Commands

debug eigrp packets:显示执行这条命令的路由器的接收和发送的包的类型,如下:
RouterA#debug eigrp packets
(略)
01:38:29: EIGRP: Sending HELLO on Serial0/0
01:38:29: AS 100, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0
01:38:31: EIGRP: Received HELLO on Serial0/0 nbr 10.1.2.2
01:38:31: AS 100, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0
                Received EIGRP Update
01:38:33: EIGRP: Received UPDATE on Serial0/0 nbr 10.1.2.2
01:38:33: AS 100, Flags 0x0, Seq 23/37 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0
01:38:33: EIGRP: Enqueueing ACK on Serial0/0 nbr 10.1.2.2
01:38:33: Ack seq 23 iidbQ un/rely 0/0 peerQ un/rely 1/0
01:38:33: EIGRP: Sending ACK on Serial0/0 nbr 10.1.2.2
(略)
如果K值不匹配的话,当然就建立不了邻居关系,如下 :
RouterA#debug eigrp packets
(略)
01:39:13: EIGRP: Received HELLO on Serial0/0 nbr 10.1.2.2
01:39:13:AS 100, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0
01:39:13:        K-value mismatch
(略)

debug ip eigrp:显示路由器发送和接收的EIGRP包的相关信息,如下 :
RouterA#debug ip eigrp
IP-EIGRP Route Events debugging is on
01:57:23: IP-EIGRP: Processing incoming UPDATE packet
01:57:23: IP-EIGRP: Int 172.16.1.0/24 M 10639872 - 9999872 640000
                SM 384000 - 256000 128000
(略)
如上输出,内部路由标的有Int字样,FD为9999872(带宽值)+640000(延迟)=10639872,其中FD是路由器A到达目标网络172.16.1.0/24;SM代表source metric,advertised distance是256000+128000=384000.因为带宽值是由10的7次方除以真正的带宽得来的,而且计算EIGRP度的时候是选择链路带宽值低的那条.所以EIGRP的度为9999872(bandwidth)+640000(delay)=10639872

Selection of a Successor by DUAL

如果有相同的FD的话,路由表可以存在多个successor,默认可以存在4个.FS(feasible successor)是备份路由.要限定一个FS,下一跳的路由器的advertised distance必须比当前successor路由的FD要小如果successor因故无效,而有效的FS存在的话,FS将代替successor并无需进行重新计算.EIGRP的topology table一次可以存在多个有效的FS;如果successor因故无效,同时又没有有效的FS的话,EIGRP将进行重新计算.计算过程将计算出新的一个successor

successor是下一跳的路由器到达目标网络中的最佳路由器.FD最低的成为successor.所有的路由器只选择下一跳的路由器,然后每个路由器依靠下一跳路由器做出到达目标网络的最可靠的决定.所有的路由器依赖于successor(最佳的下一跳路由器)到达目标网络

来看一个例子,如下图:

假设路由器B把网络10.1.1.0/24宣告给它的邻居路由器C,B到网络10.1.1.0/24的耗费为1000,C把这个值作为从B那里得到的advertised distance.C再加上它自己到达B的耗费(1000)得到通过B到达目标网络的FD(即1000+1000=2000)
D宣告网络10.1.1.0/24给C.如图,D到达网络10.1.1.0/24的耗费是1500,C从D那里得到这个作为advertised distance,然后加上它自己到达D的耗费(1000)得到FD为2500.路由器C比较所有的FD,选择值低的那个作为最佳路由,即选择通过B到达目标网络.所以路由器B作为C到达目标网络的successor

EIGRP Feasible Successor

FS,是作为successor的备份,FS路由存储在topology table中,一张topology table可以保持多个FS.FS的选举是经过比较非successor的AD,而且AD要比FD小,才能被认可为FS.这个比较的过程,可以写成下面的数学方程式:
AD of second best route < FD of best route(successor) = FS
注意这里的AD不是管理距离而是advertised distance
如下是没有FS的一个公式:
AD of second best route ≥ FD of best route(successor) ≠ FS

Configuring EIGRP

配置EIGRP的具体步骤,如下:
1.在全局配置模式下使用router eigrp [[AS number]命令启用EIGRP,在一个AS内,所有要配置EIGRP的路由器必须拥有相同的AS号
2.定义EIGRP网络号使用network [network-number] [wildcard-mask]命令,可以使用wildcard mask来定义特殊的IP地址,子网或网络
3.如果你使用了串行连接,还得定义链路带宽.如果你不定义带宽,EIGRP默认认为带宽为T1线路的带宽大小,即1.544Mbps.如果实际的链路带宽比这个低的话,路由器将不能收敛,或者路由update包会丢失.使用bandwidth [Kb]命令定义带宽.这个带宽对于点对点的帧中继网络中,定义的带宽是CIR;而对于其他的普通串行线路,定义的就是实际带宽

来看一个EIGRP配置的实例,如下图:

如图,所有的路由器都在AS 109里,路由器A没有使用wildcard mask.如果A使用了以下的配置:
RouterA(config)#router eigrp 109
RouterA(config-router)#netw 10.1.0.0
RouterA(config-router)#netw 10.4.0.0
RouterA(config-router)#netw 172.16.1.0
RouterA(config-router)#netw 172.16.2.0
路由器A将对网络进行自动汇总,使得配置看上去像是这样的,如下:
RouterA(config)#router eigrp 109
RouterA(config-router)#netw 10.0.0.0
RouterA(config-router)#netw 172.16.0.0
如果路由器A的配置命令是如下这样的:
RouterA(config)#router eigrp 109
RouterA(config-router)#netw 10.1.0.0 0.0.255.255
RouterA(config-router)#netw 10.4.0.0 0.0.255.255
RouterA(config-router)#netw 172.16.1.0 0.0.0.255
RouterA(config-router)#netw 172.16.2.0 0.0.0.255
使用wildcard mask来定义参与AS 109的EIGRP进程的直接相连的路由器接口.在上面这个例子里,定义的就是处于10.1.0.0/16,10.4.0.0/16,172.16.1.0/24和172.16.2.0/24里的所有接口都会参与AS 109里的EIGRP进程看看在EIGRP中使用wildcard mask的例子,如下图:

如图,路由器C并没有使用network 172.16.0.0 0.0.0.255,而使用的是network 172.16.3.0 0.0.0.255和network 172.16.4.0 0.0.0.255,因为C的S0口连接的是外部网络,即S0口没有运行EIGRP.如果在S0口运行了EIGRP的话,将会给外部发送不必要的信息造成带宽的浪费和CPU的负担

Configuring Default Route Using the default-network Command

当配置EIGRP的时候,可以使用ip default-network [network-number]命令创建默认路由,如下图:

路由器A连接外部网络172.31.0.0/16,A使用了ip default-network 172.31.0.0命令配置了一条默认路由;然后A把它宣告给B,B把也它标记成默认路由.注意[network-number]参数是基于类的网络号

Verifying EIGRP Using show Commands

使用show ip route命令查看路由表的内容,如下:
RouterA#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, D - EIGRP, EX - EIGRP external, O - OSPF,
        (略)
Gateway of last resort is not set
     172.16.0.0/24 is subnetted, 1 subnets
D       172.16.1.0 [90/10639872] via 10.1.2.2, 06:04:01, Serial0/0 10.0.0.0/24 is subnetted, 4 subnets
D       10.1.3.0 [90/10514432] via 10.1.2.2, 05:54:47, Serial0/0
D       10.3.1.0 [90/10639872] via 10.1.2.2, 06:19:41, Serial0/0
C       10.1.2.0 is directly connected, Serial0/0
C       10.1.1.0 is directly connected, Ethernet0/0
注意D代表是从EIGRP学来的,*代表默认路由

使用show ip protocols命令可以检查默认的EIGRP设置,如下:
RouterA# show ip protocols
Routing Protocol is "eigrp 100"
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  Default networks flagged in outgoing updates
  Default networks accepted from incoming updates
  EIGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0
  EIGRP maximum hopcount 100
  EIGRP maximum metric variance 1
  Redistributing: eigrp 100
  Automatic network summarization is not in effect
  Maximum path: 4
  Routing for Networks:
    10.1.0.0/16
    10.0.0.0
  Routing Information Sources:
    Gateway         Distance      Last Update
    10.1.2.2              90      05:50:13
  Distance: internal 90 external 170
(略)

使用show up eigrp topology命令来验证EIGRP操作,如下:
RouterA# show ip eigrp topology
IP-EIGRP Topology Table for AS(100)/ID(10.1.2.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply, r - reply Status, s - sia Status
P 10.1.3.0/24, 1 successors, FD is 10514432
         via 10.1.2.2 (10514432/28160), Serial0/0
P 10.3.1.0/24, 1 successors, FD is 10639872
         via 10.1.2.2 (10639872/384000), Serial0/0
P 10.1.2.0/24, 1 successors, FD is 10511872
         via Connected, Serial0/0
P 10.1.1.0/24, 1 successors, FD is 2190
         via Connected, Ethernet0/0
P 172.16.1.0/24, 1 successors, FD is 10639872
         via 10.1.2.2 (10639872/384000), Serial0/0
(略)
注意前面的字母P,可能出现的字母代号有如下几种:
1.P:代表passive,这个表示稳定网络中的稳定状态
2.A:代表active,当前网络不可用,正处于发送查询状态
3.U:代表update,网络处于等待update包的确认状态
4.Q:代表query,网络处于等待query包的确认的状态
5.stuck-in-active(SIA):持续处于active状态,说明EIGRP网络的收敛发生了问题

EIGRP Route Summarization: Manual

路由汇总的目的是为了减少路由表的条目,减少或update包,边界查询

使用人工汇总的特点如下:
1.可以基于接口的配置汇总
2.当在接口做了人工汇总以后,路由器将创建一条指向null0口的路由,这样做是为了防止路由循环
3.当汇总之前的路由down掉以后,汇总路由将自动从路由表里被删除
4.汇总路由的度取决于特定路由中度最小的来做为自己的度

Configuration Route Summarization

no auto-summary:关闭自动汇总的命令,在全局配置莫模式下使用ip summary-address eigrp [as-number] [address] [mask]:关闭了自动汇总以后,人工在接口模式下创建汇总地址

来看一个人工汇总的例子,如下图:

如图,路由器A和B关闭了自动汇总,因为如果不关闭自动汇总的话,汇总路由172.16.0.0/16将传给网络10.0.0.0,这样网络10.0.0.0就不能知道路由器A和B的具体位置.路由器C创建人工汇总,在S0口将172.16.1.0和172.16.2.0宣告成单独的一条条目172.16.0.0.

创建人工汇总的过程,如下:
1.选择传播汇总路由的接口
2.定义汇总地址,EIGRP路由协议以及AS号

Understanding EIGRP Load Balancing

负载均衡是指在网络的多个出口上分发数据流量到目的地,负载均衡增加了网段的使用,也增加了网络的带宽.对于IP,Cisco IOS默认支持4条等价链路的负载均衡,最大支持6条

EIGRP支持不等价链路的负载均衡,使用variance命令,跟上一个乘数,默认是1(即代表等价的链路的均衡负载),值的范围是1到128.这个乘数代表了可以接受的不等代价链路的度的倍数,在这个范围内的链路都将被接受,作为负载均衡.来看一个例子,如下图:

如图所示意,使用了variance 2,即乘数是2,路由器E选择经过C来到达网络Z,因为FD是20.FD从上到下分别是30,20和45.因为乘数是2,E还将选择经过B到达网络Z,因为B的FD是30,小于2倍C的FD即40;而D的FD是45,大于2倍C的FD,所以E将不会经过D到达网络Z(关系是必须小于,不能等于或大于)

EIGRP Bandwidth Utilization

EIGRP支持不同的WAN链路,比如point-to-point链路,NBMA网络中的point-to-point链路和point-to-multipoint链路.因为在WAN链路中带宽比较低,所以为了防止EIGRP占用太多的网络带宽,.默认情况下,最多允许EIGRP占用WAN链路带宽的50%.这个默认的百分比可以通过在接口配置模式下使用ip bandwidth-percent eigrp [AS-number] [pencentage].百分比可以超过100(注意没有%符号)

一般的,Cisco IOS软件认为点到点的帧中继子接口带宽为T1线路带宽(1.544Mbps),但是假如在一个帧中继环境中CIR只有56K,按默认占用50%的带宽来算,这样就会占用768Kbps.所以要在接口配置模式下使用bandwidth [BW](单位是Kbps)来给接口分配实际带宽
对多点链路比如帧中继网络,ISDN PRI和SMDS的配置比较麻烦.当你配置多点链路的接口的时候,把带宽配置成最小的CIR和VC之积

先来看看点到点链路中带宽的配置,如下图:

注意这个星形环境,有10条VC(图中只显示4条),每条VC的带宽都是56Kbps,使用的是点到点环境,所以在C上,划分10个子接口,分别指定接口带宽为56Kbps
如果是在下面这种混合环境,如图:

配置的办法是把CIR最低的作为点到点链路,定义带宽BW=CIR;把带宽较高的作为多点环境,BW=CIR之和.上述例子就是把3条带宽较高的划分为一条多点链路的接口,指定带宽为768Kbps(256Kbps*3);带宽最低的那条(56Kbps)作为点到点环境,单独划分一个点到点的接口,并且指定带宽为它实际的CIR即56Kbps

How EIGRP Responds to a Query

作为一种高级距离向量协议,EIGRP来依靠邻居提供路由信息,如果路由出了问题,即进入active状态,而且又没有可用的FS的时候,EIGRP就要求快速的收敛.然后EIGRP路由器向邻居发送查询(query),寻找一条可以替代那条出了问题的路由.查询被发送给所有的邻居路由器,除了到达successor的那个接口.如果被查询的路由器知道一条替代路由的话,它就把这条替代路由放进应答(reply)包中发送给发出查询的源路由器;如果接收到查询的路由器没有替代路由的信息,它将继续发送给它自己的其他邻居,直到找到可以替代的路由为止

EIGRP Query Process SIA

EIGRP使用可靠的多播来寻找替代路由.路由器必须得到收到查询的所有路由器的应答才能重新进行计算successor的信息,如果有一个路由器的应该还没有收到的话,发出查询的源路由器就必须等待.默认如果在3分钟内某些路由器没有对应答做出响应的话,这条路由就进入stuck in active(SIA)状态(即始终处于active状态).然后路由器将重新设定和这个没有做出应答的路由器的邻居关系.为了避免SIA情形的发生,解决方案是限制查询的范围

Scalability Issues and Solutions

影响EIGRP网络可扩展性的因素,如下:
1.邻居之间信息交换量
2.路由器的数量
3.拓扑结构的深度
4.替代路径的数量
所以EIGRP在大型网络中不能够即插即用(Plug-and-Play),而且查询的代价可能会比较高

Limiting the EIGRP Query Range with Summarization

为了使得EIGRP能够具有更好的可扩展性,可以使用下面两种选项:
1.通过在路由器的outbound接口使用ip summary-address eigrp命令配置路由汇总
2.把远程路由器做为stub EIGRP路由器
路由汇总可以减小查询的范围;把远程路由器作做为stub EIGRP路由器使得这些远程路由器被查询.还有其他的一些限制查询范围的方法诸如路由过滤(route filtering)或接口包过滤(interface packet filtering)

来看看限制EIGRP查询范围的其中一个办法:路由汇总.如下图:

如图,路由器B发送汇总路由172.30.0.0/16给路由器A.假如网络172.30.1.0/24突然down掉以后,C向B查询网络172.30.1.0/24,B又向A查询.由于A收到的是汇总路由,于是A直接对查询做出网络172.30.1.0/24不可达的应答,然后不再将查询继续传递下去

查询范围不是产生SIA现象的唯一原因,还有诸如以下原因可能会产生SIA的发生:
1.路由器对查询的应答过于繁忙比如路由器CPU资源占用过高;还有内存不足,不足以分配处理查询包或者建立应答包
2.路由器之间的链路状态不稳定,因此可能产生丢包现象.路由器足够多的包来维持邻居关系,但是却没有收到全部的查询包或应答包
3.单向链路(unidirectional link),即网络流量只朝一个方向传输的故障通过使用路由汇总,可以使得路由表最小化,这样就使得路由器的CPU资源和带宽尽可能的减少,而且减少了SIA情况的发生

使用路由汇总是减少收敛时间的一个比较好的办法,远程路由器以网络不可达的信息做为应答并且如果路由表内没有精确匹配的条目的话将不再把查询延伸传播下去

有人通过使用划分不同的AS来控制查询的范围,如下图:

通过在B的两边划分不同的AS,当网络X消失以后,C发送查询给B,B做出网络不可达的应答.在AS 1中查询不会继续

传播下去,查询终止.但是在AS 2,B将产生一个新的查询,发送给A.注意这和在同一个AS内做出查询不一样.所以说通过划分不同的AS来限制查询的范围并不是一个有效的解决方案

Limiting the EIGRP Query Range Using the stub Option

还有种限制EIGRP查询比较有效的方法就是配置stub选项.在做这项配置的时候,只有远程路由器要配置成stub路由器.使用EIGRP stub路由特性增加了网络的稳定性,减少了网络资源的占用,简化了stub router的配置EIGRP stub功能最早是出现在Cisco IOS Release 12.0(7)T上.星形拓扑(hub-and-spoke)结构的网络常使用stub路由,在这样的拓扑结构里,远程路由器不会转发所有的数据给中心(hub)路由器,远程路由器也不会保持完整网络的路由表.一般的,中心路由器只需要发送一条默认路由给远程路由器.当到达某个网络的路由丢失以后,路由器不会向stub路由器做出路由查询

EIGRP stub配置命令的具体格式是在路由配置模式下,输入如下命令:
Router(config-router)#eigrp stub [receive-only | connected | static | summary]
一些参数的含义如下:
receive-only:不能和其他3个参数(connected,static和summary)一起使用.只接收从邻居路由器发送来的信息
connected:指定该路由器可以把和它直接相连的网络信息传递给它的邻居.这个选项默认是开启的
static:把静态路由信息传递给它的邻居
summary:把汇总路由信息传递给它的邻居.这个选项默认也是开启的

由于connected和summary选项默认是开启的,配置stub路由器并发送直连网络和汇总路由信息就可以这样写,如下:
Router(config)#router eigrp 1
Router(config-router)#netw 10.0.0.0
Router(config-router)#eigrp stub
但是假如你使用了receive-only选项的话,其他3个选项的信息就不会被发送,如下:
Router(config)#router eigrp 1
Router(config-router)#netw 10.0.0.0
Router(config-router)#eigrp stub recive-only

Scalability Rules for Implementing EIGRP

以前曾经提到过,不太合理的IP地址规划限制了路由汇总.这样会增加网络的收敛时间;相反,合理的地址规划能使得路由汇总工作的更好,加快了网络收敛时间

论坛徽章:
0
2 [报告]
发表于 2004-05-12 12:36 |只看该作者

[新原创]Cisco网络专家教程Phase2-路由技术教程

Module6 Manipulating Routing Updates


Migrating to a New IP Routing Protocol

redistribution(再发布)是用来连接不同的路由域(routing domain,或AS),使得运行了不同的路由协议的路由器能够共享路由信息.再发布的两种方法如下:
1.two-way redistribution:双向
2.one-way redistribution:单向

如下情况可能就会使用多种路由协议:
1.迁移旧的IGP到新的IGP
2.可能一些旧的部门不想让它们的路由器运行新的
3.混合厂商设备之间,比如Cisco设备和非Cisco设备

下图是一个再发布的例子:

左边是OSPF网络,右边是EIGRP网络,A作为边界路由器,在A上做再发布,B把EIGRP网络汇总路由192.168.5.0宣告给A;C把OSPF网络的汇总路由172.16.0.0宣告给B.同时C的路由表里出现1条条目O E2 192.168.5.0,E2表外部路由;而B的路由表也出现一条条目D EX2 172.16.0.0,表示这条路由是从外部学来的
如果上图那个例子,A没有做路由再发布的话,就叫SIN(ships-in-the-night) routing.A将在参与了OSPF进程的接口上传输OSPF路由更新包给OSPF邻居;而在参与了EIGRP进程的接口上传输EIGRP路由更新包给EIGRP邻居.参与不同路由协议进程2边的接口之间不会交换路由信息的

Seed Metrics

在做路由再发布的时候,如果2边使用不同的路由协议,就要进行metric的翻译,使得它们兼容.seed metric(default metric)是定义在路由再发布里的.在路由配置模式使用default-metric命令在建立seed metric.如下图是一些IP路由协议的default seed metric:


Redistribution Implementation Considerations

做路由再发布应该考虑到的一些问题,如下:
1.routing feedback(loops)
2.路由信息的兼容问题
3.不一致的收敛时间

比较安全的办法是在边界路由器上采用one-way redistribution.还要决定核心(core)路由协议和边缘(edge)路由协议.在对路由协议进行翻译的时候,核心路由协议做为新的路由协议,边缘路由协议作为旧的路由协议.如果你想做two-way redistribution,要把路由循环的问题考虑进去

Configuring Redistribution

只有支持相同协议栈的路由协议才能做再发布,比如IP的RIP和OSPF;反之IPX的RIP就不能和OSPF做再发布.还有一些路由协议比如IGRP和EIGRP,在1个AS里的话会自动再发布;但是其他的路由协议要进行人工配置,还有一些其他的路由协议在配置再发布的时候要进行metric的配置

路由再发布的步骤如下:
1.定位要做再发布的边界路由器,尽量选举一个路由器做为边界路由器来减少路由循环的可能性
2.决定哪个路由协议做为核心路由协议
3.定义哪个路由协议做为边缘路由协议(做为过渡)
4.选择注入边缘路由协议到核心路由协议里的方法,可以通过在网络边界使用汇总来减少核心路由表的条目

the redistribute Command for RIP

再发布到RIP的命令如下:
Router(config-router)#redistribute <protocol>; [process-id] <match [route-type]>; <metric [value]>; <route-map [map-tag]>;
参数含义如下:
protocol:需要做再发布的一些,比如OSPF,IS-IS,IGRP等等
process-id:对于EIGRP,IGRP,BGP和EGP就是AS号;对于OSPF就是进程ID
match [route-type]:可选,用来再发布OSPF的时候用的,可选参数为internal,external 1(O E1)和external 2(O E2)
metric [value]:可选,为经过再发布以后的路由定义RIP的seed metric,默认是0,即无限(infinity)
route-map [map-tag]:可选,定义route map

如下图:

把OSPF进程1再发布到RIP中去,并定义metric为3

the redistribute Command for OSPF

再发布到OSPF的命令如下:
Router(config-router)#redistribute <protocol>; [process-id] <metric [value]>; <metric-type [value]>; <route-map [map-tag]>; [subnets] <tag [value]>;
参数含义如下:
metric [value]:可选,当其他路由再发布到OSPF里的时候,默认的seed metric为20(BGP例外,BGP为1)
metric-type [value]:可选,定义外部路由类型,默认为external 2(O E2)
subnets:可选,如果不加这个参数,将不会将子网路由信息再发布到OSPF里去

如下图:

如上是把EIGRP再发布到OSPF里,并指定子网信息(172.16.1.0,如果没有加上subnets参数,这里可能就是172.16.0.0),并指定外路路由类型为O E1.seed metric采用默认的值20

the redistribute Command for EIGRP

再发布到EIGRP的命令如下:
Router(config-router)#redistribute <protocol>; [process-id] <match [internal|external 1|external 2]>; <metric [value]>; <route-map [map-tag]>;
参数含义如下:
metric [value]:可选,定义seed metric,参数顺序为bandwidth,delay,reliability,load和MTU
match [internal|external 1|external 2]:可选,用来再发布OSPF到EIGRP里定义外部路由类型

如下图:

如上是把OSPF进程1再发布到EIGRP里,并指定带宽为10000Kb,延迟为100,可靠性最大255,负载最小1以及MTU为1500

the redistribute Command for IS-IS

再发布到IS-IS的命令如下:
Router(config-router)#redistribute <protocol>; [process-id] <metric [value]>; <level [value]>; <metric-type [value]>; <route-map [map-tag]>; <tag [value]>;
参数含义如下:
level [value]:可选,外部路由再发布的级别,默认为L2,value可选参数为level-1,level-1-2和level-2

如下图:

如上是把EIGRP再发布到IS-IS里,默认为L2

如下图是一个没有做再发布的配置实例:

B(config)#router rip
B(config-router)#netw 10.0.0.0
B(config-router)#version 2
B(config-router)#passive-interface s2
最后1行命令的作用是不需要在serial 2上启用RIPv2
B(config)#router ospf 1
B(config-router)#netw 10.0.0.8 0.0.0.3 area 0
而此时A,B和C的路由表的条目如下图:

现在在B上做路由再发布,如下:
B(config)#router ospf 1
B(config-router)#netw 10.0.0.8 0.0.0.3 area 0
B(config-router)#redistribute rip subnets metric 300
如上是把RIP再发布到OSPF中同时定义子网信息的发布和metric的值为300
B(config)#router rip
B(config-router)#netw 10.0.0.0
B(config-router)#version 2
B(config-router)#passive-interface s2
B(config-router)#redistribute static metric 5
如上的再发布一条静态路由到RIP中去,注意metric为5(高于RIP网络默认的metric)

下图是经过再发布以后,A,B和C路由表的条目:


还可以通过路由汇总来减少路由表的条目,如下图:

对于A,创建汇总,如下:
A(config)#int s0
A(config-if)#ip summary-address rip 10.0.0.0 255.252.0.0
对于C,创建汇总,如下:
C(config)#router ospf 1
C(config-router)#area 1 range 10.8.0.0 255.252.0.0
之后路由表条目如下图:

可以看出路由汇总有效的减少了路由表的条目

Passive Interface

如果你在路由器上配置某种路由协议,但是你又想让某个接口不参与到其中去,就可以用passive-interface命令.这个命令的作用是防止路由协议的路由更新通过这个接口发送出去.如果要把全部的接口全部设置为这样的1个状态就可以使用passive-interface default命令,再使用no passive-interface命令开启个别需要发送路由更新的接口

如下图就是1个实例:

在B上的配置如下:
B(config)#router rip
B(config-router)#netw 10.0.0.0
B(config-router)#passive-interface s1
在A上的配置如下:
A(config)#router rip
A(config-router)#netw 10.0.0.0
A(config-router)#passive-interface default
A(config-router)#no passive-interface s1

Route Filtering

控制路由更新包的一些办法如下:
1.passive-interface
2.默认路由
3.静态路由

还可以使用distribute-list来对路由更新包进行控制,流程图如下:


Configuring distribute-list

配置distribute-list的步骤如下:
1.根据网络需要创建ACL
2.决定是在过滤方向
3.创建distribute-list

out方向的命令如下:
Router(config-router)#distribute-list {access–list-number | name} out <interface–name | routing–process | [autonomous–system number]>;
in方向的命令如下:
Router(config-router)#distribute list {access–list-number | name} in [interface-type number]

配置实例如下图:

如上图,将只允许来自172.16.0.0的路由更新包经过s0口传输到192.168.5.0中去,因为结尾默认隐含deny any,所以来自10.0.0.0的包被过滤掉了

下图是一个用distribute-list控制再发布的例子:

B(config)#access-list 2 deny 10.3.0.0 0.0.255.255
B(config)#permit any
B(config)#access-list 3 permit 10.9.0.0
B(config)#router ospf 1
B(config-router)#netw 10.0.0.8 0.0.0.3 area 0
B(config-router)#redistribute rip subnets
B(config-router)#distribute-list 2 out rip
B(config-router)#^Z
B(config)#router rip
B(config-router)#netw 10.0.0.0
B(config-router)#version 2
B(config-router)#passive-interface s3
B(config-router)#redistribute ospf 1 metric 5
B(config-router)#distribute-list 3 out ospf 1
如上配置,将只有路由10.9.0.0再发布到RIP里去;而再发布到OSPF里的只有10.1.0.0和10.2.0.0

Route Map Operation


route map的作用如下:
1.再发布路由的过滤
2.基于策略的路由(policy-based routing,PBR)
3.NAT
4.BGP路由策略

Route Map Commands

通过route map控制路由的再发布命令,如下:
Router(config-router)#redistribute [protocol] [process id] route-map [map-tag]

创建route map的步骤如下:
1.定义route map的条件,如下:
Router(config)#route-map [map-tag] [permit | deny] [sequence-number]
2.定义需要满足的条件,如下:
Router(config-route-map)#match {conditions}
3.满足条件以后所采取的措施,如下:
Router(config-route-map)#set {actions}
其中{conditions}参数和{actions}参数可以通过?来提示查看

一个通过route map控制路由再发布的例子如下:
Router(config)#access-list 23 permit 10.1.0.0 0.0.255.255
Router(config)#access-list 29 permit 172.16.1.0 0.0.0.255
Router(config)#access-list 37 permit 10.0.0.0 0.255.255.255
如上设置ACL
Router(config)#route-map redis-rip permit 10
Router(config-route-map)#match ip address 23  29
Router(config-route-map)#set metric 500
Router(config-route-map)#set metric-type type-1
Router(config-route-map)#^Z
Router(config)#route-map redis-rip deny 20
Router(config-route-map)#match ip address 37
Router(config-route-map)#^Z
Router(config)#route-map redis-rip permit 30
Router(config-route-map)#set metric 5000
Router(config-route-map)#set metric-type type-2
Router(config-route-map)#^Z
如上,route map 10是把匹配ACL 23和29的地址,设置cost为500并且为类型1;route map 20是符合ACL 37的IP地址将不会被再发布;route map 30是把其他的路由的cost设置为5000,类型2
Router(config)#router ospf 10
Router(config-router)#redistribute rip route-map redis-rip

Commands for Changing Administrative Distance

手动修改管理距离的命令如下:
Router(config-router)#distance [value] <address wildcard-mask [access-list-number | name]>;
以上命令用在配置OSPF,IS-IS和RIP等路由配置模式下使用(BGP和EIGRP例外)
对于EIGRP的管理距离修改的命令如下:
Router(config-router)#distance eigrp [internal-distance] [external-distance]

Policy-Based Routing

PBR的一些优点如下:
1.一般的IP路由的策略是基于目标地址的,PBR允许你可以基于源地址对包进行路由
2.Qos
3.节省开支,负载共享

PBR是应用于incoming packet上的(即包进入路由器的那个接口),并通过route map来做路由决策.规则如下:
1.如果在route map里,陈述标记为deny的话,符合这个匹配原则的包就按照正常方式进行路由
2.如果在route map里,陈述标记为permit的话,符合这个匹配原则的包就按照set命令进行处理;如果没有找到可以匹配的包,就按照正常方式进行路由
3.如果你想把不符合匹配原则的包丢弃而非按正常情况处理的话,就要在route map的最后1行加上1行set语句:把那些包路由到null0接口

一些常用的PBR的match命令如下:
Router(config-route-map)#match ip address {access-list-number | name} [access-list-number | name]
如上是根据IP地址进行匹配
Router(config-route-map)#match length [min] [max]
如上是根据layer 3的包的长度来进行匹配

一些常用的PBR的set命令如下:
Router(config-route-map)#set ip [default] next-hop [ip-address] [...ip-address]
定义下1跳的出口地址
Router(config-route-map)#set [default] interface [type number] [...type number]
定义出口的接口,推荐使用在点到点链路上
以上的default参数都用在路由表里没有到达目标地址的明确条目的情况下

对PBR的应用命令如下:
Router(config-if)#ip policy route-map [map-tag]
注意是在incoming接口(入口)应用,而表示应用在outgoing接口(出口)上
Router(config-if)#ip route-cache policy
启用快速交换路由策略,快速交换路由策略支持所有的match命令和大部分set命令,但是set ip default next hop命令不被支持

PBR的实例如下图:

如图,现需要将1.1.0.0的网络的数据包送到ISP A去;将1.2.0.0的数据包送到ISP B去,配置如下:
RouterA(config)#access-list 1 permit ip 1.1.0.0 0.0.255.255
RouterA(config)#access-list 2 permit ip 1.2.0.0 0.0.255.255
根据需要先创建ACL
RouterA(config)#route-map equal-access permit 10
RouterA(config-route-map)#match ip address 1
RouterA(config-route-map)#set ip default next-hop 6.6.6.6
RouterA(config-route-map)#route-map equal-access permit 20
RouterA(config-route-map)#match ip address 2
RouterA(config-route-map)#set ip default next-hop 7.7.7.7
RouterA(config-route-map)#route-map equal-access permit 30
RouterA(config-route-map)#set default interface null0
创建route map
RouterA(config)#interface ethernet 0
RouterA(config-if)#ip address 1.1.1.1 255.255.255.0
RouterA(config-if)#ip policy route-map equal-access
在incoming接口上应用route map

PBR的一些验证性的命令如下:
show ip policy:显示在接口上配置的route map
show route-map [map-name]:显示某个route map
debug ip policy:显示IP PDR包的活动状态

论坛徽章:
0
3 [报告]
发表于 2004-05-12 12:36 |只看该作者

[新原创]Cisco网络专家教程Phase2-路由技术教程

下载地址:http://www.show-tym.com/bbs/zboard.php?id=works
省略了BGP和NAT的内容,原因是我认为BSCI里讲的比较少,推荐看Routing TCP/IP Vol.2

论坛徽章:
0
4 [报告]
发表于 2004-05-12 12:36 |只看该作者

[新原创]Cisco网络专家教程Phase2-路由技术教程

下载地址:http://www.show-tym.com/bbs/zboard.php?id=works
省略了BGP和NAT的内容,原因是我认为BSCI里讲的比较少,推荐看Routing TCP/IP Vol.2

论坛徽章:
0
5 [报告]
发表于 2004-05-12 12:36 |只看该作者

[新原创]Cisco网络专家教程Phase2-路由技术教程

下载地址:http://www.show-tym.com/bbs/zboard.php?id=works
省略了BGP和NAT的内容,原因是我认为BSCI里讲的比较少,推荐看Routing TCP/IP Vol.2

论坛徽章:
0
6 [报告]
发表于 2004-05-18 20:08 |只看该作者

[新原创]Cisco网络专家教程Phase2-路由技术教程

顶一下。

论坛徽章:
0
7 [报告]
发表于 2004-05-19 00:53 |只看该作者

[新原创]Cisco网络专家教程Phase2-路由技术教程

楼主有没有好的FTP站点可以下视频的讲座呀??
我找了几个网址,可他们提供的太少了,根本不好。
我又比较懒,不想看那么多书,
帮帮小弟吧,,
我知道你乐于助人的!!

论坛徽章:
0
8 [报告]
发表于 2004-05-19 08:49 |只看该作者

[新原创]Cisco网络专家教程Phase2-路由技术教程

原帖由 "无名客" 发表:
楼主有没有好的FTP站点可以下视频的讲座呀??
我找了几个网址,可他们提供的太少了,根本不好。
我又比较懒,不想看那么多书,
帮帮小弟吧,,
我知道你乐于助人的!!

这个没有,我很少关心FTP的,你要什么视频资料,或许我有

论坛徽章:
0
9 [报告]
发表于 2004-05-19 14:50 |只看该作者

[新原创]Cisco网络专家教程Phase2-路由技术教程

这么好的资料居然没人看,没人顶!我顶。天天学习,才能天天向上呀!老大,有资料,不管是视频的,还是电子书,关于最新cisco的ccna,ccnp的。有的话,麻烦告我一下!谢谢!mail:flower_king@tom.com 或者站内给我消息!

论坛徽章:
0
10 [报告]
发表于 2004-05-19 17:56 |只看该作者

[新原创]Cisco网络专家教程Phase2-路由技术教程

多谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP