以太网之交换式以太网

总线形以太网必须要改进

总线形以太网中,由于最短帧长和冲突域直径的相互制约,导致总线形以太网不得不进行一场技术上的革命,总线形以太网主要是CSMA/CD算法有它的局限:

  • 只适合轻负荷
  • 存在捕获效应
  • 最短帧长和冲突域直径之间的相互制约

解决以上问题我们可以从两个方面入手:

  • 较少终端
  • 缩小冲突域直径

分割冲突域原理

把大的以太网分割为若干个小的冲突域,让每个冲突域里的终端数量减少,距离缩短。然后用一个设备把这些冲突域连接起来,这就是分割冲突域的基本原理。

网桥

为了分割冲突域,我们可以用网桥来将以太网分割成多个冲突域,网桥的功能有:

  1. 隔断信号:是不同冲突域之间的信号不干扰
  2. 转发MAC帧

网桥的原理

在图中,终端A、终端B和网桥的端口1属于冲突域1,冲突域1的信号和冲突域2之间的信号相互不影响,网桥的端口在各自的冲突域中准守CSMA/CD算法,因此网桥应该有存储转发的功能。在网桥中,有一个转发表,可以根据MAC帧的目标地址确认应该从哪个端口转发:

比如终端A给B发送数据,在冲突域1中,B和端口1都会接收到数据,但是网桥在转发表中发现源地址和目标地址的端口是同一个,因此就会将数据丢弃,不做转发。如果终端A给C发送数据,网桥发现A和C不在同一个端口,而C在端口2上,因此网桥就将数据从端口2转发出去,转发到冲突域2的总线上,于是终端C和D都收到数据,D将丢弃数据,因为目标地址和它的MAC地址不一致,终端C将接收到数据

转发表的建立

最初时,网桥的转发表为空,但是它有学习的能力。当上图中转发表为空时,终端A给B发送数据,网桥根据接收到的端口和源地址知道,终端A是在端口1上,因此在转发表中增加A的MAC地址和端口1对应,但是此时网桥没有目标终端B MAC地址对应的端口,因此它不知道从哪个端口转发,此时他就在它的所有端口上转发(除了端口1)。另外转发表中的每一项都对应着定时器,定时器的作用是删除该项,因为在实际的运用中,我们的终端可能改变它的冲突域,如果A改变冲突域以后长时间没有发送数据,那么它就会出现接收不到消息的情况,因此,时间长了需要删除转发表中的项

如果某个网桥和终端采用全双工通信,则该终端和网桥不属于冲突域

集线器

同一时刻,集线器上的终端只能有一个设备发送或接收数据,因此连接在集线器上的终端仍然是属于同一个冲突域

广播域

当网桥从某个端口接收到MAC帧以后它采取的措施可能有三种:一是丢弃、二是转发、三是广播,广播就是指某个端口接收到以后,除这个端口外的其它端口都转发出去的转发过程,我们把整个以太网中所有的网桥都采用广播方式转发MAC帧,那么这个MAC帧能遍历的网络范围称为广播域,广播是有缺点和危害的:

  1. 浪费链路带宽和网桥、终端的处理能力
  2. 引发安全问题

那么只有在转发表为空的时候网桥才会广播吗?不止,在网络中有大量的网络协议是广播协议,也会让网桥进行广播,所以广播是会经常发生的,而且是不避免的。但是广播又有资源浪费甚至安全问题,所以我们必须解决,解决思路就是将不同安全级别的终端划分在一个广播域中,当网桥进行广播时,只能广播给和发送终端属于同一广播域的终端,随着广播域的划分,属于同一广播域的设备就越少,广播的效率也提高了

划分广播域

VLAN

划分物理以太网产生的每一个广播域等同于一个逻辑上独立的以太网,由于这些逻辑上独立的以太网存在于同一个物理以太网中,因而被称为虚拟局域网(Virtual LAN,VLAN)。

在划分VLAN时,我们不能随意的划分,划分的标准有

  • 划分VLAN时无需改变已有以太网的物理结构
  • 可以在不改变以太网物理结构的前提下,改变VLAN的数量及属于每一个VLAN的终端
  • 属于每一个VLAN的终端与该终端在物理以太网中的位置无关

VLAN划分过程

划分VLAN需要一个新的网络设备:以太网交换机,增加了VLAN划分及其他一些增强网络性能的功能的设备,同时它也有网桥的功能。

单交换机划分

如果多个设备连接在同一个交换机上,我们需要将这些设备划分到不同的VLAN,就可以通过设置交换机的VLAN中将属于同一个VLAN的端口分在该VLAN下面,这样,属于不同的VLAN的终端之间就不属于同一个广播域了,他们之间也不能通信了

多交换机划分

借鉴单交换机的划分方式,我们可以将下图的两个交换机根据要求在交换机1和2中建立这样的VLAN配置:

这样划分是没有问题的,终端A的信息只能从交换机的端口5中转发,因为在交换机1中端口1和5属于同一个VLAN2,对于VLAN3是一样的。但是这样会出现以下的问题:

  1. 一是交换机端口浪费,每个跨交换机的VLAN都要有两个端口用来建立交换机之间的交换路径
  2. 二是交换机之间的物理链路数量是不确定的,随着跨交换机VLAN数量的变化而变化

因此我们最好在交换机1和2之间让所有VLAN共享同一条物理链路,那么有什么办法呢?如下图所示:

我们取消交换机1端口5和交换机2端口3的连接,保留6和1的连接,将6和1作为共享端口,分别在各自的交换机中共享给VLAN2和VLAN3,这样会面临一个问题,终端A发出去的数据,交换机2如何知道应该从哪个端口转发呢?这就需要用到802.1Q协议:携带有VLAN标识符字段的MAC帧称为802.1Q帧格式

802.1Q协议就是在MAC帧中增加一个标识数据,当交换机1从端口1接收到终端A发送的MAC帧以后,交换机1知道端口1属于VLAN2,因此它在MAC帧增加一个VLAN2的ID标识,当交换机2接收到MAC帧以后,知道该MAC帧属于VLAN2,因此将它从端口6转发出去

在多交换连接的以太网中,交换机的端口可以分为三种:

  • 共享端口:同时属于多个VLAN
  • 接入端口:只属于单个VLAN
  • 混合端口:具有共享端口和接入端口双重功能

换分VLAN的过程实际上是建立每个VLAN的链路和确定端口在不同VLAN中类型的过程。对于只有一个终端连接的交换机端口属于接入端口,被多个不同VLAN终端使用的是共享端口,划分过程:

接入端口
  • MAC帧不能携带VLAN标识符
  • 根据输入MAC帧的端口确定该MAC帧所属VLAN
共享端口
  • MAC帧需要携带VLAN标识符
  • 携带的VLAN标识符与共享端口所属的VLAN范围一致
  • 根据MAC帧携带的VLAN标识符确定该MAC帧所属的VLAN
混合端口
  • 对于携带VLAN标识符的MAC帧,且携带的VLAN标识符与共享端口所属的VLAN范围一致,根据MAC帧携带的VLAN标识符确定该MAC帧所属的VLAN
  • 对于没有携带VLAN标识符的MAC帧,根据输入MAC帧的端口确定该MAC帧所属的VLAN
坚持原创分享,您的支持将鼓励我不断前行!