同一
VLAN
内的通信
接下来,我们继续学习使用汇聚链路连接交换机与路由器时,
VLAN
间路由是如何进行的。如下图所示,为各台计算机以及路由器的子接口设定
IP
地址。
红色
VLAN
(
VLAN ID=1
)的网络地址为
192.168.1.0/24
,蓝色
VLAN
(
VLAN ID=2
)的网络地址为
192.168.2.0/24
。各计算机的
MAC
地址分别为
A/B/C/D
,路由器汇聚链接端口的
MAC
地址为
R
。交换机通过对各端口所连计算机
MAC
地址的学习,生成如下的
MAC
地址列表。
端口
|
MAC
地址
|
VLAN
|
1
|
A
|
1
|
2
|
B
|
1
|
3
|
C
|
2
|
4
|
D
|
2
|
5
|
-
|
-
|
6
|
R
|
汇聚
|
首先考虑计算机
A
与同一
VLAN
内的计算机
B
之间通信时的情形。
计算机
A
发出
ARP
请求信息,请求解析
B
的
MAC
地址。交换机收到数据帧后,检索
MAC
地址列表中与收信端口同属一个
VLAN
的表项。结果发现,计算机
B
连接在端口
2
上,于是交换机将数据帧转发给端口
2
,最终计算机
B
收到该帧。收发信双方同属一个
VLAN
之内的通信,一切处理均在交换机内完成
。
不同
VLAN
间通信时数据的流程
接下来是这一讲的核心内容,不同
VLAN
间的通信。让我们来考虑一下计算机
A
与计算机
C
之间通信时的情况。
计算机
A
从通信目标的
IP
地址(
192.168.2.1
)得出
C
与本机不属于同一个网段。因此会向设定的默认网关(
Default Gateway
,
GW
)转发数据帧。在发送数据帧之前,需要先用
ARP
获取路由器的
MAC
地址。
得到路由器的
MAC
地址
R
后,接下来就是按图中所示的步骤发送往
C
去的数据帧。
①的数据帧中,目标MAC地址是路由器的地址R、但内含的目标IP地址仍是最终要通信的对象C的地址。这一部分的内容,涉及到局域网内经过路由器转发时的通信步骤,有机会再详细解说吧。
交换机在端口
1上收到①的数据帧后,检索MAC地址列表中与端口1同属一个VLAN的表项。由于汇聚链路会被看作属于所有的VLAN,因此这时交换机的端口6也属于被参照对象。这样交换机就知道往MAC地址R发送数据帧,需要经过端口6转发。
从端口
6发送数据帧时,由于它是汇聚链接,因此会被附加上VLAN识别信息。由于原先是来自红色VLAN的数据帧,因此如图中②所示,会被加上红色VLAN的识别信息后进入汇聚链路。路由器收到②的数据帧后,确认其VLAN识别信息,由于它是属于红色VLAN的数据帧,因此交由负责红色VLAN的子接口接收。
接着,根据路由器内部的路由表,判断该向哪里中继。
由于目标网络
192.168.2.0/24
是蓝色
VLAN
,,且该网络通过子接口与路由器直连,因此只要从负责蓝色
VLAN
的子接口转发就可以了。这时,数据帧的目标
MAC
地址被改写成计算机
C
的目标地址;并且由于需要经过汇聚链路转发,因此被附加了属于蓝色
VLAN
的识别信息。这就是图中
③的数据帧。
交换机收到
③的数据帧后,根据VLAN标识信息从MAC地址列表中检索属于蓝色VLAN的表项。由于通信目标——计算机C连接在端口3上、且端口3为普通的访问链接,因此交换机会将数据帧除去VLAN识别信息后(数据帧④)转发给端口3,最终计算机C才能成功地收到这个数据帧。
进行
VLAN间通信时,即使通信双方都连接在同一台交换机上,也必须经过:
发送方——交换机——路由器——交换机——接收方
这样一个流程
。