主要内容:
(内心OS:网上资料怎么这么少啊,华为和思科的设备叫法还不一样,理论上明明用的是一个技术。一开始查的全是华为设备的信息,坑惨我了。)
提示
以下的内容,如果没有特别标注区分华为和思科设备的话,都是通用的。
在常见网络设备/概念 && 虚拟机网络三种连接方式说明 && UDP广播 多播这里面提到过,VLAN最主要的目的就是为了划分广播域(这个说法和划分子网个人认为是原理不同但是等效的)。本来一个交换机(如果不明确具体是哪一层工作的交换机,在本文中一律视为二层交换机)只能构建一个广播域,通过VLAN就可以将这个单一网络划分为多个广播域。VLAN的优势在于划分子网和广播域以节省带宽的同时,更加易于管理,网络结构也更加灵活。
要使设备能够分辨不同VLAN的报文,需要在报文中添加标识VLAN信息的字段。IEEE 802.1Q协议规定,在以太网数据帧的目的MAC地址和源MAC地址字段之后、协议类型字段之前加入4个字节的VLAN标签(又称VLAN Tag,简称Tag),用以标识VLAN信息。设备利用Tag内的VID来识别数据帧所属的VLAN。
Tag结构如下:
在一个网络中,以太网帧要么是加了Tag的帧(Tagged),要么没加Tag(Untagged)。在网络设备中,用户终端和Hub只能收发Untagged帧;交换机、路由器和AC能够收发Tagged帧和Untagged帧;语音终端,AP能够同时收发一个Tagged帧和一个Untagged帧。
华为设备内部处理的数据帧一律都是Tagged帧,思科设备只有Trunk接口出来的数据帧是Tagged帧。
本文中,设备一般指网络设备,如路由器,交换机等网络中间设备;用户终端一般指个人电脑,服务器等网络末端设备。
AC(Wireless Access Point Controller):接入控制器,负责汇集来自区域内无线网络中的所有AP的数据并接入网络,还负责管理所有AP的网络设备。不严谨的说,可以看作无线网络版本的路由器。
AP(Wireless Access Point):无线网络接入点,是无线网络版本的交换机,是移动设备进入有线网络的接入点。
链路类型:
接口类型:
大部分情况下,Hybrid接口和Trunk接口能混用,但是在某些情况下,必须使用Hybrid接口,比如说一个接口连接不同VLAN网段的场景中,因为该接口需要给多个Untagged报文添加Tag,所以必须使用Hybrid接口。 这段目前存疑。
(思科设备不清楚有没有Hybrid接口,就先当是有吧)
缺省VID(PVID):由于设备处理的数据帧都带Tag,当设备收到Untagged帧时,就需要给该帧添加Tag,添加什么Tag,就由接口上的缺省VLAN决定。
本征VLAN(Native VLAN)(仅限思科设备):这个概念和PVID很接近,但是是两个概念。它的目的是为了维护Untagged数据的向下兼容性,是Trunk链路两端的公共标识符,可以通过show interfaces f0/1 switchport
来查看。默认情况下,思科设备的Trunk和Hybrid接口的本征VLAN的VID为1。(目前它的具体行为还是未知)
管理VLAN(仅限思科设备):它是方便远程管理交换机用的,默认是VLAN1。通过它,终端设备可以直接远程对交换机进行配置。也因此,最好不要将自定义的VLAN的VID配置成1。
接口行为:
接口类型 | 接收Untagged帧的行为(由用户终端发送) | 接收Tagged帧的行为(由设备发送) | 发送帧的具体行为 |
---|---|---|---|
Access接口 | 接收该数据帧,并且打上PVID对应的Tag | 当该数据帧的VID和PVID相同时,接收该数据帧;否则丢弃该帧 | 去掉Tag再发送 |
Trunk接口 | 先打上PVID对应的Tag。如果PVID在允许通过的VID列表里,就接收该帧,反之则丢弃 | 如果Tagged帧的VID在允许通过的VID列表里,就接收该帧,反之则丢弃 | 当发送帧的VID和PVID相同,并且在允许通过的VID列表里,则去掉Tag并且发送该帧;当发送帧的VID和PVID不同,并且在允许通过的VID列表里,则保持原有的Tag再发送 |
Hybrid接口(这一行仅限华为设备) | 同Trunk接口 | 同Trunk接口 | 当发送帧的VID在允许通过的VID列表里,就发送该帧。可以通过命令来配置发送时是否携带Tag发送 |
提示
以下内容对华为设备有效,思科设备不清楚。猜测也仅有在数据帧进入和送出交换机时,是否打Tag有区别。思科设备只会在数据帧从Trunk接口发出时打上Tag,其他部分应该都是一致的。
要是现场有个思科设备让我抓包我也不至于一个劲猜了。
同一VLAN内的用户互访一般会经过以下三个环节:
同设备下VLAN内互访:
当用户主机PC0发送报文给用户主机PC1时,报文的发送过程如下(假设Switch0上还未建立任何转发表项):
不同设备间VLAN内互访:
这一段华为和思科的设备说法不一,但是大体的理论基础都是为VLAN设置一个虚拟的接口,然后把网关设置到这个虚拟的接口上,开始路由/三层转发。思科的设备叫这个虚拟接口为SVI(Switched Virtual Interface),华为的可以设置两种接口,一个是VLANIF接口,和思科的SVI接口有点类似;另一个是Dot1q终结子接口,它能把多个VLAN都接到这一个虚拟接口上,不消耗IP地址,但是网络繁忙时有可能会成为通信瓶颈。
以思科的设备为例,一种方法是传统路由来实现,结构是这样子:
一种方法是单臂路由,拓扑和上面那个方法差不多,就是路由器和交换机之间只有一根线,能同时传多个VLAN的数据。
另一种方法是基于三层交换机来做,结构是这样:
单臂的理论基础,简单来说就是用户终端网关到路由,由路由表匹配到另一个VLAN对应的路由接口,从该接口再出发去目的地。它的理论足够简单,但是问题在于VLAN间通信一次,单臂的这个“臂”上通信就要传两次数据,还带一次路由的时间,在网络繁忙的时候极其容易成为通信速度的瓶颈。
三层路由的理论基础就是,在三层路由器上配置SVI,然后用户终端网关到这个SVI上。需要VLAN间互访时,数据帧到了实际和这个用户终端相连的物理接口上,会被转给路由模块的虚拟接口上,再路由到另一个VLAN对应的虚拟接口上再转发出去。大体是这样的:
拓扑图:
提示
3560三层交换机拖上去就直接开机了。3650不行,必须把电源模块拖上去才行:
四个PC机配置IP略。
交换机配置示例如下:
enable config t vlan 10 // 创建vlan exit vlan 20 exit interface fa0/1 // 配置fa0/1接口 switchport access vlan 10 // 接口是access模式 允许vlan10通过 exit interface fa0/2 switchport access vlan 20 exit interface fa0/3 switchport mode trunk // 配置接口为trunk模式 switchport trunk allowed vlan all // trunk模式下 允许所有vlan通过
三层交换机配置示例如下:
enable config t vlan 10 exit vlan 20 exit interface g1/0/1 switchport mode trunk // 配置接口为trunk模式 switchport trunk allowed vlan all // trunk模式下 允许所有vlan通过 exit interface vlan 10 // 创建SVI ip address 192.168.10.10 255.255.255.0 // 配置SVI的ip地址 exit interface vlan 20 // 创建SVI ip address 192.168.20.10 255.255.255.0 // 配置SVI的ip地址 exit ip routing // 开启三层交换机的路由功能
配置完成后vlan之间可以互相通信,三层交换机处可以看到路由信息(do show ip route
)。
本文作者:御坂19327号
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!