8.1 二层交换技术 

局域网(Local Area Network, LAN)指的是在一个局部的地理范围内,将个人的计算机、服务器、网路打印机等各种电子设备连接起来的通信网路。现在以太网(Ethernet)逐渐占据了局域网技术的主导地位,现在基本所有的局域网都是采用以太网技术实现。 

在使用以太网技术实现的局域网中,以太网二层交换机是非常重要及基础的网络设备。以太网交换机可以分为两种:二层交换机和三层交换机。其中二层交换机是指具有二层交换功能的交换设备,而三层交换机在二层交换机的基础上还具备了三层路由和三层数据转发的功能。(此处的二层指的是TCP/IP协议中,根据数据链路层信息对数据进行转发的行为) 

 

⑦ 

应用层 

 

⑤ 

应用层 

 

④ 

应用层 

⑥ 

表示层 

⑤ 

会话层 

④ 

传输层 

④ 

传输层 

③ 

传输层 

③ 

网络层 

③ 

网络层 

② 

网络互联层 

② 

数据链路层 

② 

数据链路层 

① 

网络接入层 

① 

物理层 

物理层 

OSI 模型 

TCP/IP 模型 

TCP/IP 参考模型 

 

当pc要发送数据时,pc的应用层协议会产生数据,而数据网络及基本功能就是要将数据传输到目的设备。在数据进行传输前,会进行层层封装。 

在数据包经过二层交换机时,交换机会现将电信号还原成数据帧,然后会检查数据的完整性,并根据帧头的目的MAC转发该数据帧。在目的设备收到数据帧后,将进行层层解封装,最终得到有效载荷。 

8.1.1 MAC地址 

网络层是TCP/IP模型中的第三层,它最基本的功能是将数据包从源转发到目的地。网络层定义了逻辑地址,对IP协议来说,这个地址就是IP地址。在源进行数据发送的时候在数据包的头部写入源和目的IP,这样数据包就能够正确的转发到目的IP地址所定位的设备。 

数据链路层是TCP/IP模型中的第二层,它最基本的功能是将源设备的网络层下发的数据传输到链路上的目的相邻设备。以太网技术是最常见的数据链路层技术之一,在以太网技术中,MAC地址用于定位设备,也被用于二层的数据寻址。MAC地址长度48bit,通常采用十六进制的格式表示。MAC地址和IP地址一样分为三种,分别是单播MAC地址、组播MAC地址、广播MAC地址。 

单播MAC地址:又称硬件地址,用于唯一地标识一台设备的某个接口,具有全球唯一性,往往被烧录在以太网网卡上。厂商在在生产以太网接口卡之前,必须要先得到24bit的组织唯一标识(OUI),OUI是通过IEEE(电子和电气工程师协会)注册得到的。单播MAC地址第一个字节的最低比特位为0。 

组播MAC地址:用来标识一组设备,不能分配给一个以太网接口,只能作目的MAC地址不能作为源MAC地址。组播MAC地址第一个字节的最低比特位为1。

广播MAC地址:广播MAC地址的所有比特位都为1,广播MAC地址标识了所有的以太网接口。 

8.1.2 以太网数据帧 

以太网帧有两种格式,一种是IEEE 802.3格式,一种是Ethernet II格式。目前的网络设备同时兼容两种帧格式,但是大多数以太网帧使用Ethernet II格式。 

目的MAC地址 

(6bit) 

源MAC地址 

(6bit) 

类型 

(2bit) 

载荷数据 

(46~1500byte) 

CRC 

(4bit) 

“  类型:用来标识载荷数据的类型。(类型:0x0800 --- IPv4报文;0x86dd --- IPv6报文)“

8.1.3 MAC地址表 

MAC地址表最重要的作用是作为交换机进行数据帧转发的依据,MAC地址表中的每一个表项都包含着MAC地址,VLAN-ID以及交换机接口等信息。 

8.1.4 二层交换机的工作过程

当交换机的某个接口接收到数据帧时,首先会查看目的MAC地址,并在自己的MAC地址表中查询: 

--如果匹配成功,并且目的MAC地址对应的接口和接收此数据帧的接口不相同时,会将数据帧转发到目的MAC地址对应的端口;如果目的MAC地址对应的接口和接收此数据帧的接口相同时,丢弃该数据帧。 

--如果匹配失败,则将该数据帧进行洪泛。 

此外,交换机还会读取数据帧的源MAC地址,如果MAC地址表中没有此源MAC地址,交换机会创建一个MAC地址表项,并将这个MAC地址和对应的接口记录在表项中。 

PC1想要给PC2发送数据,起初如果PC1不知道PC2的MAC地址,这时PC1会向网络中广播发送一个ARP Request数据帧,用于请求PC2的MAC地址。ARP到达交换机后会被交换机进行洪泛,PC2收到APR数据帧后会进行解封装,然后将ARP数据载荷上交给ARP协议模块,ARP协议模块收到后会判断该请求是否是发给自己的,若不是则会忽略这个请求,若是则会用一个单播的ARP Reply数据帧进行回应。这样PC1就知道了PC2的IP地址对应的MAC地址。 

以太网交换芯片架构 以太网交换技术_IP

 

8.2 VLAN 

8.2.1 VLAN的概念和意义 

对于一个交换机而言,缺省情况下所有的接口都属于同一个广播域(一个广播数据所能到达的范围),当路由器接收到的单播数据帧中目的MAC未知时,会将这个数据帧进行洪泛,尤其是在设备数量比较多的广播域里,这将会给网络带来很大的负担。 

另外,在同一台交换机下可能连接有公司不同部门的设备,如果所有设备同属一个广播域,将会不利于信息安全和管理。 

VLAN(Virtual Local Area Network,虚拟局域网)就可以解决上述问题,它能够将一个物理的VLAN在逻辑上分为多个广播域。VALN的划分可以基于接口、MAC地址、IP地址、协议类型、策略等。注意:不同的VLAN之间不能进行二层通信。 

VLAN的优点: 

  • 隔绝广播,降低因为洪泛带来的网络压力。 
  • 提高网络组建的灵活度,同一工作组不需要被局限在一个地理位置。 
  • 提高网络的可管理性,多个VLAN分类管理。 
  • 提高网络的安全性,VLAN之间相互隔离。 

8.2.2 VLAN的跨交换机实现 

以太网交换芯片架构 以太网交换技术_IP_02

VLAN划分其情况如上图所示,如果PC3给PC4发送了一个数据帧,数据帧到达SW2的GE0/0/0接口时,SW2并不知道这个数据帧所属的VLAN ID。所以需要一种“标识”手段来解决这个问题。 

IEEE 802.1Q标准也就是虚拟桥接局域网(Virtual Bridged Local Area Networks)标准定义了可以实现“标记”的方法,使得VLAN能够跨交换机实现。 

标签协议标识符(TPI):表示该数据帧的类型,如果该字段为0x8100,则表示数据帧是820.1Q帧。 

优先级(PRI):表示帧的优先级,该字段主要用于QoS(服务质量)。 

标准格式指示符(CFI):在以太网环境中,这个字段始终为0。 

VLAN ID:表示该帧所属的VLAN-ID。 

8.2.3 接口类型 

通常,二层交换机的接口都为二层接口,二层接口也有很多类型,华为的交换机上也叫链路类型(Link-Type),不同类型的二层接口对数据帧的处理方式不同。但是无论是什么接口类型,在默认情况下都有一个缺省VLAN-ID(PVID-Port Default VLAN ID),缺省为1。 出于提高数据处理速度的考虑,在交换机内部,数据帧一律携带tag。 

1、Access类型 

Access类型的接口常常用来连接终端设备,如PC、服务器等,这些终端设备的网卡通常只收发无标记帧。另外路由器的接口如果工作在三层模式并且没有部署子接口(Sub-Interface),通常情况下也将其配置为Access类型。 

如果采用基于接口划分VLAN的方式,一个接口只能被划分到一个VLAN中。 

Access接口对数据帧的处理: 

接收:当Access接口收到一个无标记帧(PVID=1或无Tag)时,交换机会接收这个缺省路由并将数据帧打上缺省VLAN的Tag;如果这个Access接口加入了特定的VLAN,那么交换机会将收到的无标记数据帧打上这个特定VLAN的Tag;当Access接口收到一个有Tag的数据帧时,如果这个数据帧的VLAN-ID和此Access接口的缺省VLAN-ID相同,交换机会接收这个数据帧;如果不相同,这个数据帧会被交换机丢弃。 

发送:向Access接口发出的数据帧会被交换机剥除Tag,变成无标记数据帧。 

2、Trunk类型 

Trunk类型的接口可以做到一个接口接收和发送多个VALN数据帧。经常被部署在交换机和交换机之间的接口、虚拟主机(含多个虚拟网卡)和交换机接入的接口、部署了子接口的路由器接口等。 

Trunk接口对数据帧的处理: 

接收:当Trunk接口收到一个数据帧时,如果是无标记数据帧,交换机会将数据帧打上缺省VLAN的Tag并判断该VLAN-ID在这个接口是否被允许通过,如果允许,则将该数据帧接收,反之则丢弃该数据帧。如果是标记帧,交换机会判断该帧所携带的VLAN-ID是否被允许在这个接口上通过,如果允许则接收这个标记帧,反之则丢弃这个标记帧。 

发送:当Trunk接口发送数据帧时,如果这个数据帧携带的VLAN-ID与发送接口的PVID相同,并且这个VLAN-ID在接口允许通过的VLAN-ID列表中,则剥除该数据帧的tag,并从接口将其发送出去;如果这个数据帧携带的VLAN-ID与发送接口的PVID不同,但是这个VLAN-ID在这个接口允许通过的VLAN-ID列表中,则保持该数据帧原有的Tag,并将其从接口发出。 

3、Hybrid类型 

Hybrid类型和Trunk类型大体一致。只是Hybrid类型的接口可以通过配置实现,在发送某个或某些VLAN的数据帧时不携带Tag。Hybrid接口还可以实现基于IP地址的VLAN划分。 

8.3 实现VLAN之间的通信 

VLAN可以将一个大的广播域切成更多小的广播域,不同的VLAN之间二层隔离。但是在实际的网络中会涉及到不同VLAN之间的通信。 

8.3.1 使用以太网子接口实现VLAN之间的通信 

以太网交换芯片架构 以太网交换技术_IP_03

虽然VLAN隔离了二层通信,但是可以通过三层设备实现不同VLAN之间的通信。  

上图中,交换机四个接口类型均为Access,并且在每个接口上只加入了下联设备所属的VLAN,其余数据如下表所示。 

设备 

IP地址 

VLAN 

网关 

PC1 

10.1.20.1/24 

10 

10.1.20.254 

R1(G/0/0/0) 

10.1.20.254/24 

10 

 

PC2 

10.1.30.1/24 

20 

10.1.30.524 

R1(G0/0/1) 

10.1.30.254/24 

20 

 

PC1发送数据给PC2时: 

1、PC1的上层协议产生的数据载荷到了网络层,数据载荷在网络层被封装了一个IP头部,其中源IP地址是10.1.20.1,目的IP是10.1.30.1。接下来PC1的网卡要把数据封装成帧,PC1发现目的IP地址和本地网卡地址不在一个网段内,所以需要将数据包先转发给默认网关10.1.20.254。然后PC1会在ARP表中找网关IP对应的MAC地址,初始情况下PC1没有对应的ARP表项,所以它以广播的形式发送ARP Request数据帧,用来请求网关IP对应的MAC。 

2、交换机收到PC1发送的ARP Request数据帧后,发现是一个广播帧,而且PC1所在接口又加入了VLAN 10,所以它会将这个数据帧拷贝并从其他同属于VLAN 10的接口发出。同时交换机还会学习到数据帧的源MAC地址,并将PC1的MAC与下联接口绑定。 

3、路由器收到数据帧后,会为PC1建立一个ARP表项,并回复一个单播ARP Reply数据帧给PC1。 

4、ARP Reply到达交换机后,交换机会在自己的MAC地址表中查询这个数据帧中的目的MAC地址,最终发现MAC中有匹配的表项,且该表项的出接口为E0/0/1,所以交换机将该数据帧从接口E0/0/1中发出。并数据帧中的源MAC地址与对应接口绑定。 

5、PC1收到ARP Reply后,知道了网关的MAC,随后将待转发的数据封装成数据帧,然后从网口发出,帧头中目的MAC地址为路由器G0/0/0接口的MAC地址。 

6、数据帧到达交换机后,交换机经过查询MAC地址表,匹配到了相应的表项,根据匹配到的表项,将数据帧从G0/0/1接口发出。 

7、路由器收到数据帧后,读取目的MAC地址,发现数据帧是发给自己的,通过读取“类型”字段发现帧里面封装的是一个IP报文,于是将数据帧解封装,然后将里面的报文交给IP协议模块处理。IP协议模块发现目的IP地址并不是本地的IP地址,于是在路由表中查询这个IP地址,匹配成功后发现出接口为G0/0/1。然后将数据包重新封装成帧,帧头里面的源MAC地址为本地接口G0/0/1的MAC地址,源MAC地址是PC2的MAC地址(ARP请求过程忽略),并将数据帧从G0/0/1口发出。(后面的略) 

8.3.3 使用VLANIF实现VLAN之间的通信 

通过路由器可以实现不同VLAN之间的通信,如果使用路由器多臂的方式实现,就会浪费路由器的接口资源;但是使用单臂的方式也有缺点,在当VLAN数量和规模比较庞大时会给这条链路造成巨大的负担。 

在实际的网络中,实现VLAN间通信更常见的方法是使用三层交换机(Layer 3 Switch)。 

(可以将一个VLANIF理解为单臂路由中路由器的一个子接口) 

三层交换机和二层交换机相比还具备路由功能,在三层交换机上有一种逻辑接口叫做VLANIF(VLAN Interface)。作为三层接口,可以对VLANIF进行IP地址配置,通常情况下,这个IP地址会作为VLAN中设备的默认网关地址。例如在三层交换机中,添加一个VLANIF 10 和VLANIF12,配置完成后与之对应的VLAN10和VLAN12就可以通过这个交换机进行通信。 

8.4 MUX VLAN 

以太网交换芯片架构 以太网交换技术_二层交换_04

                 部门 A                                                   部门B                                                       部门C

要求: 

1、部门A、部门B、部门C都可以访问服务器,但不能相互访问。  

2、部门A和部门B内部可以相互访问,部门C内部不能相互访问。 

 

本需要三层设备才能完成,现在二层交换机基于MUX VLAN就能完成上述需求。 

  • 主VLAN(Principal VLAN) 

加入主VLAN的接口可以和MUX VLAN内所有的接口进行通信。 

  • 从VLAN(Subordinate VLAN) 

从VLAN分为两种:互通型(Group VLAN)和隔离型(Separate VLAN)。每个从VLAN必须和一个主VLAN进行绑定。 

加入互通型从VLAN的接口除了可以和主VLAN通信外还可以和同属一个互通型从VLAN中进行通信,而加入隔离型从VLAN的接口只能和主VLAN进行通信。  

8.5 VLAN聚合 

一般而言,不同的VLAN也会使用不同的IP网段。然而在园区网中,某些VLAN主机内的主机数量会非常少,如果分配对应的VLAN和IP网段,会显得非常浪费。 

如下图所示,网络管理员只被允许使用192.168.3.0/24部署该网段。 

不使用VLAN聚合技术的话就需要在每个二层交换机上创建不同VLAN,在三层交换机上创建三个与之对应的VLANIF,并分配三个IP地址(通过子网划分得到)。 

使用VLAN聚合技术就给所有的PC分配同一网段的IP地址,再通过VLAN技术将不同二层交换机下联的PC进行二层隔离。最后只需要在三层交换机上面创建一个VLANIF就可以了。 

以太网交换芯片架构 以太网交换技术_以太网交换芯片架构_05

在VLAN聚合中,有两种类型的VLAN: 

Super-VLAN:类似于“父VLAN”的概念,创建Super-VLAN后需要将Sub-VLAN关联到Super-VLAN中。Super-VLAN不包含任何接口,它只是将Sub-VLAN进行聚合,并且提供对应的三层接口(VLANIF)。 

Sub-VLAN:类似于“子VLAN”的概念,需要向Sub-VLAN中添加物理接口。同一Super-VLAN内的不同Sub-VLAN之间二层隔离,但是这些Sub-VLAN公用Super-VLAN的VLANIF。 

8.6 企业交换网络

以太网技术在企业园区网络中有着广泛的应用。传统的企业园区网络通信通常采用三层架构。 

接入层:接入层可被视为网络的边界,主要的功能是提供终端用户接入网络的入口,它负责将终端用户发往外部网络,或者发往其他VLAN的流量上交给汇聚层处理。一个典型园区网络的接入层往往连接着多种终端设备,例如PC、服务器、网络打印机、无线AP等。 

汇聚层:汇聚层顾名思义是流量的汇聚地,通常是终端设备的默认网关所在区域。三层交换机通常被部署在汇聚层,而这些交换机将作为各个用户VLAN的直接点以及默认网关。 另外,汇聚层也是接入层与核心层之间的桥梁,当终端设备需要访问网络外部,或者访问位于核心层的重要设备(如服务器)时,汇聚层负责将流量路由到核心层。 

核心层:核心层是网络的骨干,在许多中小型的园区网络中,核心层与汇聚层常被合二为一,但在大型的园区网络中,可能涉及多个网络区块,这些网络区块都使用各自的汇聚层设备,在这种场景下,核心层就是必须的了,它负责将各个区块的汇聚层连接起来,实现区块之间的数据交互。核心层负责高速的数据转发,而且必须充分考虑高可靠性、高容错性等等方面的设计。