文档库 最新最全的文档下载
当前位置:文档库 › CCNA中文笔记第5章IP路由

CCNA中文笔记第5章IP路由

CCNA中文笔记第5章IP路由
CCNA中文笔记第5章IP路由

CCNA中文笔记第5章:IP路由

Chapter5 IP Routing

Routing Basics

路由协议(routing protocol):用于routers动态寻找网络最佳路径,保证所有routers拥有相同的路由表.一般,路由协议决定数据包在网络上的行走的路径.这类协议的例子有OSPF,RIP,IGRP,EIGRP等

可路由协议(routed protocol):当所有的routers知道了整个网络的拓扑结构以后,可路由协议就可以用来发送数据.一般的,可路由协议分配给接口,用来决定数据包的投递方式.这类例子有IP和IPX

路由:把1个数据包从1个设备发送到不同网络里的另1个设备上去.这些工作依靠routers来完成.routers并不关心主机,它们只关心网络的状态和决定网络中的最佳路径router可以路由数据包,必须至少知道以下状况:

1.目标地址(destination address)

2.可以学习到远端网络状态的邻居router

3.到达远端网络的所有路线

4.到达远端网络的最佳路径

5.如何保持和验证路由信息

The IP Routing Process

路由原理:当IP子网中的一台主机发送IP包给同一IP子网的另一台主机时,它将直接把IP包送到网络上,对方就能收到.而要送给不同IP于网上的主机时,它要选择一个能到达目的子网上的router,把IP包送给该router,由它负责把IP包送到目的地.如果没有找到这样的router,主机就把IP包送给一个称为缺省网关(default gateway)的router上.缺省网关是每台主机上的一个配置参数,它是接在同一个网络上的某个router接口的IP地址,router转发IP包时,只根据IP包目的IP地址的网络号部分,选择合适的接口,把IP包送出去.同主机一样,router也要判定接口所接的是否是目的子网,如果是,就直接把包通过接口送到网络上,否则,也要选择下一个router来传送包.router也有它的缺省网关,用来传送不知道往哪儿送的IP包.这样,通过router把知道如何传送的IP包正确转发出去,不知道的IP包送给缺省网关,这样一级级地传送,IP包最终将送到目的地,送不到目的地的IP包则被网络丢弃了

当主机A发送个IP包到主机B,目标MAC地址使用的是默认网关的以太网接口地址.这是因为帧不能放置在远端网络.

show ip route:查看路由表信息,比如:

Router#sh ip route

(略)

Gateway of last resort is not set

C 192.168.10.0/24 is directly connected, FastEthernet0/0

C 192.168.20.0/24 is directly connected, Serial 0/0

Router#

C代表的是:直接相连

Configuring IP Routing in Our Network

当1个router收到1个目标网络号没有在路由表中列出的包的时候,它并不发送广播寻找目标网络,而是直接丢弃它

几种不同类型的路由:

1.静态路由(static routing)

2.默认路由(default routing)

3.动态路由(dynamic routing)

Static Routing

静态路由:手动填加路由线路到路由表中,优点是:

1.没有额外的router的CPU负担

2.节约带宽

3.增加安全性

缺点是:

1.网络管理员必须了解网络的整个拓扑结构

2.如果网络拓扑发生变化,管理员要在所有的routers上手动修改路由表

3.不适合在大型网络中

静态路由的配置命令:ip route [dest-network] [mask] [next-hop address 或exit interface][administrative distance] [permanent]

ip route:创建静态路由

dest-network:决定放入路由表的路由表

mask:掩码

next-hop address:下1跳的router地址

exit interface:如果你愿意的话可以拿这个来替换next-hop address,但是这个是用于点对点(point-to-point)连接上,比如广域网(WAN)连接,这个命令不会工作在LAN上

administrative distance:默认情况下,静态路由的管理距离是1,如果你用exit interface代替next-hop address,那么管理距离是0

permanent:如果接口被shutdown了或者router不能和下1跳router通信,这条路由线路将自动从路由表中被删除.使用这个参数保证即使出现上述情况,这条路线仍然保持在路由表中

静态路由的具体配置:

Router Network Address Interface Address

RouterA 192.168.10.0 fa0/0 192.168.10.1

192.168.20.0 s0/0 192.168.20.1

RouterB 192.168.20.0 s0/0 192.168.20.2

192.168.40.0 s0/1 192.168.40.1

192.168.30.0 fa0/1 192.168.30.1

RouterC 192.168.40.0 s0/0 192.168.40.2

192.168.50.0 fa0/0 192.168.50.1

准备工作:先配置RouterA,B和C的基本信息,注意RouterB作为DCE提供时钟频率:

RouterA(config)#int fa0/0

RouterA(config-if)#ip address 192.168.10.1 255.255.255.0

RouterA(config-if)#no shut

RouterA(config-if)#int s 0/0

RouterA(config-if)#ip address 192.168.20.1 255.255.255.0

RouterA(config-if)#no shut

RouterA(config-if)#^Z

RouterA#copy run start

RouterB(config)#int fa0/0

RouterB(config-if)#ip address 192.168.30.1 255.255.255.0

RouterB(config-if)#no shut

RouterB(config-if)#int s 0/0

RouterB(config-if)#ip address 192.168.20.2 255.255.255.0

RouterB(config-if)#clock rate 64000

RouterB(config-if)#no shut

RouterB(config-if)#ip address 192.168.40.1 255.255.255.0

RouterB(config-if)#clock rate 64000

RouterB(config-if)#no shut

RouterB(config-if)#^Z

RouterB#copy run start

RouterC(config)#int fa0/0

RouterC(config-if)#ip address 192.168.50.1 255.255.255.0

RouterC(config-if)#no shut

RouterC(config-if)#int s 0/0

RouterC(config-if)#ip address 192.168.40.2 255.255.255.0

RouterC(config-if)#no shut

RouterC(config-if)#^Z

RouterC#copy run start

配置RouterA静态路由:

RouterA了解自己的网络192.168.10.0和192.168.20.0(直接相连),所以RouterA的路由表必须加入192.168.30.0和192.168.40.0, 192.168.50.0的信息,注意下1跳接口,如下:

RouterA(config)#ip route 192.168.30.0 255.255.255.0 192.168.20.2

RouterA(config)#ip route 192.168.40.0 255.255.255.0 192.168.20.2

RouterA(config)#ip route 192.168.50.0 255.255.255.0 192.168.20.2

验证路由信息:

RouterA#sh ip route

(略)

S 192.168.50.0 [1/0] via 192.168.20.2

(略)

S代表静态路由,[1/0]分别为管理距离和度

配置RouterB静态路由:

RouterB所必须学习到的网络应该是192.168.10.0和192.168.50.0,注意它们的下1跳接口地址,配置如下:

RouterB(config)#ip route 192.168.10.0 255.255.255.0 192.168.20.1

RouterB(config)#ip route 192.168.50.0 255.255.255.0 192.168.40.2

配置RouterC静态路由:

RouterC所必须学习到的网络应该是192.168.10.0,192.168.20.0和192.168.30.0,注意它们的下1跳接口地址,配置如下:

RouterC(config)#ip route 192.168.10.0 255.255.255.0 192.168.40.1

RouterC(config)#ip route 192.168.20.0 255.255.255.0 192.168.40.1

RouterC(config)#ip route 192.168.30.0 255.255.255.0 192.168.40.1

V erifying Your Configuration

根据上面的拓扑结构,我们来验证下是否能够端到端的ping通:

RouterC#ping 192.168.10.1

(略)

Sending 5, 100-byte ICMP Echos to 192.168.10.1, timeout is 2 seconds:

!!!!!

(略)

RouterA#ping 192.168.50.1

(略)

Sending 5, 100-byte ICMP Echos to 192.168.50.1, timeout is 2 seconds:

!!!!!

(略)

2端都能ping通,说明没问题

Default Routing

默认路由:一般使用在stub网络中,stub网络是只有1条出口路径的网络.使用默认路由来发送那些目标网络没有包含在路由表中的数据包.根据上面的拓扑图,你就不能把默认路由定义在RouterB上,因为RouterB拥有不止1个出口路径接口.其实你可以把默认路由理解成带通配符(wildcard)的静态路由

配置默认路由:

首先要去掉之前配置的静态路由

RouterC(config)#no ip route 192.168.10.0 255.255.255.255 192.168.40.1

RouterC(config)#no ip route 192.168.20.0 255.255.255.255 192.168.40.1

RouterC(config)#no ip route 192.168.30.0 255.255.255.255 192.168.40.1

接下来配置默认路由:

RouterC(config)#ip route 0.0.0.0 0.0.0.0 192.168.40.1

额外的命令,使各个接口打破分类IP规则,12.x的IOS默认包含这条命令,如下:

RouterC(config)#ip classless

再验证下:

RouterC(config)#^Z

RouterC#sh ip route

(略)

S* 0.0.0.0/0 [1/0] via 192.168.40.1

S*代表默认路由

Dynamic Routing

动态路由协议,有很多优点,灵活等等,但是缺点也有,比如占用了额外的带宽,CPU负荷高组网利用到的2种路由协议:内部网关协议(Interior Gateway Protocols,IGPs)和外部网关协议(Exterior Gateway Protocols,EGPs)自治系统(Autonomous System,AS):同1个管理域的网络集合,意味着在这里面的所有routers共享相同的路由表信息IGPs:在相同的AS内交换路由信息EGPs:AS间的通信

Routing Protocol Basics

Administrative Distances

管理距离(AD): 0到255之间的1个数,它表示一条路由选择信息源的可信性值.该值越小,可信性级别越高.0为最信任,255为最不信任即没有从这条线路将没有任何流量通过.假如1个router收到远端的2条路由更新,router将检查AD,AD值低的将被选为新路线存放于路由表中.假如它们拥有相同的AD,将比较它们的度(metric).度低的将作为新线路.假如它们的AD和度都一样,那么将在2条线路做均衡负载.

一些常用路由协议默认的AD:

1.直接相连:0

2.静态路由:1

3.EIGRP:90

4.IGRP:100

5.OSPF:110

6.RIP:120

记住,如果你在条线路上配置了静态路由,又配置了RIP,默认情况下,router只会使用静态路由,因为它的AD为1小于RIP的AD

Routing Protocols

3种路由协议:

1.距离向量(distance vector)

2.链路状态(link state)

3.混合型(hybrid)

距离向量:用于根据距离(distance)来判断最佳路径,当1个数据包每经过1个router 时,被称之为经过1跳.经过跳数最少的则作为最佳路径.这类协议的例子有RIP和IGRP,它们将整个路由表向与它们直接相连的相邻routers

链路状态:也叫最短路径优先(shortest-path-first)协议.每个router创建3张单独的表,1张用来跟踪与它直接相连的相邻router;1张用来决定网络的整个拓扑结构;另外1张作为路由表.所以这种协议对网络的了解程度要比距离向量高.这类协议例子有OSPF 混合型:综合了前2者的特征,这类协议的例子有EIGRP

Distance-V ector Routing Protocols

距离向量路由算法将完整的路由表传给相邻router,然后这个router再把收到的表的选项加上自己的表来完成整个路由表,这个叫做routing by rumor,因为这个router是从相邻router接受更新而非自己去发现网络的变化。

RIP就是距离向量协议的例子.RIP使用跳数来决定最佳路径,假如到达1个网络有2条跳数相同的链路,那么将均衡负载在这2条链路上,平均分配,RIP最多支持6条均衡链路

针孔拥塞(pinhole congestion):假如2条到达远端网络的链路1和2的跳数均为1,但是链路1的带宽是56kbps,2的是T1线路1544kbps,显然,走链路2好过走链路1,但是RIP

使用跳数作为度,所以RIP会把数据平均分配到链路1和2上,这就造成了pinhole congestion

我们来了解下距离向量协议的启动过程:当router启动的时候,只有那些与它们直接相连的网络号出现在它们自己的路由表里,当距离向量协议在每个router上启动后,路由表将从相邻router获得更新信息来更新自己的路由表.每个router将完整的路由表,包含网络号,出口接口和跳数,发送给相邻router.接下来,路由表包含了完整的网络信息,达到汇聚(converged)状态.另外,在汇聚期间,没有数据将会被传送,所以说,快速汇聚就成了1个必不可少的话题

Routing Loops

距离向量协议通过向所有接口周期性的广播路由更新来跟踪整个网络的变化,这些广播包括了完整的路由表.这样看上不错,但是它却给CPU增加了负荷和占用了额外的带宽.而且,汇聚过慢的话容易导致路由表的不一致性和容易产生路由循环(routing loops) 路由循环的例子:

假如网络5出问题了,不工作了,E就发送更新给C汇报情况,于是,C开始停止通过E 来路由信息到网络5,但是这个时候A,B和D还不知道网络5出问题了.所以它们仍然继续发送更新信息.C发送更新给B说停止路由到网络5.但是此时A和D还没有更新,所以它们觉得网络5仍然可用,而且跳数为3.接下来,A发送更新说:嘿!网络5还可用.B和D 接受到A发来的更新后,没办法,也相同的觉得可用经过A到达网络5,并且认为网络5可用.所以就这样,1个目标网络是网络5的数据包将进过A到B,然后又回到A……

Maximum Hop Count

路由循环的问题也可用描述为跳数无限(counting to infinity).其中的1个解决办法就是定义最大跳数(maximum hop count).RIP是这样定义最大跳数的:最大跳数为15,第16跳为不可达.但是这样不能根本性的祛除路由循环的问题

Split Horizon

另外1个解决办法就是水平分裂(split horizon),它规定由1个接口发送出去的路由信息不能再朝这个接口往回发送.这个办法减少了路由信息的不正确性和负载Route Poisoning

路由破坏(route poisoning)也用于避免不一致的更新信息来阻止网络循环.由刚才的

拓扑图,当网络5不可用了,E将把这条线路的度变为16,即不可达,破坏这条线路.这样C 就不会发送错误的更新了.当C收到E的route poisoning信息,,C发送个叫做poison reverse 的更新给E,这样保证了所有的线路都知道那条破坏线路的信息,来防止循环Holddowns

抑制计时(holddown): 一条路由信息无效之后,一段时间内这条路由都处于抑制状态,即在一定时间内不再接收关于同一目的地址的路由更新.如果,路由器从一个网段上得知一条路径失效,然后,立即在另一个网段上得知这个路由有效.这个有效的信息往往是不正确的,抑制计时避免了这个问题,而且,当一条链路频繁起停时,抑制计时减少了路由的浮动,增加了网络的稳定性.它使用了触发更新(trigger update)来重新设定holddown计时器触发更新:和一般的更新不一样,当路由表发生变化时,更新报文立即广播给相邻的所有路由器,而不是等待30秒的更新周期.同样,当一个路由器刚启动RIP时,它广播请求报文.收到此广播的相邻路由器立即应答一个更新报文,而不必等到下一个更新周期.这样,网络拓扑的变化会最快地在网络上传播开,减少了路由循环产生的可能性触发更新重新设定计时器的几个情况:

1.计时器超时

2.收到1个拥有更好的度的更新

3.刷新时间(flush time)

Routing Information Protocol(RIP)

RIP是一种距离向量路由协议,使用跳数作为度,最大15跳,它每30秒向外发送整个路由表的信息.RIP适合于小型网络.RIP版本1(RIPv1)使用分级路由(classful routing),意思是在网络的所有设备必须使用相同的子网掩码;而RIP版本2(RIPv2)使用无分类路由(classless routing).我们这里讨论RIPv1

RIP Timers

RIP使用3种不同的计时来调节它的性能:

1.路由更新计时(route update timer)

2.路由无效计时(route invalid timer)

3.保持计时器(holddown timer)

4.路由刷新时间(route flush timer)

路由更新计时:router发送路由表副本给相邻router的周期性时间,30秒

路由无效计时:如果经过180秒,一个路由的选项都没有得到确认,router就认为它已失效了保持计时器:当router得知路由无效后,router将进如holddown状态,默认时间是180秒,如果在这180秒里,router接收到路由更新以后或者超过180秒,保持计时器停止计时路由刷新时间: 如果经过240秒,路由表的选项仍没有得到确认,它就被从路由表中删除

Configuring RIP Routing

配置RIP:

Router Network Address Interface Address

RouterA 192.168.10.0 fa0/0 192.168.10.1

192.168.20.0 s0/0 192.168.20.1

RouterB 192.168.20.0 s0/0 192.168.20.2

192.168.40.0 s0/1 192.168.40.1

192.168.30.0 fa0/1 192.168.30.1

RouterC 192.168.40.0 s0/0 192.168.40.2

192.168.50.0 fa0/0 192.168.50.1

先来配置RouterA,由于AD的问题,所以要先去掉之前的静态路由,如下:

RouterA(config)#no ip route 192.168.30.0 255.255.255.0 192.168.20.2

RouterA(config)#no ip route 192.168.40.0 255.255.255.0 192.168.20.2

RouterA(config)#no ip route 192.168.50.0 255.255.255.0 192.168.20.2

使用RIP配置命令为router rip,起用RIP,接下来使用network命令配置需要进行通告(advertise)的网络号,注意router的提示符,如下:

RouterA(config)#router rip

RouterA(config-router)#network 192.168.10.0

RouterA(config-router)#network 192.168.20.0

RouterA(config-router)#^Z

RouterA#

注意配置的网络号,是直接相连的网络,而通告非直接相连的网络任务,就交给RIP来做.还有就是要注意RIPv1是classful routing,意思是假如你使用B类172.16.0.0/24,子网172.16.10.0,172.16.20.0和172.16.30.0,在配置RIP的时候,你只能把网络号配置成network 172.16.0.0

配置RouterB,由于AD的问题,所以要先去掉之前的静态路由,如下:

RouterB(config)#no ip route 192.168.50.0 255.255.255.0 192.168.40.2

RouterB(config)#no ip route 192.168.10.0 255.255.255.0 192.168.20.1

配置RIP:

RouterB(config)#router rip

RouterB(config-router)#network 192.168.20.0

RouterB(config-router)#network 192.168.30.0

RouterB(config-router)#network 192.168.40.0

RouterB(config-router)#^Z

RouterB#

配置RouterC,由于AD的问题,所以要先去掉之前的默认路由,如下:

RouterC(config)#no ip route 0.0.0.0 0.0.0.0 192.168.40.1

配置RIP:

RouterC(config)#router rip

RouterC(config-router)#network 192.168.50.0

RouterC(config-router)#network 192.168.40.0

RouterC(config-router)#^Z

RouterC#

V erifying the RIP Routing Tables

验证配置好的路由信息,如下:

RouterA#sh ip route

(略)

R 192.168.50.0 [120/2] via 192.168.20.2, 00:00:23, Serial0/0

(略)

注意R代表的是RIP,[120/2]分别代表AD和度,在这里,度即为跳数.假如说你在这个信息里看到的是[120/15],那么下1跳为16,不可达,这条路由线路也将随之无效,将被丢弃Holding Down RIP Propagation

如果你想阻止RIP更新信息传播到LANs和W ANs上,可以使用passive-interface命令,这条命令可以防止RIP更新信息广播从你定义了的接口上发送出去,但是这个接口仍然可以接受到更新信息,如下:

RouterA(config)#router rip

RouterA(config-router)#network 192.168.10.0

RouterA(config-router)#passive-interface s 0/0

Interior Gateway Routing Protocol(IGRP)

IGRP是Cisco私有的距离向量路由协议,意思是说只有Cisco的routers才可以运行IGRP.IGRP的一些特点有:最大跳数255,默认100跳,这样就比较适合中大型网络.而且,IGRP默认使用带宽和延迟(delay)作为度来寻找最佳路径,这样的度就叫复合度(composite metric).当你配置IGRP的时候,你必须以AS号作为配置参数,所有的routers 必须使用相同的AS号来共享路由表信息. IGRP支持6条链路的均衡负载下面是一些你在RIP中找不到的,IGRP专有的特征:

1.IGRP可以在1个大型组网中使用到

2.使用AS号

3.每90秒发送完整的路由更新

4.使用带宽和延迟作为度

IGRP Timers

IGRP计时:

1.路由更新计时:默认90秒

2.路由无效计时:默认270秒

3.保持计时器:默认280秒(3倍更新时间+10秒)

4.路由刷新时间: 默认630秒

Configuring IGRP Routing

Router Network Address Interface Address

RouterA 192.168.10.0 fa0/0 192.168.10.1

192.168.20.0 s0/0 192.168.20.1

RouterB 192.168.20.0 s0/0 192.168.20.2

192.168.40.0 s0/1 192.168.40.1

192.168.30.0 fa0/1 192.168.30.1

RouterC 192.168.40.0 s0/0 192.168.40.2

192.168.50.0 fa0/0 192.168.50.1

配置RouterA,注意AS号的范围为1到65535,如下:

RouterA(config)#router igrp ?

<1-65535> Autonomous system number

RouterA(config)#router igrp 10

RouterA(config-router)#netw 192.168.10.0

RouterA(config-router)#netw 192.168.20.0

RouterA(config-router)#^Z

RouterA#

记住IGRP也是classful routing,而且配置网络号是与它直接相连的网络

配置RouterB,如下:

RouterB(config)#router igrp 10

RouterB(config-router)#netw 192.168.20.0

RouterB(config-router)#netw 192.168.30.0

RouterB(config-router)#netw 192.168.40.0

RouterB(config-router)#^Z

RouterB#

配置RouterC,如下:

RouterC(config)#router igrp 10

RouterC(config-router)#netw 192.168.40.0

RouterC(config-router)#netw 192.168.50.0

RouterC(config-router)#^Z

RouterC#

注意RouterA,RouterB和RouterC使用相同的AS号

V erifying the IGRP Routing Tables

我们来验证下:

RouterA#sh ip route

(略)

I 192.168.50.0 [100/170420] via 192.168.20.2, Serial0/0

(略)

I代表IGRP[100/170420]为AD和复合度,度越低越好

V erifying Your Configurations

一些验证性的命令:

show protocols:显示所有的可路由协议和查看接口及其相关协议,如下:

RouterB#sh protocols

Gloabal values:

Internet Protocol routing is enabled

FastEthernet0 is up, line protocol is up

Internet Address is 192.168.30.1/24

Serial0/0 is up, line protocol is up

Internet Address is 192.168.20.2/24

Serial0/1 is up, line protocol is up

Internet Address is 192.168.40.1/24

RouterB#

show ip protocols:显示router上配置好了的路由协议,如下:

RouterB#sh ip protocols

Routing Protocols is “rip”

(略)

debug ip rip:发送控制台消息显示有关在router接口上收发RIP数据包的信息,关闭

debug,使用undebug all或者no debug all命令,如下:

RouterB#debug ip rip

RIP protocol debugging is on

RouterB#

07:12:56: RIP: received v1 update from 192.168.40.2 on Serial0/1

07:12:56: 192.168.50.0 in 1 hops

(略)

RouterB#undebug all

All possible debugging has been turned off

RouterB#

debug ip igrp events:提供在网络中运行的IGRP路由选择信息的概要,关闭使用undebug ip igrp events或undebug all命令,如下:

RouterB#debug ip igrp events

IGRP event debugging is on

07:13:50: IGRP: received request from 192.168.40.2 on Serial0/1

07:13:50: IGRP: sending update to 192.168.40.2 via Serial1(192.168.40.1)

07:13:51: IGRP: Update contains 3 interior, 0 system, and 0 exterior routes

07:13:51: IGRP: Total route in update: 3

(略)

RouterB#un all

All possible debugging has been turned off

debug ip igrp transactions:显示来自相邻router要求更新的请求消息和由router发到相邻router的广播消息,关闭使用undebug all,如下:

RouterB#debug ip igrp transactions

07:14:05: IGRP: received request from 192.168.40.2 on Serial1

07:14:05: IGRP: sending update to 192.168.40.2 via Serial1(192.168.40.1)

07:14:05: subnet 192.168.30.0, metric=1100

07:14:05: subnet 192.168.20.0, metric=158250

(略)

RouterB#un all

All possible debugging has been turned off

RouterB#。

CCNA中文笔记第6章:2层交换

Chapter6 Layer 2 Switching

Switching Services

路由协议有在阻止层3的循环的过程.但是假如在你的switches间有冗余的物理连接,路由协议并不能阻止层2循环的发生,这就必须依靠生成树协议(Spanning Tree Protocol,STP)不像bridges使用软件来创建和管理MAC地址过滤表,switches使用ASICs 来创建和管理MAC地址表,可以把switches想象成多端口的bridges

层2的switches和bridges快于层3的router因为它们不花费额外的时间字查看层3包头信息,相反,它们查看帧的硬件地址然后决定是转发还是丢弃.每个端口为1个冲突域,所有的端口仍然处于1个大的广播域里

层2交换提供:

1.基于硬件的桥接(ASIC)

2.线速(wire speed)

3.低延时(latency)

4.低耗费

Bridging vs. LAN Switching

桥接和层2交换的一些区别和相似的地方:

1.bridges基于软件,switches基于硬件

2.switches和看作多端口的bridges

3.bridges在每个bridge上只有1个生成树实例,而switches可以有很多实例

4.switches的端口远多于bridges

5.两者均转发层2广播

6.两者均通过检查收到的帧的源MAC地址来学习

7.两者均根据层2地址来做转发决定

Three Switch Function at Layer 2

层2交换的一些功能:

1.地址学习(address learning):通过查看帧的源MAC地址来加进1个叫做转发/过滤表的MAC地址数据库里

2.转发/过滤决定(forward/filter decisions):当1个接口收到1个帧的时候,switch在MAC地址数据库里查看目标MAC地址和出口接口,然后转发到符合条件的那个目标端口去

3.循环避免(loop avoidance):假如有冗余的连接,可能会造成循环的产生,STP就用来破坏这些循环

Spanning Tree Protocol(STP)

Spanning Tree T erms

Digital Equipment Coporation(DEC)在被收购和重命名为Compaq的时候,创建了原始的STP,之后IEEE创建了自己的STP叫做802.1D版本的STP.和之前的DEC的STP不兼容.STP的主要任务是防止层2的循环,STP使用生成树算法(spanning-tree algorithm,STA)来创建个拓扑数据库,然后查找出冗余连接并破坏它。

我们来看些关于STP的术语:

1.STP:bridges之间交换BPDU信息来检测循环,并通过关闭接口的方式来破坏循环

2.根桥(root bridge):拥有最好的bridge ID即为根桥,网络中的一些诸如哪些端口被堵塞(block)哪些端口作为转发模式的决定都由根桥来决定

3.BPDU:Bridge Protocol Data Unit,所有的switches通过交换这些信息来选择根switch

4.bridge ID:用于STP跟踪网络中的所有switches,这个ID由bridge优先级(priority)和MAC地址符合而成,优先级默认为32768,ID最低的即为根桥

5.非根桥(nonroot bridge):不是根桥的全为非根桥,非根桥交换BPDUs来更新STP拓扑数据库

6.根端口(root port):与根桥直接相连的端口,或者是到根桥最短的接口.如果到根桥的连接不止1条,将比较每条连接的带宽,耗费(cost)低的作为根端口;如果耗费相同就比较bridge ID,ID低的将被选用

7.指定端口(designated port):耗费低的端口,作为转发端口

8.端口耗费(port cost):带宽来决定

9.非指定端口(nondesignated port):耗费较高,为堵塞模式(blocking mode),即不转发帧

10.转发端口(forwarding port):转发端口用来转发帧

11.堵塞端口(blocked port):不转发帧,用来防止循环的产生,虽然不转发,但是它可以监听(listen)帧

Spanning Tree Operations

之前说过:STP的任务就是查找出网络中的所有连接,并关闭些会造成循环的冗余连接.STP首先选举1个根桥,用来对网络中的拓扑结构做决定.当所有的switches认同了选举出来的根桥后,所有的bridge开始查找根端口.假如在switches之间有许多连接,只能有1个端口作为指定端口

Selecting the Root Bridge

bridge ID用来在STP域里选举根桥和决定根端口,这个ID是8字节长,包含优先级和设备的MAC地址,IEEE版本的STP的默认优先级是32768.决定谁是根桥,假如优先级一样,那就比较MAC地址,MAC地址小的作为根桥

Selecting the Designated Port

假如不止1个连接到根桥,那就开始比较端口耗费,耗费低的作为根端口,下面是一些典型的耗费标准:

1.10Gbps:2

2.1Gbps:4

3.100Mbps:19

4.10Mbps:100

Spanning-Tree Port States

运行STP的bridges和switches的5种状态:

1.堵塞(blocking):不转发帧,只监听BPDUs,主要目的是防止循环的产生.默认情况下,当switch启动时所有端口均为blocking状态

2.监听(listening):端口监听BPDUs,来决定在传送数据帧之前没有循环会发生

3.学习(learning):监听BPDUs和学习所有路径,学习MAC地址表,不转发帧

4.转发(forwarding):转发和接收数据帧

5.禁用(disabled):不参与帧的转发和STP,一般在这个状态的都是不可操作的。

一般来说,端口只处于转发和堵塞状态,如果网络拓扑发生了变化,端口会进入监听和学习状态,这些状态是临时的

Convergence

汇聚,也叫收敛(convergence):当所有端口移动到非转发或堵塞状态时,开始收敛,在收敛完成前,没有数据将被传送.收敛保证了所有的设备拥有相同的数据库达到一致.一般来说从堵塞状态进入到转发状态需要50秒

Spanning Tree Example

我们来看1个STP的例子,拓扑图给出了已知的MAC地址,并且所有优先级均为32768:

注意A的MAC地址最小,优先级均为32768,所以A作为根桥,并且要注意的是根桥的所有端口均作为转发模式(指定端口).接下来决定根端口,直接与根桥相连的作为根端口,而且作为转发模式,所以可以判定出根端口个指定端口,bridge ID决定指定和非指定端口.但是注意D和E之间,由于D的bridge ID小,所以D的为指定端口,E的作为非指定端口,如下:

LAN Switch Types

LAN的交换类型决定了当switch的端口接收到1个帧的时候如何去处理

延时(latency):指数据包进入一个网络设备到离开该设备的出口接口所花的时间,这个根据不同的交换模式也不一样

3种交换模式:

1.cut-through(fastforward):Cisco称这种模式叫cut-through,fastforward或者real time 模式,使用这种模式的时候,LAN switch只读取到帧的目标地址为止,减少延时,但是不适合与高偏向错误率的网络

2.fragmentfree(modified cut-through):和cut-through类似,但是LAN switch读取到数据(data)部分的前64字节,这个是Catalyst 1900的默认模式

3.store-and-forward:在这个模式下,LAN switch复制整个帧到它的缓冲区里,然后计算CRC,也帧的长短可能不一样,所以延时根据帧的长短而变化.如果CRC不正确,帧将被丢弃;如果正确,LAN switch查找硬件目标地址然后转发它们

3种模式对帧的读取程度具体如下:

Configuring the Catalyst 1900 and 2950 Switches

1900是款低端switch产品,分为1912和1924系列:1912是有12个10BaseT端口而1924是有24个10BaseT端口

1900 and 2950 Switch Startup

当1900启动后,先运行POST,此时每个端口的发光二级管(LEDs)是绿色的,当POST 完成后,LEDs开始闪烁然后熄灭;假如POST发现某个端口出问题了的话,系统LED和那个出问题的端口的LED开始变黄.假如你的console线缆接好了的话,POST开始显示菜单,如下:

1 user(s) now active on Management Console.

User Interface Menu

[M] Menus

[I] IP Configuration

Enter Selection:K

CLI session with the switch is open

To end the CLI session, enter [Exit].

>

而2950的启动,有点像router,先进入setup模式.但是默认你可以不对其进行配置,启动如下:

--- System Configuration Dialog ---

Would you like to enter the initial configuration dialog? [yes/no]: no

Press RETURN to get started!

00:04:53: %LINK-5-CHANGED: Interface Vlan1, changed state to administratively down

00:04:54: %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan1, changed state to down

Switch>

Setting the Passwords

配置密码:

1.登陆密码(用户模式):防止未授权用户登陆

2.启用密码(特权模式):防止未授权用户修改配置

Setting the User Mode and Enable Mode Passwords

1900下,输入K进入CLI,输入enable进入特权模式,再输入config t进入全局配置模式,如下:

>en

#config t

(config)#

当进入全局配置模式后,使用enable password命令配置登陆密码个启用密码,如下: (config)#enable password ?

level Set exec level password

(config)#enable password level ?

<1-15> Level Number

level1为登陆密码,level15为启用密码,密码长度范围是4到8字符之间,如下:

(config)#enable password level 1 nocoluvsnoko

Error: Invalid password length.

Password must be between 4 and 8 characters

重配置并验证:

(config)#enable password level 1 noco

(config)#enable password level 15 noko

(config)#exit

#exit

2950下的配置和配置router有点类似,如下:

Switch>en

Switch#conf t

Switch(config)#line ?

<0-16> First Line number

console Primary terminal line

vty Virtual terminal

Switch(config)#line vty ?

<0-15> First Line number

Switch(config)#line vty 0 15

Switch(config-line)#login

Switch(config-line)#password noko

Switch(config-line)#line con 0

Switch(config-line)#login

Switch(config-line)#password noco

Switch(config-line)#exit

Switch(config)#exit

Switch#

Set the Enable Secret Password

enable secret比enable password更安全,而且同时设置了2者的话,只有前者起作用1900下的配置,注意在1900下,enable secret和enable password可以设置成一样的,如下: (config)#enable secret noko

2950下的配置和router类似,但是enable secret和enable passwor不可以设置成一样的,如下:

Switch(config)#enable password noko

Switch(config)#enable secret noko

The enable secret you have chosen is the same as your enable password.

This is not recommended. Re-enter the enable secret.

Switch(config)#enable secret noco

Switch(config)#

Setting the Hostname

给1900配置主机名,使用hostname命令,如下:

(config)#hostname Noko

Noko(config)#

给2950配置主机名,使用hostname命令,如下:

Switch(config)#hostname Noco

Noco(config)#

Setting IP Information

你可以不配置IP信息,直接把线缆插进端口,一样可以工作.配置IP地址信息有2点原因:

1.通过telnet或其他软件方式来管理switch

2.配置VLANs和其他等网络功能

默认下,没有IP地址和默认网关信息配置,在1900下,使用show ip命令查看默认IP 配置,如下:

1900#sh ip

IP Address: 0.0.0.0

Subnet Mask: 0.0.0.0

Default Gateway: 0.0.0.0

Management VLAN: 1

Domain name:

Name server 1: 0.0.0.0

Name server 2: 0.0.0.0

HTTP server: Enable

HTTP port: 80

RIP: Enable

在1900下使用ip address和ip default-gateway命令来配置IP地址信息和默认网关信息,如下:

1900(config)#ip address 172.16.10.16 255.255.255.0

1900(config)#ip default-gateway 172.16.10.1

1900(config)#

2950下的配置是在VLAN1接口下配置,VLAN1是管理VLAN,默认所有接口均是VLAN1的成员,配置如下:

2950(config)#int vlan1

2950(config-if)#ip address 172.16.10.17 255.255.255.0

2950(config-if)#no shut

2950(config-if)#exit

2950(config)#ip default-gateway 172.16.10.1

2950(config)#

注意2950的IP地址配置是在VLAN1接口下,另外要注意打开接口

Configuring Interface Description

配置描述信息,在接口配置模式下使用description命令,1900下的描述信息不能使用空格键,如下:

1900(config)#int e0/1

1900(config-if)#description Cisco_VLAN

1900(config-if)#int f0/26

1900(config-if)#description trunk_to_building_4

1900(config-if)#

2950下的描述就可以使用空格键,如下:

2950(config)#int fa 0/1

2950(config-if)#description Sales Printer

2950(config-if)#^Z

可以使用show interface和show running-config命令来查看这些描述信息

Erasing the Switch Configuration

1900和2950的配置文件是存储在NVRAM里的,但是1900里你不能查看NVRAM 或startup-config的内容,只能查看running-config的内容,在1900里,你对配置所进行的修改自动被复制到NVRAM里,所以没有copy run start这样的命令;但是2950就有startup-config和running-config,使用copy run start来保存配置到NVRAM里,擦除2950里startup-config文件使用erase startup-config命令;擦除1900里的使用delete命令.如下: 1900#delete ?

nvram NVRAM configuration

vtp Reset VTP configuration to defaults

1900#delete nvram

2950如下:

2950#erase startup-config。

相关文档