<VLAN间路由>
VLAN之间在二层是分隔开的,如果要实现VLAN之间的通信,必须要借助到三层路由功能。
·支持VLAN间路由的设备:
1.任意的3层交换机
2.支持以太口起子接口的路由器(2600以上)
方式1:使用路由器,采用 单臂路由 的方式,路由器应该能够支持802.1Q或ISL
缺点:路由器的转发性能较低,容易形成网络瓶颈
性价比 较低
路由器:
a)存在LAN(Ethernet)接口、WAN接口(Serial口)
b)拥有丰富的功能(NAT、VPN等功能)
方式2:使用三层交换机,转发效率高(L2线速转发、L3线速转发)
Cisco三层端口:
a)Routed Port(将物理接口--缺省是交换端口、二层端口,设置为路由端口、三层端口)
b)SVI(Switch Virtual Interface):interface vlan VLAN_ID
<单臂路由(Router on a Stick)>
通过使用路由器完成VLAN之间的路由,路由器上要起子接口,并且要和交换机之间形成trunk。
例如: R
(f1/0)
|
|
(f1/5)
SW
(f1/6)(f1/7)
/
/
(f1/0) (f1/0)
PC1 PC2
R的配置:
R#sh run
Building configuration...
interface FastEthernet1/0
no ip address
duplex auto
speed auto
!
interface FastEthernet1/0.1
encapsulation dot1Q 10
ip address 172.16.1.1 255.255.255.0
!
interface FastEthernet1/0.2
encapsulation dot1Q 20
ip address 172.16.2.1 255.255.255.0
SW的配置:
SW#sh run int f1/5
Building configuration...
Current configuration : 71 bytes
!
interface FastEthernet1/5
switchport mode trunk
no ip address
end
SW#sh run int f1/6
Building configuration...
Current configuration : 75 bytes
!
interface FastEthernet1/6
switchport access vlan 10
no ip address
end
SW#sh run int f1/7
Building configuration...
Current configuration : 75 bytes
!
interface FastEthernet1/7
switchport access vlan 20
no ip address
end
SW#sh vlan bri
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Fa1/0, Fa1/1, Fa1/2, Fa1/3
Fa1/4, Fa1/8, Fa1/9, Fa1/10
Fa1/11, Fa1/12, Fa1/13, Fa1/14
Fa1/15
10 VLAN0010 active Fa1/6
20 VLAN0020 active Fa1/7
1002 fddi-default active
1003 token-ring-default active
1004 fddinet-default active
1005 trnet-default active
此时,我们将PC1的网关设为路由器F1/0.1接品的IP,将PC2的网关设为路由器F1/0.2的接口IP,并且PC1在VLAN10,PC2在VLAN20中.
PC1PingPC2:
PC1#ping 172.16.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.2.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 56/92/164 ms
spanning-tree portfast trunk 在交换机与路由器相连的端口上用,这样才能快速收敛,这一命令主要用在单臂路由上
clear arp-cache 清ARP表,因为在路由器中,ARP表的老化时间是4个小时,如果不手工清,会等很久。
有时做实验时会出现P不通的现象
<交换机上的三层接口>
CISCO三层交换机支持三种不同类型的三层接口:
1、路由接口
什么时候需要routed port?
当MLS交换机直接连到路由器时,此时在子网中只有两个设备(路由器和MLS的一个物理接口)。
MLS交换机的routed port有如下特性:
1)接口不属于任何VLAN(甚至不属于VLAN 1)。
2)交换机对该接口不保存任何2层交换表信息。
3)3层设置,如IP地址,都像路由器一样在该物理接口上配置。
4)邻接表列出了外发物理接口或PortChannel,这意味着不再需要2层交换逻辑。
Configuration:
step1:
ip routing
step2:
int f0/1
no switchport
ip add 10.10.10.1 255.255.255.0
2、SVI(switch virtual interface)
启用VLAN的三层口 (SVI)口
interface vlan 1
ip add 10.10.10.1 255.255.255.0
no shut
这样可以理解为给我们的每个VLAN配置一个网关,网关与网关之间要通过路由来通讯。
两个网关看做路由器的两个接口,那么他们之间相互之间是可以通讯的
3、BVI (Bridge virtual interface网桥虚拟接口) 过时了,不介绍·路由接口:类似于路由器上的3层接口,是一个真正的物理接口。
默认情况下,在3550这样的三层交换机上,所有接口都是二层接口,可用以下命令改为三层接口。
interface FastEthernet0/1 将二层接口改为三层接口
no switchport
ip address 8.8.9.7 255.255.255.0
·SVI接口全称叫交换机虚拟接口,是针对每个VLAN生成的一个虚拟接口,可以配上IP地址,运行路由协议。
创建方法如下:
interface vlan 10
ip address 172.16.1.1 255.255.255.0
·另外如果想在三层SW上开启路由功能,必须先使用命令ip routing,才能运行路由协议。
实验:如何在三层交换机上启用路由功能,实现VLAN间的路由:
例如: SW(3L)
(f1/5)(f1/6)
/
/
(f1/0) (f1/0)
PC1 PC2
其中,SW的F1/5在VLAN10,F1/6在VLAN20,PC1和PC2在不同的VLAN,两台PC要实现通信
三层交换机的配置:
SW#sh run int vlan 10
Building configuration...
Current configuration : 61 bytes
!
interface Vlan10
ip address 172.16.1.1 255.255.255.0
end
SW#sh run int vlan 20
Building configuration...
Current configuration : 61 bytes
!
interface Vlan20
ip address 172.16.2.1 255.255.255.0
end
SW#sh run int f1/6
Building configuration...
Current configuration : 75 bytes
!
interface FastEthernet1/6
switchport access vlan 10
no ip address
end
SW#sh run int f1/7
Building configuration...
Current configuration : 75 bytes
!
interface FastEthernet1/7
switchport access vlan 20
no ip address
end
PC1PingPC2:
PC1#ping 172.16.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.2.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/82/132 ms
<如何在交换机上起三层路由接口并实现与其它设备的路由>
Lo -------R
(f1/0)
|
|
(f1/5)
SW(3L)
(f1/6)(f1/7)
/
/
(f1/0) (f1/0)
PC1 PC2
SW和PC的配置与上面的配置是一样的,这里在SW和R之间运行RIP协议,让PC1或PC2可以Ping通L0口1.1.1.1
SW的配置:
SW#sh run | b r r
router rip
version 2
network 10.0.0.0
network 172.16.0.0
no auto-summary
R的配置:
R#sh run | b r r
router rip
version 2
network 1.0.0.0
network 10.0.0.0
no auto-summary
看一看SW和R的中路由表:
SW#sh ip ro ri
1.0.0.0/24 is subnetted, 1 subnets
R 1.1.1.0 [120/1] via 10.1.1.1, 00:00:20, FastEthernet1/5
R#sh ip ro ri
172.16.0.0/24 is subnetted, 2 subnets
R 172.16.1.0 [120/1] via 10.1.1.2, 00:00:22, FastEthernet1/0
R 172.16.2.0 [120/1] via 10.1.1.2, 00:00:22, FastEthernet1/0
PC1Ping1.1.1.1:
PC1#ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 72/104/168 ms
----------------------------------------------------------------------------------------
<MLS(MultiLayer Switch)多层交换>
正常来说,二层数据帧的转发我们称为交换,二层的转发方式有两种:
1、软件交换:通过CPU实现传统帧的交换。
2、硬件交换:通过专门的ASIC(Application-Specific Integrated Circuit应用专用集成电路)硬件组件处理数据帧。通常能够达到线速的吞吐量。
在CISCO的设备上,对于三层IP包的转发方式有三种:
1、进程转发,也叫软件转发
2、快速转发,也叫传统的多层交换,需要利用专门的硬件组件完成IP包的转发。
3、CEF转发,基于CEF的多层交换,也需要利用专门的硬件组件完成IP包的转发。
·多层交换定义:
指的是交换机或路由器能够通过专用的硬件来交换和路由选择IP包,并通过硬件支持4-7层的交换,而不是利用CPU来完成包的转发。
就是说原来工作在第2层的局域网交换机也可以应用2层之上的协议来转发数据。3层交换机使用的是3层目的地址来实现转发,而非路由器使用的路由表。
·多层交换的好处:能够让IP包的转发速度达到接近二层交换的速度。
·SW要执行多层硬件交换,路由处理器(第3层引擎)必须将有关路由选择、交换、ACL和QOS等信息下载到硬件中。
硬件组件通常包括下列的东东:
·ASIC(Application-Specific Integrated Circuit应用专用集成电路):是专为实现某种特殊应用而开发的集成电路芯片,其功能固定,不可更改。用来实现其专门的应用时,性能绝对牛得一B。
·CAM(Content Addressable Memory)内容可寻址存储器
SW使用CAM表来存储2层的交换表。查找时是完全匹配,如果找不到,就从其他所有端口转发。
对于需要精确查找的表最有用。CAM表包括了vlan号,mac地址,port号。
·TCAM(Ternary CAM)三重内容可寻址存储器,只存在于三层交换机中
TCAM以线速处理ACL查找。
完全匹配区域/最长匹配区域/第一个匹配区域
对于需要最长匹配查找的表最有用。
三种三层(IP包)的转发方式:
一、进程交换:也叫软件转发,最原始的转发方式。在进程转发方式中,每一个IP包的转发都需要CPU来处理,没有额外的硬件组件来负责。
对于接收到的每一个IP包,都要按以下步骤来转发:
1、找出IP包中的目标IP地址
2、按照目标IP地址在路由表中进行最长匹配查找,找到匹配的路由。
3、有必要的话,再进行路由的递归查找,找到相应的出接口。
4、再查找ARP表,找到去往下一跳的MAC地址。
5、重写二层的源、目MAC地址,再从相应出接口转发出去。
这是最传统的转发方式,使用这种转发方式的路由器在做负载均衡时是基于包的负载均衡
R1(config-if)#no ip route-cache 在每个接口下关闭cache就启用了进程交换
二、基于NetFlow的MLS:也叫传统的MLS
基于网流的交换和负载均衡
MLS使用ASIC能够对被路由的数据包执行2层重写(S/D MAC、CRC)。
第三层引擎(路由处理器)和交换ASIC协同工作,在cache中建立第3层条目。第三层条目可以有如下三种方式:
1、只包括目的IP地址
2、包括源和目地IP地址
3、包含第四层协议信息的完整流信息
传统MLS的工作原理:
交换机将收到的数据流中的第一个包交给三层引擎处理,后者以进程交换的方式处理(软交换)。在对第一个包处理完毕后,在硬件交换组件中生成一个MLS条目,这个条目包含了二层的重写信息。对于后续的数据流就可以使用硬件转发组件直接进行转发了。
所以这种方式被称为“一次路由,多次交换”,即流的第一个分组被路由器软件路由,后续分组则被硬件转发。
同一个流(flow:源IP、目标IP、协议、源端口、目标端口)的第一个报文需要进行 Process-switching,后续的报文利用route-cache 进行 fast-switching
三、基于CEF的MLS:(Cisco Express Forwarding)
控制平面:路由处理器(第3层引擎)
数据平面:用来进行数据转发的硬件组件
CEF是一种基于拓扑的转发模型,它预先将所有路由信息加入FIB(Forwarding Information Base),使SW能快速查找路由信息。
CEF中包括两个重要组件:
·FIB:类似于路由表,包含了路由转发信息。
·Adjacency:存储2层编址信息。就是ARP表的一个COPY。
第3层引擎和硬件交换组件维护一个FIB/Adjacency。
·ARP Throttling(ARP抑制)必须开启CEF才能开启这一功能
ip routing //要开启CEF,首先要开启路由功能
ip cef //开启CEF
int f0/5
no ip router-cache cef //在接口下关闭CEF
show ip cef
show cef interface s0
show adjacency [detail]
ARP Throttling(抑制)--对于启用CEF的交换机,如果收到一组数据包,但是在自已的Adjacency表中没有对应表项。将通过第三层引擎发出三个ARP请求(广播包),并开始对后续的数据包进行抑制,直到收到ARP回应才解除抑制。如果两秒钟以后还没有回应,也将解除抑制,把后续的数据包转发给第三层引擎来重新发起ARP请求。
默认情况下CEF是基于流的负载均衡,但可以修改为基于包的负载均衡:
R1(config-if)#ip load-sharing per-packet 打开基于包的负载均衡
集中式交换和分布式交换:
·Centralized Forwarding(集中式转发)
在一个专用ASIC上做出转发决策,是所有接口的枢纽。
Series:4000/6500
·Distributed Forwarding(分布式转发)
在SW的接口或线路模块上独立地做出转发决策。
Series:3550/6500(带有分布卡)
<NTP(Network Time Protocol)>
·在设备的监控和排错过程中,准确的时钟设置是必要的。
NTP主要用来同步系统时钟。是基于UDP的协议。
Sw1#show clock
Sw1(config)#clock timezone GMT +8 (设置时区)
R2#clock set 13:28:38 20 Feb 2006 (设置年/月/日/时间)
1)跟Master端同步:
R2(config)#ntp master
R2#show ntp status
....Clock is synchronized, stratum 1, reference is .LOCL.
R1/R3(config)#ntp server 12.1.1.1(指定NTP Server)
...Clock is synchronized, stratum 2, reference is 12.1.1.1
R3#show ntp associations
2)跟次级时钟源同步:
R3(config)#ntp peer 13.1.1.1
Clock is synchronized, stratum 3, reference is 13.1.1.1
3)NTP认证:
R2:(NTP Master)
ntp authentication-key 1 md5 wolf
ntp authenticate
ntp trusted-key 1
ntp master 6
R1:
ntp authentication-key 1 md5 wolf
ntp authenticate
ntp trusted-key 1
ntp server 12.1.1.2 key 1
<NTP Source>
R2设loopback0(2.2.2.2/24),通过路由协议,让R1学习到
R2(config)#ntp source loopback 0
R1(config)#ntp server 2.2.2.2 key 1
实际工程案例:
全网NTP同步设置需求:
使用轮巡模式,将SW1设为主NTP服务器。两台核心交换机的管理地址为10.10.10.x/24
SW1-primary:VLAN1 地址为10.10.10.1
SW2-secondary: VLAN1 地址为10.10.10.2
SW1配置:
clock timezone BJ 8
ntp master 2
ntp source vlan1
ntp authenticate
ntp authentication-key 1 md5 holly
ntp trusted-key 1
ntp peer 10.10.10.2 source vlan1
ntp update-calendar
!!!Periodically update calendar with NTP time
注意主NTP服务器不能加载clock calendar-valid 命令,否则自身无法同步。
SW2配置:
首先使用clock set 设好时间,再配置NTP。
clock timezone BJ 8
clock calendar-valid
ntp source vlan1
ntp authenticate
ntp authentication-key 1 md5 holly
ntp trusted-key 1
ntp server 10.10.10.1 source vlan1
ntp update-calendar
!!!Periodically update calendar with NTP time
客户端设置:(接入层交换机以及所有安全服务模块,例如:SW3)
clock timezone BJ 8
ntp server 10.10.10.1 key 1 source vlan1
ntp server 10.10.10.2 key 2 source vlan1
ntp source vlan1
ntp authenticate
ntp authentication-key 1 md5 holly
ntp trusted-key 1
-----------------------------------------------------------------
August 02
NTP配置
EXAMPLE 1
...
clock timezone CST -6
clock summer-time CDT recurring
ntp source eth 0
ntp peer
ntp peer
ntp peer
...
EXAMPLE 2
...
ntp source Ethernet0/0
ntp update-calendar
ntp peer
ntp peer prefer
...
EXAMPLE 3
...
service timestamps debug datetime localtime
service timestamps log datetime localtime
clock timezone PST -8
clock summer-time PDT recurring
interface Ethernet0
ip address
ntp broadcast
ntp clock-period 17180319
ntp source Ethernet0
ntp server
ntp server
ntp server
NTP的时钟源在一般的情况下也可以使用路由器上的时钟。高档的路由器/交换机上提供了硬件时钟,称为calendar,与clock相互独立,在系统重启时clock使用calendar的值。可以用命令calendar set设置硬件时钟的值,用命令clock read-calendar将系统时钟设置为calendar的值,也可以用命令clock update-calendar将当前系统时钟值写入calendar中。在客户端,用ntp master x.x.x.x 指定NTP服务器地址(CatOS:set ntp server x.x.x.x),用命令ntp update update-calendar 可以让NTP协议定时更新calendar的值。如果更改了时钟源的时间,需要数分钟才能同步到客户端,更新calendar需要更长的时间。常用的调试命令有:show ntp status 和 show ntp associations等。
N T P的会聚( c o n v e rg e n c e )可能需要长达半个小时,这意味着在修改N T P主系统时钟之后,再过半个小时其它的时钟才进行同步。这是因为N T P将时钟的改变视为时钟系统的不稳定。NTP需在等待系统稳定后才会进行同步和传递时钟的改变
在Cisco网络系统中的NTP配置需要用到的命令及定义:
ntp access-group: 该全局命令用于路由器N T P服务的访问控制。
ntp authenticate: 是一个全局命令,它启用N T P身份验证。
ntp authentication-key: 该全局命令用于定义N T P身份验证的键值。
ntp broadcast: 是一个接口命令,用于指定一特定接口来发送N T P广播包。
ntp broadcast client: 是一个接口命令,使路由器通过特定接口来接收N T P广播包。
ntp broadcast delay: 是一个全局命令,它用于设定数据包在路由器和N T P服务器之间一个回程所需时间的估计值。
ntp clock-period: 这条全局命令不必输入,当使用N T P进行系统时钟同步时,路由器将自动产生这条命令。
ntp disable: 这条接口命令使特定接口不接收N T P包。
ntp master: 这条全局命令用来配置路由器为N T P主时钟,只有当没有可用的外部N T P源或者为测试用途才使用该命令。
ntp peer: 该全局命令使路由器的系统时钟与其对等体的时钟同步(或对对等体的时钟进行同步)。
ntp server: 该全局命令使路由器的系统时钟由时间服务器进行同步。
ntp source: 该全局命令强制路由器在其N T P包中使用特定的源地址。
ntp trusted-key: 该全局命令用于确认路由器的特定身份验证键值。
ntp update-calendar: 该全局命令使N T P周期性地更新Cisco 7XXX 系列路由器的日历。
show ntp status: 是一执行模式命令,用于显示路由器的N T P信息,它可以表明该路由器是通过N T P对等体进行时钟同步还是通过N T P服务器进行同步。
show ntp association[detail]: 这条执行模式命令显示与N T P有关的信息,如轮询周期等。
简要配置示例:
EXAMPLE 1
路由器A和路由器B通过串口连接,路由器A被设为N T P主时钟,路由器B都被配置成根据路由器A来同步时钟。
…
RouterA#clock set xx:xx:xx:xx
RouterA(config)# int s0
RouterA(config-if)#ip add 172.23.1.1 255.255.255.0
RouterA# ntp master 1
RouterB#ntp server 172.23.1.1
...
EXAMPLE 2
路由器A被设置为N T P主时钟,路由器B被配置成通过N T P服务器与路由器A进行时钟同步,路由器C则被配置成路由器B的对等体,与B的时钟同步。三台路由器通过串口进行连接,路由器A和B之间、路由器B和C之间的连接都使用交叉电缆。
...
RouterA#clock set xx:xx:xx:xx
RouterA(config)# int s0
RouterA(config-if)#ip add 172.23.1.1 255.255.255.0
RouterA# ntp master 1
RouterB#ntp server 172.23.1.1
RouterB(config-if) ip add 172.16.1.2 255.255.255.0
RouterC#ntp peer 172.16.1.2
...
EXAMPLE 3
使用局域网广播的CISCO NTP
3台路由器通过以太网接入同一个网段,路由器a作为NTP服务器通过e0接口向以太网发送NTP广播。
...
RouterA#clock set xx:xx:xx:xx
routerA(config0#int e0
RouterA(config-if)#ip add 172.23.1.1 255.255.255.0
RouterA(config-if)#ntp broadcast
RouterA# ntp master
RouterB(config)#int e0
RouterB(config-if) # ip add 172.23.1.2 255.255.255.0
RouterB(config-if) #ntp broadcast client
RouterC(config)#int e0
RouterC(config-if) # ip add 172.23.1.3 255.255.255.0
RouterC(config-if) #ntp broadcast client