VLAN间的三层路由(HCNA)——三层交换机实现VLAN间的三层通信

目录

前言

二层口与三层口

三层交换机的二次通信与三层通信

三层交换机二层通信

三层交换机三层通信

Tagged帧的处理


前言

VLAN间的三层通信可以通过多臂路由器或者单臂路由器来实现。通过单臂路由器来实现时,可以节约路由器的物理接口资源,但是,这种方式也有不足之处。如果VLAN的数量众多,VLAN间的通信流量很大时,单臂链路所能提供的带宽就有可能无法支撑这些通信流量。另外,如果单臂链路一旦发生了中断,那么所有VLAN间的通信也都会因此而中断。为此,人们引入了一种被称为“三层交换机”的未来设备,并通过三层交换机来更经济、更快速,更可靠的实现VLAN间的三层通信。我们先解释以下关于“二层口”和“三层口”的概念。

二层口与三层口

平时,我们通常会混用“端口”和”接口“这两个词,端口也就是接口,接口也就是端口,它们都是”网口“的意思。交换机上的网口称端口,路由器或者计算机上的网口称为接口。但是,这个习惯并不重要,只是一个习惯而已。不需要太在意这块内容。那么,什么是二层口呢?什么又是三层口呢?

通常,我们把交换机上端口称为二层端口,或者简称为二层口;同时,我们把路由器或者计算机上的接口称为三层接口,或者简称三层口。二层口的行为特征与三层口的行为特征存在明显的差异,具体如下。

(1)二层口只有MAC地址,没有IP地址;三层口既有MAC地址,又有IP地址。

(2)设备的某个二层口在接收到一个广播帧后,会将这个广播帧从该设备的其他所有二层口防洪出去。

(3)设备的某个三层口在接收到一个广播帧后,会根据这个广播域的类型字段的值将这个广播帧的载荷数据上送到该设备第三层的相应模块去处理。

(4)设备的某个二层口在接收到一个单播帧后,该设备会在自己的MAC地址表中查找这个帧的目的MAC地址。如果查不到这个MAC地址,则该设备会将这个帧从其他所有二层口防洪出去。如果查到了这个MAC地址,则比较MAC地址表项所指示的那个二层口是不是这个帧进入该设备时所通过的那个二层口。如果是,则设备会将这个帧直接丢弃;如果不是,则设备会把这个帧从MAC地址表项所指示的那个二层口转发出去。

(5)设备的某个三层口在接收到一个单播帧后,会比较这个帧的目的MAC地址是不是该三层口的MAC地址。如果不是,则会直接将这个帧丢弃;如果是,则根据这个帧的类型字段的值将这个帧的载荷数据上送到该设备第三层的相应模块去处理。

(6)关于设备的二层口或者三层口接收到一个组播帧的情况,这个的话,在后面的章节讲解。

上面几点就是对二层口的行为特征和三层口的行为特征的总结性描述。二层口的行为特征与三层口的行为特征的差异,直接引出了交换机与路由器的差异。

1.交换机的端口都是二层口,一台交换机的不同二层口之间只存在二层转发通道,不存在三层转发通道。交换机内部存在MAC地址表,用以进行二层转发。交换机内部不存在IP路由表。

2.路由器的端口都是三层口,一台路由器的不同三层口之间只存在三层转发通道,不存在二层转发通道。路由器内部存在IP路由表,用以进行三层转发。路由器内部不存在MAC地址表。

现在,我们可以解释什么是三层交换机了。三层交换机的原理性定义是:三层交换机是二层交换机与路由器的一种集成形式,它除了可以拥有一些二层口之外,还可以拥有一些”混合端口“(简称混合口)。混合口既具有二层口的行为特征,同时又具有三层口的行为特征。一台三层交换机上,不同的混合口之间同时存在二层转发通道和三层转发通道,不同的二层口之间只存在二层转发通道,一个混合口与一个二层口之间也只存在二层转发通道。

三层交换机内即存在MAC地址表,用以进行二层转发,又存在IP路由表,用以进行三层转发。一台三层交换机上可以只有混合口,而无二层口。一台三层交换机上也可以只有二层口,而无混合口(此时的三层交换机完全退化成了一台二层交换机)

三层交换机的二次通信与三层通信

接下来,我们就通过几个例子来说明三层交换机是如何实现VLAN内的二层通信以及VLAN间的三层通信的。

三层交换机二层通信

如图所示,PC 1和PC 3被划分进入VLAN 10,PC 2和PC 4被划分进入VLAN 20。S1是一台三层交换机,S2和S3都是二层交换机。为了能够支持VLAN 10与VLAN 20之间的三层通信,我们需要在S1上配置两个逻辑意义上的VLAN接口,这两个VLAN接口分别称为VLANIF 10和VLANIF 20(VLANIF中的IF是Interface的缩写)。

VLANIF 10和VLANIF 20具有三层口的行为特征,并拥有自己的IP地址。我们把VLANIF 10和VLANIF 20的IP地址分别配置为192.168.100.1/24和192.168.200.1/24,这两个IP地址其实分别就是VLAN 10和VLAN 20的缺省网关地址。这样一来,S1上的端口GE1/0/0和端口GE2/0/0就都成了混合口,这两个混合口一方面具有二层口的行为特征,同时又具有三层口的行为特征。

注意,在图中,交换机的Access端口有:S2的D1端口和D2端口,S3的D1端口和D2端口。交换机的Trunk端口有:S2的D3端口,S3的D3端口,S1的GE1/0/0端口和GE2/0/0端口。

现在,我们先来看一下三层交换机是如何实现同一VLAN内的二层通信的。如图所示,假设PC 1需要发送一个ARP请求,去询问PC 3的MAC地址是多少,也就是询问IP地址192.168.100.30所对应的MAC地址是多少。我们需要描述清楚这个ARP请求时如何到达PC 3的。

首先,PC 1的数据链路层(二层)需要准备好一个广播帧,假设这个广播帧取名为X。X帧的目的AMC地址为FF-FF-FF-FF-FF-FF,源MAC地址为PC 1 的Ethernet 0/0/1接口的MAC地址,X帧的类型字段的值为0x0806,X帧的载荷数据是一个ARP请求报文,该ARP请求报文的作用是请求得到IP地址192.168.100.30所对应的MAC地址。注意,X帧现在是不带VLAN Tag的。

PC 1通过其Ethernet 0/0/1接口发送出Untagged X帧后,Untagged X帧会从S2的D1端口进入S2,并被S2添加上VLAN 10 的Tag。然后,Tagged X帧会到达S1的混合端口GE1/0/0。

因为S1的GE1/0/0端口具有三层口的行为特征,并且GE1/0/0端口收到的Tagged X帧是一个广播帧,所以,GE1/0/0端口会根据Tagged X帧的类型字段值0x0806将Tagged X帧的载荷数据(注意,载荷数据是一个ARP请求报文)上送给三层的ARP模块在处理所收到的ARP请求报文时,发现该ARP报文是在请求得到IP地址192.168.100.30所对应的MAC地址,而自己的IP地址(也就是VLANIF 10的IP地址)是192.168.100.1,所以不会做出ARP应答,而是直接将这个ARP请求报文丢弃。

同时,因为S1的GE1/0/0端口又具有二层口的行为特征,并且GE1/0/0端口接收到了Tagged X帧是一个广播帧,所以,GE1/0/0端口会将这个Tagged X帧从GE2/0/0端口防洪出去。

然后,Tagged X帧会运动到S3的D1端口。S3的D1端口会去掉Tagged X帧的Tag,然后将Untagged X帧发送给PC 3.

PC 3的Ethernet0/0/1接口时一个三层口。而Untagged X又是一个广播帧,所以Ethernet 0/0/1接口会根据Untagged X帧的类型字段值0x0806将这个帧的载荷数据(注意,载荷数据是一个ARP请求报文)上送给三层的ARP模块处理。三层的ARP模块在处理所收到的ARP请求报文时,发现该ARP请求报文是在请求得到IP地址192.168.100.30所对应的MAC地址,而自己的IP地址正是192.168.100.30,所以将会对此请求做出ARP应答。

至此,我们可以看见,属于VLAN 10的PC 1与同属于VLAN 10 的PC 3已经成功的进行了一次VLAN内的二层通信。该二层通信利用了S1的两个混合口GE1/0/0和GE2/0/0之间的二层转发通道。

三层交换机三层通信

接下来,我们再来看一下三层交换机是如何实现VLAN间的三层通信的,如图所示,我们将描述清楚PC 1是如何将一个名为P 的IP报文成功发送给PC 4的。

首先,PC 1的数据链路层(二层)需要准备好一个广播帧,假设这个广播帧取名为 XX帧的目的MAC地址为 於压仟-年任任,源MAC地址为PC 1EthemetO/0/l接口的 MAC地址,X帧的类型字段的值为0x0806, X帧的载荷数据是一个ARP请求报文,该 ARP请求报文的作用是请求得到IP地址192.168.100.30所对应的MAC地址。注意,X 帧现在是不带VLAN Tag的。

PC 1通过其EthemetO/0/l接口发送出Untagged X帧后,Untagged X帧会从S2D1端口进入S2,并被S2添加上VLAN 10Tag然后,Tagged X帧会到达S1的混合 端口 GE1/0/0”

因为S1GE1/0/0端口具有三层口的行为特征,并且GE1/0/0端口收到的Tagged X帧是一个广播帧,所以,GE1/0/0端口会根据Tagged X帧的类型字段值0x0806Tagged X帧的载荷数据(注意,载荷数据是一个ARP请求报文)上送给三层的ARP 模块处理。三层的ARP模块在处理所收到的ARP请求报文时,发现该ARP报文是在 请求得到1P地址192.168.100.30所对应的MAC地址,而自己的IP地址(也就是VLANIF 10IP地址)是192.168.100.1,所以不会做出ARP应答,而是直接将这个ARP请求 报文丢弃。

同时,因为S1GE1/0/0端口又具有二层口的行为特征,并且GE1/0/0端口接收到的 Tagged X帧是一个广播帧,所以,GE1/0/0端口会将这个TaggedX帧从GE2/0/0端口泛洪出去。

然后,Tagged X帧会运动到S3D1端口。S3DI端口会去掉Tagged X帧的Tag, 然后将Untagged X帧发送给PC 3

PC 3EthemetO/O/1接口是一个三层口,而Untagged X又是一个广播帧,所以 EtheraetO/0/l接口会根据Untagged X帧的类型字段值0x0806将这个帧的载荷数据(注 意,载荷数据是一个ARP请求报文)上送给三层的ARP模块处理。三层的ARP模块在 处理所收到的ARP请求报文时,发现该ARP请求报文是在请求得到IP地址 192.168.100.30所对应的MAC地址,而自己的IP地址正是192.168.100.30,所以将会对 此请求做出ARP应答。

至此,我们可以看到,属于VLAN 10PC 1与同属于VLAN 10PC 3已经成功 地进行了一次VLAN内的二层通信。该二层通信利用了 S1的两个混合口 GE1/0/0GE2/0/0之间的二层转发通道。

接下来,我们再来看一下三层交换机是如何实现VLAN间的三层通信的。如图所示,我们将描述清楚PC 1是如何将一个名为PIP报文成功地发送给PC 4的。

首先,P是在PC 1的网络层形成的,P的目的IP地址为192.168.200.40,IP地址 为192.168.100.10。然后,根据P的目的IP地址,PC 1会进行IP路由表的査询工作。 PC 1IP路由表中有两条路由,其中一条为缺省路由。显然,P的目的IP地址 192.168.200.40只能匹配上那条缺省路由,该路由的出接口为PC 1EthemetO/0/l接口, 下一跳IP地址为S1VLANIF 10IP地址192.168.100.KS1VLANIF 10也因此被 称为是192.168.100.0/24VLAN 10的缺省网关)。

于是,根据这条缺省路由的指示,P会被下发至PC 1EthemetO/0/l接口,并被封 装成一个单播帧。假设这个帧取名为X,那么X帧的载荷数据就是P, X帧的类型字段 的值为0x0800, X帧的源MAC地址为PC 1EthemetO/0/l接口的MAC地址,X帧的 目的MAC地址为VLANIF 10IP地址所对应的MAC地址(如果PC 1在自己的ARP 缓存表中査找不到IP地址192.168.100.1所对应的MAC地址,就应该通过ARP机制去 获取该MAC地址,我们这里省去对这一过程的描述)。注意,此时的X帧是一个不带 VLAN Tag 的帧。

然后,PC 1会从EthemetO/0/l接口将Untagged X帧发送出去。Untagged X帧从S2 D1端口进入S2后,会被添加上VLAN 10Tag,并且这个Tagged X帧会被送达至 S1 GE1/0/0 端口。

因为S1GE1/0/0端口具有三层口的行为特征,并且GE1/0/0端口收到的Tagged X 帧是一个单播帧,所以,GE1/0/0端口会将这个帧的目的MAC地址与自己的MAC地址 进行比较。由于这两个MAC是相同的,所以GE1/0/0端口会根据这个帧的类型字段值 0x0800将载荷数据(也就是P)上送给三层IP模块进行处理。

S1IP模块接收到P后,会根据P的目的IP地址192.168.200.40查询自己的IP路 由表。显然,192.168.200.40这个IP地址只与IP路由表中的第二条路由匹配,该路由的 出接口为VLANIF 20,下一跳IP地址是VLANIF 20IP地址(这说明P要去往的目的 网络是与VLANIF 20直接相连的,但目前还不清楚究竟是与GE1/0/0端口直接相连,还 是与GE2/0/0端口直接相连)。

于是,根据这条路由的指示,P会被下发至VLANIF 20接口(但目前还不清楚,究 竟应该下发至GE1/0/0端口,还是应该下发至GE2/0/0端口),并被封装成一个单播帧。 假设这个帧取名为Y,那么Y帧的载荷数据就是P, Y帧的类型字段的值为0x0800, Y 帧的目的MAC地址应该是P的目的IP地址192.168.200.40所对应的MAC地址,但目 前还不清楚Y帧的源MAC地址应该是GE1/0/0端口的MAC地址还是GE2/0/0端口的 MAC地址。

假设S1现在还不知道192.168.200.40所对应的MAC地址,那么S1就需要通过其 GE1/0/0端口向外发送ARP广播请求去获取这个MAC地址,同时S1还需要通过其 GE2/0/0端口向外发送ARP广播请求去获取这个MAC地址。注意,从GE1/0/0端口向 外发送的ARP广播帧以及从GE2/0/0端口向外发送的ARP广播帧都必须带上VLAN 20 Tag显然,最后的结果是,GE2/0/0端口会收到ARP应答(从而学习到了 192.168.200.40 所对应的MAC地址),GE1/0/0端口不会收到ARP应答。这样一来,Y帧的源MAC 地址现在就可以确定为是GE2/0/0端口的MAC地址,Y帧的出端口应该为GE2/0/0,而 不是GEl/0/Oo另外,Y帧的目的MAC地址就是通过ARP机制而学习到的MAC地址。 注意,Y帧还必须带上VLAN 20Tag

然后,S1Tagged Y帧从GE2/0/0端口发送出去,该Tagged Y帧会到达交换机S3 D2端口。然后,S3会将Tagged Y帧的Tag去掉,然后将它从自己的D2端口转发出去。

PC 4EthemetO/0/l接口在收到S3转发过来的Untagged Y帧后,会将Untagged Y 帧的目的MAC地址与自己的MAC地址进行比较。由于这两个MAC地址是相同的,所 以PC 4EthemetO/0/l接口会根据这个帧的类型字段值0x0800将这个帧的数据载荷(也 就是P)上送给PC 4的位于三层的IP模块。

至此,源于PC 1的三层IP模块的IP报文P便成功地到达了 PC 4的三层IP模块, 属于VLAN 10PC 1与属于VLAN 20PC 4之间成功地进行了一次三层通信。

Tagged帧的处理

然而,我们不要忘记了这样一个细节。当初,Tagged X帧被送达至S1GE1/0/0 端口后,因为S1GE1/0/0端口具有二层口的行为特征,所以GE1/0/0端口还应该以二层口的行为特征来对Tagged X帧进行处理。处理的方式有两种,分别说明如下。

方式一:Tagged X帧到达GE1/0/0后,GE1/0/0的三层口发现Tagged X帧是一个单 播帧,于是会将Tagged X帧的目的MAC地址与自己的MAC地址进行比较。由于这两 个MAC地址是相同的,所以GE1/0/0的三层口会将Tagged X帧的载荷数据P上送给三 层IP模块进行后续处理,同时通知GE1/0/0的二层口不要对Tagged X帧进行任何处理。 也就是说,针对Tagged X帧,GE1/0/0的二层口的行为特征受到了抑制。

方式二:Tagged X帧到达GE1/0/0后,GE1/0/0的三层口发现Tagged X帧是一个单 播帧,于是会将Tagged X帧的目的MAC地址与自己的MAC地址进行比较。由于这两 个MAC地址是相同的,所以GE1/0/0的三层口会将Tagged X帧的载荷数据P上送给三 层IP模块进行后续处理,但是不会通知GE1/0/0的二层口不要对Tagged X帧进行处理。 于是,S1会去自己的MAC地址表中査找Tagged X帧的目的MAC地址。显然,在MAC 地址表中是查不到Tagged X帧的目的MAC地址的,于是S1会将Tagged X帧从GE2/0/0 端口泛洪出去。被泛洪的Tagged X帧会被送达至S3D1端口(注意,Tagged X帧不 会被送达至S3D2端口,因为Tagged X帧带有VLAN 10Tag,D2端口是属于 VLAN 20),D1端口会去掉Tagged X帧的Tag,然后将Untagged X帧发送给PC 3EthemetO/0/l 接口。PC 3 EthemetO/0/l 接口会将自己的 MAC 地址与 Untagged X 帧的 目的MAC地址进行比较。由于这两个MAC地址不相同,所以PC 3的EthemetO/0/l接 口会将接收到的Untagged X帧直接丢弃。

至此,我们便完整地描述了如何利用三层交换机来实现VLAN内的二层通信以及 VLAN间的三层通信。

猜你喜欢

转载自blog.csdn.net/weixin_40274679/article/details/106690625