整理vlan学习笔记。
子接口
子接口(subinterface)是通过协议和技术将一个物理接口(interface)虚拟出来的多个逻辑接口。对应的物理层接口成为主接口。 子接口共用主接口的物理层参数,又可以分别配置各自的链路层和网络层参数。用户可以禁用或者激活子接口,这不会对主接口产生影响;但主接口状态的变化会对子接口产生影响,特别是只有主接口处于连通状态时子接口才能正常工作。
优点:
- 子接口打破了每个设备存在物理接口数量有限的局限性。
缺点:
- 多个子接口共用主接口,性能比单个物理接口差,负载大的情况下容易成为网络流量瓶颈。
广播,组播,单播
广播
帧从单一的源发送到共享以太网上的所有主机。广播帧的目的MAC地址为十六进制的FFFFFFFFFFFF,所有收到该广播帧的主机都要接收并处理这个帧。 广播方式会产生大量流量,导致带宽利用率降低,进而影响整个网络的性能。
单播
从单一的源端发送到单一的目的端。每个主机接口由一个MAC地址唯一标识,MAC地址的OUI中,第一字节第8个比特表示地址类型。对于主机MAC地址,这个比特固定为0,表示目的MAC地址为此MAC地址的帧都是发送到某个唯一的目的端。 在冲突域中,所有主机都能收到源主机发送的单播帧,但是其他主机发现目的地址与本地MAC地址不一致后会丢弃收到的帧,只有真正的目的主机才会接收并处理收到的帧。
组播
组播转发可以理解为选择性的广播,主机侦听特定组播地址,接收并处理目的MAC地址为该组播MAC地址的帧。 组播MAC地址和单播MAC地址是通过第一字节中的第8个比特区分的。组播MAC地址的第8个比特为1,而单播MAC地址的第8个比特为0。
广播域 vs 冲突域
冲突域:在同一个冲突域中的每一个节点都能收到所有被发送的帧。 广播域:网络中能接收任一设备发出的广播帧的所有设备的集合。
广播域可以跨网段,而冲突域只是发生的同一个网段的。
冲突域:基于第一层(物理层)。 广播域:基于第二层(数据链路层)。
集线器(HUB) 所有端口都在同一个广播域,冲突域内。 第二层交换机(Swith)所有端口都在同一个广播域内,而每一个端口就是一个冲突域。

二层交换机,三层交换机
引用参考资料的图片:

二层交换机工作在数据链路层,以太网交换机,依靠MAC表(MAC和以太网端口映射表),交换机会记录每个端口连接的主机的MAC。当交换机收到主机的数据包,提取目的MAC地址,查看目的MAC地址的主机连接哪个端口,然后往那个端口发送数据。
当需要数据流量在LAN或VLAN之间交换时,则需要使用三层交换机。
三层交换机工作在网络层,增加路由能力,根据ip地址转发;可配置不同vlan的IP地址,vlan之间可通过三层路由实现不同vlan之间通讯。 优势是当同样的数据流再次通过时,将此数据包直接从二层通过,这样减少了因为路由器的路由选择而造成网络的延迟,也可以大大提高转发效率。
交换机和核心层、汇聚层、接入层
图片来源百度百科:

核心层是互连网络的高速主干网,在设计中应增加冗余组件,使其具备高可靠性,能快速适应通信流量的变化。 设计核心层设备的功能时应避免使用数据包过滤、策略路由等降低转发速率的功能特性,使得核心层具有高速率、低延迟和良好的可管理性。 核心层设备覆盖的地理范围不宜过大,连接的设备不宜过多,否则会使得网络的复杂度增大,导致网络性能降低。 核心层应包括一条或多条连接外部网络的专用链路,使得可以高效地访问互联网。
汇聚层是核心层与接入层之间的分界点,应实现资源访问控制和流量控制等功能。汇聚层应该对核心层隐藏接入层的详细信息,不管划分了多少个子网,汇聚层向核心路由器发布路由通告时,只通告各个子网汇聚后的超网地址。如果局域网中运行了以太网和弹性分组环等不同类型的子网,或者运行了不同路由算法的区域网络,可以通过汇聚层设备完成路由汇总和协议转换功能。
接入层提供网络接入服务,并解决本地网段内用户之间互相访问的需求,要提供足够的带宽,使得本地用户之间可以高速访问; 接入层还应提供一部分管理功能,例如MAC地址认证、用户认证、计费管理等; 接入层要负责收集用户信息(例如用户U地址、MAC地址、访问日志等),作为计费和排错的依据。
vlan
什么是vlan
VLAN所指的LAN特指使用路由器分割的网络——也就是广播域。
VLAN 是现代网络常用的网络虚拟化技术,它可以将物理的二层网络划分成多达 4094 个逻辑网络,这些逻辑网络在二层上是隔离的,每个逻辑网络(即 VLAN)由 VLAN ID 区分,VLAN ID 的取值为 1-4094。 受主接口物理性能限制,实际中并无法完全达到4096个,数量越多,各子接口性能越差。
为什么需要vlan
如果整个网络只有一个广播域,那么一旦发出广播信息,就会传遍整个网络,并且对网络中的主机带来额外的负担。因此,在设计LAN时,需要注意如何才能有效地分割广播域。 二层交换机本来只能构建单一的广播域,不过使用VLAN功能后,它能够将网络分割成多个广播域。
分割广播域时,一般都必须使用到路由器。使用路由器后,可以以路由器上的网络接口(LAN Interface)为单位分割广播域。 使用路由器分割广播域的话,所能分割的个数完全取决于路由器的网络接口个数。
VLAN生成的逻辑上的交换机是互不相通的。因此,在交换机上设置VLAN后,如果未做其他处理,VLAN间是无法通信的。
vlan分类
静态vlan
基于端口的VLAN(PortBased VLAN)。需要逐个端口指定配置,不适合那些需要频繁改变拓补结构的网络。
动态vlan
动态vlan出发点是灵活配置网络拓扑结构。其细分类型可以对照OSI模型。
-
基于MAC地址的VLAN(MAC Based VLAN) 如果计算机交换了网卡,还是需要更改设定。
-
基于子网的VLAN(Subnet Based VLAN) 即使计算机因为交换了网卡或是其他原因导致MAC地址改变,只要它的IP地址不变,就仍可以加入原先设定的VLAN。
-
基于用户的VLAN(User Based VLAN) 根据交换机各端口所连的计算机上当前登录的用户,来决定该端口属于哪个VLAN。这里的用户识别信息,一般是计算机操作系统登录的用户。
vlan和汇聚链接
汇聚链接(Trunk Link)指的是能够转发多个不同VLAN的通信的端口。
汇聚链接背景:
在现有网络基础上再新建VLAN时,为了让这个VLAN能够互通,就需要在交换机间连接新的网线,而建筑物楼层间的纵向布线比较麻烦。并且,VLAN越多,楼层间(严格地说是交换机间)互联所需的端口也越来越多,交换机端口的利用率低是对资源的一种浪费、也限制了网络的扩展。
为了避免这种低效率的连接方式,人们想办法让交换机间互联的网线集中到一根上,这时使用的就是汇聚链接(Trunk Link)。

在上面的组网,每个交换机分别处理2个vlan:vlan10和vlan20。 在没有vlan trunk link的情况下,如果要让两个交换机对应的vlan10和vlan20互通,则两个交换机需要分别占用2个端口:
- 一个端口用于两侧交换机互通vlan10
- 一个端口用于两侧交换机互通vlan20
引入vlan trunk link之后,只需要使用一个端口,连同两个交换机即可。 汇聚链路上流通的数据帧,都被附加了用于识别分属于哪个VLAN的特殊信息。
对于复杂的组网,vlan汇聚链接能够减少端口占用、减少布线、更加灵活。
汇聚链接承载多个vlan的通信,负载较重,因此需要带宽更大。 默认条件下,汇聚链接会转发交换机上存在的所有VLAN的数据。换一个角度看,可以认为汇聚链接(端口)同时属于交换机上所有的VLAN。
VLAN的汇聚方式 —— IEEE802.1Q与ISL
通过汇聚链路时附加的VLAN识别信息,常见的方式有:
- IEEE 802.1Q
- Cisco产品独有的ISL(Inter Switch Link)
802.1q

802.1q协议在源地址和类型字段之间,增加了4个字节标记:
- 2字节的TPID(Tag Protocol IDentifier)
- 2字节的TCI(Tag Control Information)
注意vlan id占用12 bit,最多可供识别4096个VLAN。
因为packet多了4个字节,因此要更新末尾的CRC字段。
而当数据帧离开汇聚链路时,TPID和TCI会被去除,这时还会进行一次CRC的重新计算。
cisco ISL

ISL在数据帧头部增加了26字节的ISL header,在数据帧尾部增加4字节的CRC。总共增加了30字节。 而当数据帧离开汇聚链路时,直接去掉头部的ISL header和尾部的CRC,原来数据帧的CRC不用重新计算。

路由器和三层交换机
非常值得去看VLAN 基础知识当中的**“VLAN间路由”**章节,例子很清晰明了。
以下内容来源于该文章:
首先,先来复习一下为什么不同VLAN间不通过路由就无法通信。在LAN内的通信,必须在数据帧头中指定通信目标的MAC地址。而为了获取MAC地址,TCP/IP协议下使用的是ARP。ARP解析MAC地址的方法,则是通过广播。也就是说,如果广播报文无法到达,那么就无从解析MAC地址,亦即无法直接通信。
计算机分属不同的VLAN,也就意味着分属不同的广播域,自然收不到彼此的广播报文。因此,属于不同VLAN的计算机之间无法直接互相通信。为了能够在VLAN间通信,需要利用OSI参照模型中更高一层——网络层的信息(IP地址)来进行路由。
解决vlan间的通信,有多种办法。

使用路由器进行VLAN间路由
路由器和交换机的接线方式,大致有以下两种: (1)将路由器与交换机上的每个VLAN分别连接 (2)不论VLAN有多少个,路由器与交换机都只用一条网线连接
实际上会使用方法2。实施方案是:
将用于连接路由器的交换机端口设为汇聚链接(Trunk Link),而路由器上的端口也必须支持汇聚链路。接着在路由器上定义对应各个VLAN的“子接口”(Sub Interface)。尽管实际与交换机连接的物理端口只有一个,但在理论上我们可以把它分割为多个虚拟端口。
收发信双方同属一个VLAN之内的通信,一切处理均在交换机内完成。 不同VLAN间的通信,即使通信双方都连接在同一台交换机上,也必须经过:“发送方——交换机——路由器——交换机——接收方”这样一个流程。
使用路由器进行VLAN间路由时的问题:
- 路由器通常基于软件构建,处理数据能力低于基于硬件构建的交换机
- 流量会集中到路由器和交换机互联的汇聚链路部分,这一部分尤其特别容易成为速度瓶颈
于是出现三层交换机:交换模块硬件+路由模块硬件,并且二者通过内部高速链接互通。 三层交换机则是在内部生成“VLAN接口”(VLAN Interface)。VLAN接口,是用于各VLAN收发数据的接口。
加速VLAN间通信的手段
VLAN间路由,必须经过外部的路由器或是三层交换机的内置路由模块。但是,有时并不是所有的数据都需要经过路由器(或路由模块)。
相同的src ip、src port、dest ip、dest port的一连串数据包被称为“流”(Flow)。 只要将流最初的数据正确地路由以后,后继的数据理应也会被同样地路由。 整个流的第一块数据,照常由交换机转发→路由器路由→再次由交换机转发到目标所连端口。这时,将第一块数据路由的结果记录到缓存里保存下来。需要记录的信息有:
- 目标IP地址
- 源IP地址
- 目标TCP/UDP端口号
- 源TCP/UDP端口号
- 接收端口号(交换机)
- 转发端口号(交换机)
- 转发目标MAC地址
路由器和L3交换机的对比
路由器的必要性:
- 连接WAN
- 网络安全性。路由器除了最基本的数据包过滤功能外,还能基于IPSec构建VPN(VirtualPrivate Network)、利用RADIUS进行用户认证等等。
- 支持除TCP/IP以外的异构网络架构

小结
VLAN间路由,必须经过外部的路由器或是三层交换机的内置路由模块 虽然利用VLAN可以灵活地构建网络,但是同时,它也带来了网络结构复杂化的问题。