在现阶段以太网是我们最容易也最现实的局域网架构,通常我们都是用交换机把PC连接在一起组成局域网,那么交换机是如何工作的,如何把报文从一端正确的送到另一端,使得双方能够正确的通信,由于交换机处于网络中的第二层,因此交换机中的数据称为帧,交换机需要维护一张MAC表,进来的帧对照这份MAC表找目的MAC对应的端口号,从那个端口出去,如果该帧在表中找不到该帧的目的MAC,则会洪泛到每个端口
指在这么一个以太网区域,这个区域可能有一个或者多个工作站,但是这个区域内的工作站同时只能有一个工作站发送数据帧,代表设备是HUB,它只是一个连接的作用,每个端口工作在一个冲突域中,会互相干挠
两层交换:代表设备是2层以太网交换机,作用于7层网络模型的第2层,数据链路层,它的基本原理是以数据链路层的地址作为数据帧在多个端口之间交换的判据,比如,对于以太网,采用以太网的数据链路层地址MAC地址为交换判据,构成了2层以太网交换机,最初的2层以太网交换机相当于一个多端口的桥接器,它的主要作用就是隔离冲突域,以太网交换机的所有端口可以同时发送以太帧,交换机的带宽是所有端口独享的,因此交换机的带宽是所有端口的带宽的总和
指在这么一个以太网区域,这个区域可能有一个或者多个工作站,如果这个区域内的某个工作站发送了一个广播帧(MAC地址为全F),区域内的其他工作站都应该能够接收到这个广播帧。
交换机无法隔离广播域,所有的端口都属于同一个广播域,一台主机发送一个广播帧,以太网交换机会向所有的端口转发,容易产生广播风暴,后来为了隔离广播域,出现了VLAN,一个交换机可以根据端口划分为几个VLAN,每个VLAN是一个广播域,属于不同VLAN的端口之间是不能通讯的,需要外接路由器进行VLAN间的通讯
以太网交换基于交换机或者是工作在二层的OLT等交换设备基于端口学习源MAC地址,地址学习表是L2交换机的转发依据
MAC地址 |
端口号 |
11:22:33:44:55:66 |
12 |
这张表表明交换机学习到12端口上的MAC地址是11:22:33:44:55:66
如果有一个包从其它端口进来,目的MAC是11:22:33:44:55:66,交换机则把这个包发送到12端口出去,交换机学习源地址,基于目的地址转发
假设MAC A, MAC B, MAC C, MAC D四台主机接在交换机的1,2,3,4端口上
A主机发送帧给B
交换机学习源MAC A, 但是在地址表中找不到B,因此洪泛至除了进入端口外的其它端口
B主机发送帧给A
交换机此时的在地址表中找到A是属于端口1的,因此该帧无需洪泛,而是直接转发到A主机
C主机发送广播帧
由于交换机是一个广播域,因此A,B,D主机都会收到C主机发送的广播帧
在TCP/IP协议规范中,没有VLAN的定义。当第二层网络交换机发展到一定程度的时候,传统的路由器由于在性能上的不足,它作为网络节点的统治地位受到了很大的挑战。既然传统路由器是网络的瓶颈,而交换机又有如此优越的性能,为什么不用交换机取代传统路由器,来构造网络呢?我们都知道,位于协议第2层的交换机虽然能隔离冲突域,提高每一个端口的性能,但并不能隔离广播域,不能进行子网划分,不能层次化规划网络,更无法形成网络的管理策略,因为这些功能全都属于网络的第三层———网络层。因此,如果只用交换机来构造一个大型计算机网络,将会形成一个巨大的广播域,结果是,网络的性能反而降低以至无法工作,网络的管理束手无策,这样的网络是不可想象的。按照TCP/IP的原理,一般来说,广播域越小越好,一般不应超过200个站点。那么,如何在一个交换网络中划分广播域呢?交换机的设计者们借鉴了路由结构中子网的思路,得出了虚网的概念,即通过对网络中的IP地址或MAC地址或交换端口进行划分,使之分属于不同的部分,每一个部分形成一个虚拟的局域网络,共享一个单独的广播域。这样就可以把一个大型交换网络划分为许多个独立的广播域,即VLAN。
VLAN(Virtual LAN)中文叫做虚拟局域网,它的作用就是将物理上互连的网络在逻辑上划分为多个互不相干的网络,这些网络之间是无法通讯的,就好像互相之间没有连接一样,因此广播也就隔离开了。VLAN的实现原理非常简单,通过交换机的控制,某一VLAN成员发出的数据包交换机只发给同一VLAN的其它成员,而不会发给该VLAN成员以外的计算机。简言之,一个VLAN就是一个广播域。
IEEE 提出了802.1Q标准,这个标准也可以称为VLAN技术的标准,在这个标准中定义了上面提到的VLAN标签,同时吸纳了802.1P的成果,在以太网上引入了优先级的概念,并制定了VLAN标准在未来一段时间内的发展方向,形成的802.1Q标准在业界获得了广泛的推广,它成为VLAN史上的一块里程碑。802.1Q的出现打破了虚拟网依赖于单一厂商的僵局,从一个侧面推动了VLAN的迅速发展。
802.1Q封装
802.1Q封装共4个字节,包含2个部分:TPID(Etype),Tag Control Info;
TPID:长度为2个字节,固定为0x8100,标识报文的封装类型为以太网的802.1Q封装;
Tag Control Info:包含三个部分:802.1P优先级、CFI、VLAN-ID;
1. 802.1P Priority:这3位指明帧的优先级。一共有8种优先级,取值范围为0~7,,主要用于当交换机出端口发生拥塞时,交换机通过识别该优先级,优先发送优先级高的数据包。
2. CFI:以太网交换机中,规范格式指示器总被设置为0。由于兼容特性,CFI常用于以太网类网络和令牌环类网络之间,如果在以太网端口接收的帧具有CFI,那么设置为1,表示该帧不进行转发,这是因为以太网端口是一个无标签端口。
3. VID:VLAN ID是对VLAN的识别字段,在标准802.1Q中常被使用。该字段为12位。支持4096(2^12)VLAN的识别。在4096可能的VID中,VID=0用于识别帧优先级,4095(FFF)作为预留值,所以VLAN配置的最大可能值为4094。
VLAN成员的连接方式分为三种:Access,Trunk,Hybrid;
Access连接:报文不带tag标签,一般PC设备相连,或者不需要区分不同VLAN成员时使用;
Trunk连接:在PVID所属的VLAN不带tag标签转发,其他VLAN中的报文都必须带tag标签,用于tag-aware(支持802.1Q封装)设备相连,一般用于交换机之间的互连;
Hybrid连接:可根据需要设置某些VLAN报文带tag,某些报文不带tag。与trunk连接最大的不同在于,trunk连接只有PVID所属的 VLAN不带tag,其他VLAN都必须带tag,而Hybrid连接是可以设置多个VLAN不带tag;
实际应用中,根据设置设备端口的Access、Trunk、Hybrid属性来实现各种不同的连接方式。端口属性的应用也远远超出了简单的VLAN成员互连,如VLAN隔离,组播VLAN
首先,需要明确一点就是,在交换机的内部,为了快速高效的处理,报文都是带tag转发的。其实,这点很好理解,因为交换机上很可能会配置多个VLAN,那不同VLAN流量区分只有依靠tag标签。
下面从报文入和报文出两个方向来介绍。
在入方向上,交换机的根本任务就是决定该报文是否允许进入该端口,根据入报文的tag/untag的属性以及端口属性,细分为如下情况:
1)报文为untag:允许报文进入该端口,并打上PVID的VLAN tag,与端口属性无关;
2)报文为tag:在这种情况下,需要交换机来判断是否允许该报文进入端口
Access端口: PVID和报文中tag标明的VLAN一致,接收并处理报文;否则丢弃。
Trunk/Hybrid端口:如果端口允许tag中标明的VLAN 通过,则接收并处理报文;否则丢弃。
交换机端口/进入包的类型 |
Untag |
Tag |
Acess |
打上PVID |
PVID和报文中tag标明的VLAN一致,接收并处理报文;否则丢弃 |
Trunk/Hybrid |
打上PVID |
端口允许的VLAN通过,否则丢弃 |
在出方向上,交换机已经完成对报文的转发,其根本任务就是在转发出端口时,是否携带tag转发出去,根据出端口属性,细分为如下情况:
1)Access端口:将标签剥掉,不带tag转发;
2)Trunk端口:报文所在VLAN和PVID相同,则报文不带tag;否则带tag;
3)Hybrid端口:报文所在VLAN配置为tag,则报文带tag;否则不带tag;
VLAN的应用是非常灵活的,可以基于OLT的PON口,基于终端,基于交换机以太网口,基于MAC,基于协议,基于优先级,甚至可以打上双层tag来区别用户,不同的场景不同的应用,但作用都是分离用户组,分离广播域。
参考:
http://bbs.c114.net/thread-742109-1-1.html
EMC中文支持论坛