1) 什么是三层交换?

答:三层交换机把路由器的功能加到交换机,使得交换机能同时转发第二层的帧 (MAC地址),及第三层的数据包 (IP地址)。

2) 为什么要有三层交换?

答:交换机是个第二层的网络设备,可以把一个局网划分为几个虚拟局网 (VLAN), 互不干扰。但这也造成一个问题:怎么在不同的VLAN间转发数据包?

最初的解决方法是单臂路由器,这个路由器只有一条连线,用来和交换机相连,交换机接收前往另一个VLAN的数据包时,将其送往单臂路由器,路由转发到目的VLAN后,单臂路由器在把数据包交还给交换机,让它在第二个VLAN发送。但这样做又麻烦又贵,干脆把路由器的主要功能 (在第三层路由转发数据包)加到交换机。这就是三层交换机。

3)三层交换机的主要结构是什么?

答:三层交换机和二层交换机有两个地方不同:

- 路由功能。通常三层交换机把路由器的路由功能用硬件实现 (ASIC chip), 使得路由转发速度和二层交换速度一样快。

- VLAN虚拟接口。这个虚拟接口模拟VLAN trunk. 二层交换机配置了几个VLAN, 三层交换机就生成几个虚拟接口,换言之,每个VLAN都有一个相应的VLAN虚拟接口。但所有的虚拟接口共用一个虚拟MAC地址,起的骨干接口 (trunk link) 的作用。(二层交换机的骨干接口属于所有的VLAN, 但只有一个MAC地址。

4) Arp代理和三层交换有什么关系?

答:如图所示,当H1要ping H4 (分别在VLAN 2, 3) 而又不知道H4的MAC地址,得先发送ARP Request 查询。但Arp request查询的对象在不同的网段时,Arp request 无法被对象收到、这是因为在不同网段的主机得经路由器相连,而路由器会终止洪泛。Arp代理解决了这个问题,方法是让连接第一个网段的接口代表第二个网段,而连接第二个网段的接口代表第一个网段。三层交换机有路由器的功能,第一个局网的Arp request洪泛时不能逾越三层交换机到达第二个网段。三层交换用Arp代理来解决跨网段的问题。

5) H1 发Arp request 查H4的Mac,为什么三层交换后H4仍然没收到, 只有H2收到?

答: 作为三层交换机,S3也能二层交换。当S3收到H1的Arp request时,S3先用二层交换把此包洪泛到Vlan 2的两个接口,F0/2, Vlan2。以下我们兵分两路追踪下去:

- F0/2是个trunk接口,Arp request经S3.F0/2传送到S2, 又在S2的Vlan 2洪泛,经F0/1抵达H2.。H4在 Vlan 3, 不会收到这个的Arp request。

- Vlan2是个虚拟接口,Arp request经Vlan2交给三层交换,然后三层交换扮演了Arp代理,代表H4发送Arp reply给H1。(三层交换有路由器的功能,而路由器能做Arp代理)。 这两个活动都在Vlan 2之内发生。

 

附上三个交换机的配置:(以 Cisco 交换机为例)

1) 配置二层交换机S1

S1#conf t

Enter configuration commands, one per line. End with CNTL/Z.

S1(config)#inter f0/1

S1(config-if)#switchport access vlan 2

S1(config-if)#inter f0/2

S1(config-if)#switchport access vlan 3

S1(config-if)#inter f0/3

S1(config-if)#switchport mode trunk

S1(config-if)#switchport trunk allow vlan all

S1(config-if)#exit

S1(config)#exit

S1#

2)配置二层交换机S2

S2#conf t

Enter configuration commands, one per line. End with CNTL/Z.

S2(config)#inter f0/1

S2(config-if)#switchport access vlan 2

S2(config-if)#inter f0/2

S2(config-if)#switchport access vlan 3

S2(config-if)#inter f0/3

S2(config-if)#switchport mode trunk

S2(config-if)#switchport trunk allow vlan all

S2(config-if)#exit

S2(config)#exit

S2#3)配置三层交换机

3.1) 配置两个trunk接口, 分别连接到两个二层交换机。

S3#conf t

Enter configuration commands, one per line. End with CNTL/Z.

S3(config)#inter f0/1

S3(config-if)#switchport mode trunk

S3(config-if)#switchport trunk allow vlan all

S3(config-if)#inter f0/2

S3(config-if)#switchport mode trunk

S3(config-if)#switchport trunk allow vlan all

S3(config-if)#exit

S3(config)#exit

S3#

3.2)配置两个虚拟VLAN接口: Vlan2, Vlan3

S3#conf t

Enter configuration commands, one per line. End with CNTL/Z.

S3(config)#inter vlan 2

S3(config-if)#ip address 10.0.2.100 255.255.255.0

S3(config-if)#no shutdown

S3(config-if)#inter vlan 3

S3(config-if)#ip address 10.0.3.100 255.255.255.0

S3(config-if)#no shutdown

S3(config-if)#exit

S3(config)#exit

S3#

3.3)启动路由

S3#conf t

Enter configuration commands, one per line. End with CNTL/Z.

S3(config)#ip routing

S3(config)#exit

S3#

S3#sh ip route

10.0.0.0/24 is subnetted, 2 subnets

C 10.0.2.0 is directly connected, Vlan2

C 10.0.3.0 is directly connected, Vlan3

S3#