Vlan详解
Vlan详解
最近在学习网络时总是卡在了二层交换上,尤其对一些概念不是很理解,在公司里实际上去配置一些设
备总是出现各种问题,所以下定决心搞透二层vlan中的一些技术,下面是最近总结的一些知识
一、相关概念解释
VLAN: 虚拟局域网,VLAN所指的LAN特指使用路由器分割的网络-也就是指广播域
MAC地址分类:MAC地址可分为单播、组播和广播三大类,单播MAC地址全球唯一
MAC地址泛洪:内网中的一台PC向交换机发送大量的伪造的数据帧,当伪造的目的MAC将交换机的MAC
地址表填充满之后,MAC地址表无法学习到新的MAC导致交换机瘫痪
附:MAC地址表是交换机工作的核心,如果MAC地址表紊乱,则交换机就不能正常工作。
- 广播域:指的是广播帧(目标的MAC地址全部为1)所能传递到的范围,也指能够直接通信的范围,不仅
仅是广播帧、多播帧和目标不明的单播帧也能在同一个广播域中通行
ARP请求:建立IP地址和MAC地址的映射关系
DHCP:用于自动设置IP地址的协议,当客户机请求DHCP服务器分配IP地址的时候,必须要发出DHCP广播
RIP协议:是一种路由协议,每隔30秒路由器都会对临近的其他路由器广播一次路由信息,RIP以外的其他路由
协议使用多播传输路由信息,这也会被交换机泛洪
二、二层交换机简介
1、主要功能
终端用户的接入、维护自己的MAC地址表、数据帧的转发和过滤、二层环路的避免和链路的冗余性
2、工作原理
在收到数据帧之后,交换机学习帧的源MAC地址,然后在MAC地址表中查询该帧的目的MAC地址,并
将数据帧转发出去
3、具体过程
初始情况下,交换机的MAC地址表是空的
PC1发送数据帧给PC2(PC1已经通过ARP请求获取了PC2的MAC地址)
交换机在1口接受到该数据帧后,在MAC地址表中查询该帧的目的MAC地址
MAC地址表中没有对应匹配的MAC地址,则将这个数据帧进行泛洪,同时交换机学习到该帧的源MAC地址
并创建表项;将源MAC地址与接收该帧的1口进行关联
除目的主机外的其他的主机会丢弃该数据帧,目的主机回复数据,将自己的MAC地址发往交换机
此时该数据帧的MAC地址为源主机的MAC地址,交换机在查询到该表项之后,就将数据帧从1口转发出去
同时交换机学习到目的主机的MAC地址,并在MAC表项中将其与2口进行关联
4.为什么要使用VLAN
二层交换机只能构建单一的广播域,但是在使用VLAN之后,它能够将网络分割成多个广播域。未分割
广播域带来的问题:二层的交换机在接受到广播帧之后,都会进行泛洪,广播帧会传播到网络中的每一台
主机,并且对每一台计算机的CPU造成负担;另一方面,广播信息消耗了网络整体的带宽。因此,在设计
LAN的时候,应该合理地划分广播域
5.常见的广播通信
广播帧的出现是非常频繁的,下面列出一些常见的广播通信除了TCP/IP以外,NetBEUI、IPX和APPLE Talk
等协议也经常用到广播,例如:Windows下双击打开“网络计算机时”就会发出广播(多播)信息
NetBEUI:Windwos下使用的网络协议
IPX:Novell Netware私用的网络协议
Apple Talk:苹果公司的计算机使用的网络协议人
路由器分割广播域出现的问题:
- 路由器上没有太多的网络接口,使用路由器分割广播域,分割的个数完全取决于路由器的网络接口的个数,
无法满足用户需求
- 路由器连接LAN一侧的网络接口,实际上是路由器内置的交换机,并不能分割广播域
二层交换机分割广播域的优点:二层交换机一般带有多个网络接口,用它分割广播域灵活性提高很多,
用二层交换机去分割广播域的技术就是Vlan
三、VLAN:二层交换机分割广播域
1.VLAN的实现原理
- 在一台未设置VLAN的二层交换机上,任何广播帧都会被转发到除接收端口外的所有其他端口(Flooding)
VLAN是通过限制广播帧转发的范围分割了广播域,实际使用的时候就是通过VLAN ID来区分的
- 一台二层的交换机在逻辑上分割成了数台交换机,VLAN生成的逻辑上的交换机是互不相通的。因此,在交
换机上设置为VLAN如果没有做其他处理的话,VLAN是无法直接通信的
- VLAN之间要进行通信的时候需要路由器提供中继服务,称作VLAN间路由,VLAN间路由,可以使用普通
的路由器,也可以使用三层的交换机
2.访问链接
访问链接, 只属于一个VLAN,且仅向该VLAN转发数据帧的端口,在大多数情况下,访问链接所连接的
是客户机。设定访问链接的方式为静态VLAN和动态VLAN:
- 静态VLAN:基于端口的VLAN(Port Based VLAN ),明确指定各个端口属于哪个VLAN的设定办法;这种方式的
缺点是,客户机每次变更所连接端口的时候,都必须同时修改该端口所属VLAN的设定,不适合那些
需要频繁改变网络拓扑结构的网络
- 动态VLAN:是根据每个端口所连接的计算机,随时改变端口的VLAN
动态VLAN又可以分为3类:基于MAC地址的VLAN、基于子网的VLAN、基于用户的VLAN(差异在于
根据OSI模型中的哪一层的信息来决定端口所属的VLAN)
- 基于MAC地址的VLAN:通过查询并记录端口所连接计算机上网卡的MAC地址来决定端口的所属,即使计算
机改变了所连接的端口,交换机还是可以查出它的MAC地址,并正确指定端口所属的VLAN。在OSI的第
二层设定访问链接的方法
- 基于子网的VLAN:通过所连计算机的IP地址来决定端口所属的VLAN,即使因为交换了网卡或者其他原因
导致MAC地址的改变,只要其IP地址不发生改变,就仍然可以加入原先设定好的VLAN。在OSI模型的第
三层设定访问链接的方法。
- 基于用户的VLAN:根据交换机的各端口所连接的计算机上当前登录的用户来决定该端口属于哪个VLAN。
这里的用户一般是计算机操作系统登录的用户,属于OSI模型第四层以上的信息。
总结:决定端口所属VLAN时利用的信息在OSI模型中的层面越高,就越适用于构建灵活多变的网络慢
4.汇聚链接
汇聚链接指的是能够转发多个不同VLAN的通信的端口,汇聚链路上的数据帧都是被附加了用于识别分
属于哪个VLAN的特殊信息,跨越多台交换机的VLAN需要用到
- 传统方法:在两台交换机上各设置专用的接口和连接专用的网线进行互联,但是连线比较麻烦,而且还造
成了交换机端口的浪费的,限制了网络的扩展
- 解决方法:让交换机间互联的网线集中到一根上,便是汇聚链接(Trunk Link)
汇聚链接是跨越交换机间的VLAN的过程:
A发送的数据帧从交换机1经过汇聚链路到达交换机2时,在数据帧上附加了VLAN ID Tag, 交换机2收
到数据后,经过检查VLAN ID Tag发现这个数据帧的标识去除标记后将该数据帧只转发给对应VLAN ID Tag
的端口,(转送是指确认目标MAC地址并与MAC地址列表比对后只转发给木匾MAC地址所连的端口)
注意:只有当数据帧是一个广播帧、多播帧或者是目标不明的帧时,它才会被转发给所有属于VLAN ID
的端口;汇聚链路上流通着多个VLAN的数据,负载比较重,设定汇聚链接时,必须支持100Mbps以上的传
输速度。默认条件下,汇聚链接会转发交换机上存在的所有VLAN的数据,汇聚链接(端口)同时属于交换
机上所有的VLAN
实际应用中很有可能并不需要转发所有VLAN的数据,通过用户设定限制能够经由汇聚链路互联的
VLAN可以减轻交换机的负载,也为了减少对带宽的浪费
拓展内容:VLAN的汇聚方式有两种IEEE802.1Q和ISL
IEEE 802.1Q "Dot One Q",IEEE认证的对数据帧附加VLAN识别信息的协议,被称作“标签型的vlan”
该VLAN识别信息位于数据帧中“发送源MAC地址”和“类别域”之间。具体内容为2字节的TPID+2字节
的TCI,在进入汇聚链路时会加上这四个字节,重新计算CRC值,离开汇聚链路时,也会被去除,然后
再进行CRC的计算TPID的值固定为0x8100,标识数据帧内附加了基于IEEE802.1Q的VLAN信息,而实际
上的VLAN ID是TCI中的12位,因此最多可供识别4096个VLANISL ,CISIO产品支持的与IEEE 802.1Q类
似的、给汇聚链路上附加VLAN信息的协议,只能用于Cisio网络设备之间的互联。
数据帧头部会被附加26字节的“ISL包头”和帧尾部上新加的通过对包括ISL包头在内的整个数据帧
进行计算后得到的4字节的CRC值。总共增加了30字节的信息,当数据帧离开汇聚链路时,只要简单
地去除ISL包头和新CRC就可以了,原先的CRC值被重新保留,因此无需计算CRC值
ISL通过用ISL包头和新的CRC将原数据整个地包裹起来,为封装型VLAN
5.VLAN间路由
不同VLAN之间不通过路由就无法进行通信?
在LAN内的通信,必须要在数据帧头中指定通信目标的MAC地址,为了获取MAC地址,TCP/IP协议
下使用的是ARP但是ARP解析MAC地址的方法,就是通过广播,不同的VLAN之间广播域也是相互隔离的,
所以广播的报文无法到达,相对应的就无法解析MAC地址,也就无法进行直接通信。所以VLAN之间要进
行路由的话必须要经过路由器或三层交换机设备
连接路由器和VLAN的两种方式
- 方式1:将路由器和交换机上的每个VLAN分别进行连接,这种方式即将交换机上用于和路由器互联的
每个端口设为访问连接,然后分别用网线与路由器上的独立端口互联
但是扩展性很成问题,每增加一个新的VLAN,都需要消耗路由器上的端口和交换机上的访问链接,
而且还需要重新布设一条网线。而路由器通常不会带有太多的LAN的接口的
- 方式2:不论VLAN有多少个,路由器和交换机之间都只用一条线进行连接,也就是汇聚链接。
首先将用于连接路由器的交换机端口设为汇聚链接,而路由器上的端口也必须支持汇聚链路。 双方
用于汇聚链路的协议必须相同。接着在路由器上定义对应各个VLAN的“子接口”。尽管实际与交换机连接
的物理端口只有一个,但是可以将其分割为多个虚拟端口。即使之后在交换机上新建VLAN,仍只需要一
条网线连接交换机和路由器,只需要在路由器上新建一个对应新VLAN的子接口即可
VLAN间数据通信的过程
收发方同属于一个VLAN之内的通信,一切处理均在交换机内完成
收发方不在同一个VLAN之内的通信,即使通信双方都连接在同一台交换机上,也必须要经过发送
方-交换机-路由器 -交换机-接收方这样的一个流程。汇聚链路会被看作属于所有的VLAN
四、三层交换机
三层交换机就是带有路由功能的二层交换机,内部结构就是在一台本体内,分别设置了交换机模块和路
由器模块,内置的路由模块和交换模块相同,都是使用ASIC硬件处理路由的,与传统的路由相比,可以实现
高速路由。并且路由和交换模块是汇聚链接的,由于是内部连接,可以确保相当大的带宽
1.加速VLAN间通信的手段
VLAN间的路由必须要经过外部的路由器或是三层交换机的内置路由模块,但是有时并不是所有的数
据都要经过路由器或者路由模块
- 发送目标相同的一连串数据被成为数据流(Flow)。整个流的第一块数据,照常由交换机-路由器路由-再
次由交换机转发到目标所连接的端口
- 交换机将第一块数据路由的结果记录到缓存里保存下来。需要记录的信息有:目标IP地址、源IP地址、
目标TCP/UDP端口号、源TCP/UDP端口号、交换机的接收端口号、交换机的转发端口号,转发目标的
MAC地址
- 同一个流的第二块以后的数据到达交换机后,直接通过查询先前保存在缓存中的信息查出“转发端口号”后
就可以转发给目标所连接的端口
- 交换机会对数据帧进行路由器中继时相似的处理,比如改写MAC地址,IP包头中的TTL值和Check Sum校
验码等信息
- 通过在交换机上缓存路由结果,实现了以缆线速度接受发送方传输来的数据,并且能够全速路由、转发
给接收方
- 除了三层交换机的内部路由模块,外部路由器中的某些机型也支持类似的告诉VLAN间的路由机制
2.传统路由器存在的必要性
- 用于与WAN进行连接,三层交换机的大多数机型只配有LAN接口,只有在少数高端交换机上也有用于连接WAN
的串行接口或者说ATM接口,但是在大多数情况下,连接WAN还是需要用到路由器
- 保证网络安全,在三层交换机上,确保网络安全只能通过数据包过滤,但是路由器所提供的网络安全功能中,
不仅可以进行数据包的过滤,还可以基于IPSEC 构建VPN,利用RADIUS进行用户认证等
- 支持除TCP/IP以外的网络架构,目前仍有基于Novell NetWare下的IPX/SPX/Appletalk等网络协议,但是绝大
多数三层交换机都只支持TCP/IP
3.管理vlan、native vlan和默认VLAN的区别
默认vlan是指交换机初始就有的,通常id为1,所有接口都处于这个vlan下,所以交换机上来就是能用的
管理vlan就是某个vlan下主机的网关
native vlan 是一个作用于仅为本交换机的概念,所有未划分vlan的端口自动划分到native vlan中
当turnk端口发送属于native vlan的帧的时候,帧的tag将会被剥离
当trunk端口接收到untagged的帧的时候,将会给该帧打上该交换机的native vlan的帧s