// //
//

Loading

数据链路层的趣事 - 走进交换机

本篇文章中,会从局域网及其组件开始,着重介绍 TCP/IP 中数据链路层,以及数据的传输介质,最后介绍交换机的发展过程及原理。

在阅读后应该了解如下的内容:

  • 什么是局域网及其组件
  • Hub 和交换机的区别
  • 交换机的转发规则
  • Switching 机制
  • 现代常用网络结构模型
  • 数据帧的格式
  • Ethernet2 和 IEEE 制订的标准的区别以及发展史

LAN

在一定的限制区域内,将多个终端设备连接到一起的形成的网络叫局域网。常见就是通过交换机连接起来的多台终端。

局域网中常用以下的组件构成:

终端设备:PC,IP 电话,打印机,移动电话,服务器

连接设备:网卡(NIC),网络介质(网线,无线电波)

网络设备:以太网交换机,路由器,AP(扩散无线信号,通过 WCL 集中控制)

协议:Ethernet,IP,ARP,DHCP

上图作为常见局域网的架构图,可见,交换机对其来说是最重要的部分。

集线器 (Hub)

交换机产生的背景:

对于 2 台 PC 来说,可以将其直接连接起来,实现两台 PC 之间的通信。但对于 3 台甚至更多的设备,仅仅连线就不行了。在这时,先是出现一个叫 HUB 的设备,用于解决连接多台终端的问题。由于 HUB 本身内部的设计(一根总线,总线分出多根线连接其他设备),就决定了有如下的特性:

  • 工作在物理层,对收到的信号进行放大,以扩大网络的传输距离。

  • 集线器发送数据没有针对性,而是采用广播的形式发送,也就是说当它要向某个节点发送数据时,不是直接把数据发送到目的端口,而是把数据包发送到会集线器相连的所有节点

  • 当以 HUB 为中心设备时,网络中某条线路发生了故障并不影响其他的端口工作

但 HUB 有个非常严重的问题,由于本身的设计,导致在同一时间只能有一根线传递数据(半双工工作模式)。

如果 HUB 连接的设备同时发送数据,就会产生冲突。,CSMA/CD,载波监听多路检测技术的出现解决了该问题。

对应实现思路就是:

  • 先听后发

  • 边听边发

  • 冲突停发

  • 随机分配

交换机

什么是交换机?

由于 HUB 在连接多台终端时存在的诸多问题,交换机进一步被发明出来。

和 HUB 不同,交换机在设计初,用交换矩阵代替了总线的架构。

和 HUB 相比,存在着诸多的优点:

  • 基于硬件转发,转发的速度是线性(忽略交换机本身处理数据的时间),有选择的转发数据帧

  • 默认全双工

  • 高速,并具有大量的帧缓存(超过交换机的带宽时,可缓存到本地)

  • 提供更多的连接端口

  • 可拓展,可分为核心交换机和边缘交换机,连接起来的多台交换机同属于同一局域网

交换机的作用

交换机收到数据时,检查数据包中目的 MAC 地址,然后将其从目的端口转发。

转发过程一般分为三种:

  • 直通式转发:转发时仅检查前 12 字节(源,目的 MAC 地址),避免不了转发无效残帧(小于 64 字节)
  • 存储式转发,检查数据包的所有字节,可靠性高,但有效率的损失
  • 无碎片式转发,检查前 64 字节,在可靠性和效率间取舍。

交换机的原理

交换机内部存在一张 MAC 地址表,其中记录了 设备 MAC,端口号,老化时间,VLAN 号 信息。

在不提及 VLAN 的情况下,收到数据时会遵循如下的处理流程:

  1. 首先查询 MAC 表,是否存在端口号和源 MAC 地址信息。

    • 如果存在,不做处理

    • 不存在,则将源 MAC 和入口端口记录。

  2. 再次查询 MAC 表,看表中是否存在目的 MAC 地址。

    • 如果存在,则单播转发。

    • 不存在,进行泛洪操作(广播)。终端收到后,检查二层包头,如果目的 MAC 是自己的话,进行回包,否则丢弃。

规范:

  1. 交换机只记录源 MAC 地址(转发过程通过有来回,双方 MAC 都可以记住)
  2. 广播帧和组播帧向所有的端口进行转发
  3. 泛洪:收到未知单播帧(MAC 地址未知)或者广播帧
  4. 转发:收到已知的单播帧
  5. 丢弃:FCS 损坏,或者目的 MAC 不是自己

MAC 地址表的老化时间

MAC 地址表项的老化时间为 300 秒。从地址加入后开始计时,如果在老化时间内各端口未收到源地址为该 MAC 地址的帧,那么该地址将从动态转发地址表(由源 MAC 地址、目的 MAC 地址和它们相对应的交换机的端口号)中被删除。静态 MAC 地址表不受地址老化时间影响。

交换机在真正转发时,实际涉及两张表 CAM 和 TCAM 表。

CAM 表(实际上是 MAC 表)用于精确匹配,对应转发结果只有两种情况。如拿 48bit MAC 地址来说,只会出现 48 位完全匹配和不匹配的情况。

而 TCAM (三态内容寻址)表中用于模糊匹配,如 ACL 抓取,匹配 QoS 策略等。

对应匹配结果有三种情况:

  • 精确匹配
  • 不匹配
  • 忽略

思科 Switching 机制

对于交换机和路由器这类转发设备,在转发数据的过程中,控制平面和数据平面是经常被提到的一个概念。

  • 控制平面:比如通过路由协议,学习或者配置后生成的路由表,就属于控制平面。
  • 数据平面(转发平面):为了更快转发数据,通过控制平面生成一张转发平面的数据表,当有数据需要转发时,直接通过数据平面进行转发,不在查询控制层面。

通常来说,控制平面的转发都需要 CPU 进行计算。而数据平面的转发,是直接的硬件转发,性能更高。

在思科设备中可通过 show ip cef 来查看数据层面的转发表。

对于思科的交换机来说,一般存在三种转发机制:

  • 进程转发
  • 快速转发
  • 思科专有转发

进程转发

可以将进程转发理解成每个数据包都需要经过 CPU 的处理,才能转发。性能较差。

快速转发

对于快速转发来说,第一个数据包会交由 CPU 处理,然后会将其缓存起来,后续去往相同地址数据包都会直接走缓存(硬件转发),不再交由 CPU 处理。简单来说,就是一次路由,多次转发。

路由指的是控制层面,转发指的是数据层面。

思科专有转发(CEF)

Cisco Express Forwarding (CEF) 是 Cisco 专有的转发机制,在思科设备上默认开启。为了实现更快速度的线性转发(硬件),设计了如下的数据结构:

  • Forwarding Information Base (FIB): FIB 就是通过路由表(需要 CPU 计算),而再次生成的一个数据结构。当网络中的路由表发生变化时,FIB 同样也会发生变化。在转发数据时,根据 FIB 直接转发,而不需要看路由表,从而提高效率。

  • Adjacency Table:邻接表,就是在二层链路层维护的一张表,其实就是 ARP 表。用于记录在链路层中,仅需一跳就可以达到的设备。CEF 使用它作为 2 层地址解析,维护了整个 2 层的下一跳地址。

数据链路层的传输媒介

由于Ethernet 的实际转发速度取决于实际的传输介质,一般为:

  • 双绞线
  • 光纤
  • 同轴电缆(早期,淘汰)

双绞线(应用较多)

双绞的目的,为了屏蔽内部的电磁干扰。一般来说,双绞线的速度可以从 10 Mbps 到 40 Gbps.,传输的最大距离是 100 m.

双绞线的线序:

T568B 线序为: 橙白,橙,绿白,蓝,蓝白,绿,粽白,粽

T568A 线序:绿白,绿,橙白,蓝,蓝白,橙,棕白、棕

其实 1,2 发生数据,3,6 接受数据

不同线序的目的:

同种设备连接需要用交叉线(568a,568b),不同种设备需要用直通线(568b)。原因在于同种设备使用直通线会冲突,因为 1,2 都是发送,3,6是接受。

交叉线:交换机和交换机,路由器和路由器,路由器和PC,PC 和 PC
直通线:交换机和路由器,交换机和 PC,交换机和服务器。

光纤

多模光纤(ST),波长 850nm,1310nm,光由二级发光产生,传输距离短,造价低。

单模光纤(SC,LC,FC),波长 1310nm,1550 nm,由激光产生,距离长,造价高。

数据链路层-数据帧的结构

数据链路层的主要职责是负责传输数据,其中常用的协议有:

  • 局域网中的 Ethernet 2 协议
  • 广域网中的 PPP,HDLC 协议

这里着重介绍下 Ethernet 2 协议,PPP 和 HDLC 请参看这篇

Ethernet 2

1980 年,由 Digital, Intel, Xerox 主导并用其公司首字符联合开发了 DIX 1.0 标准,该标准也称为 Ethernet I.

1982 年,Ethernet I 被 DIX2.0 取代,该标准沿用至今,就是为人熟知的 Ethernet II 标准。

但由于这两个版本的 Ethernet 协议为私有协议,1983 年由 IEEE 主导,为了将网络设备之间的协议标准化,而不依赖于具体厂商,将其拆分为 MAC 子层和 LLC 子层,其中 MAC 子层,用于处理物理层的访问。LLC 子层,用于上层协议的复用。推出了 802.3 Ethernet 标准。

其中 LLC 层标准为 - 802.2,MAC 子层根据具体的传输介质而不同:

数据链路层 LLC 子层 - 与网络层打交道 802.2 802.2 802.2 802.2
数据链路层 MAC 子层 - 与物理层打交道 802.3 802.1 802.5 FDDI
物理层 双绞线 无线 令牌 光纤

Ethernet II 的数据帧格式:

Preamble:

  • 8 字节,用于告知 NIC 网卡有数据传来。

MAC 地址字段:

  • 大小为 6 字节,48 bits. 前 24 位由 OUI 组成,后 24 位由 vendor 定义组成.

  • 其中第 8 位为 1 时,表示组播,为 0 时表示单播

  • 目的地址为 ffff.ffff.ffff 全 F,表示为广播地址

  • 目的地址唯一时,为单播地址。

Ether Type:

  • 2 字节,表明该以太网帧中封装了那种网络层的协议。
    • '0080' - IPV4
    • '0806' - ARP

data Unit:

  • 数据最小至最大范围为:46 ~ 1500 字节,如果上层协议长度小于 46 字节,必须补位到 46 字节。

FCS:

  • 4 字节,用于差错校验。

IEEE 802.3 Ethernet

前 8 字节和 Ethernet II 类似,1 位前导符加上 7 位帧分隔符。

源 MAC 和目的 MAC 也和之前一样,每个 6 字节。

接着 5 字节表示 LLC Header:
Length: 两字节,表示该帧的长度。理论上是 0 - 65534 字节,但由于 Ethernet 帧限制,MTU 最大为 1500 字节。
d:1 字节,表示 DSAP。
s:1 字节,表示 SSAP。
c: 2 字节,表示控制字段

通过 DSAP 和 SSAP 标识内嵌了哪种网络协议,常见值为:

  • hex '04' - IBM SNA
  • hex '06' - IP 协议

剩下的位置为数据单元和 4 字节的校验和。

但由于 SAP 的设计方式和一些协议并不兼容,SNAP 又被设计出来,用于改善该问题,使其不兼容的协议可以用 802.3 标准通信。

在使用 SNAP 时,同时将 DSAP 和 SSAP 设置为 AA,Control 设置为 03.

之后的 5 字节作为 SNAP 的头部:

O:3 字节,表示 Organization Unique Identifier

T:2 字节,表示用到的私有协议。

剩下的同为数据单元和校验和。

虽然说 802.2 + 802.3 整合可以起到 Ethernet 2 的作用,当由于前者的位数更长,所以支持 Ethernet 2 慢慢成为主流。

但有一个问题就出现了,就是如何区分 Ethernet2 和 802.3 协议呢?

在目的 MAC 之后,Ethernet2 用 2 字节表示所用的协议,802.3 用两字节表示帧的长度。

由于在以太网中 MTU 最大值为 1500 字节 - hex '05DC',所以如果作为长度时(802.3),该值一定会小于 1500 字节。

进而在大于 1500 字节时,表示的是 Ethernet2 协议,否则为 IEEE 802.3 协议。

具体在传输时,通过所在 字段,length 和 ethertype 字段,如果大于 1500 表示 Ethernet 2 否则为 IEEE 802.3.

至于在以太网中,为什么 MTU 的最大值设置成 1500 Byte 字节,可以阅读阿里这篇文章.

概括来说,MTU=1500 是在考虑传输效率和常见带宽的一个折中方案。

一般来说,协议的传输用 802.3,用户流量用的是 Ethernet2.

企业网络架构

从扁平网络到分层网络:

在最初的设计时,整体采用扁平式的网络结构,所有的终端设备直接连接交换机,交换机直接连到路由器,从而接入互联网。很明显,这样设计的网络没有冗余,存在单点故障的问题,当交换机或者路由器挂掉时,整个网络都无法正常通信。

随着网络规模的增大以及扁平式网络无法很好的提供服务,逐渐演化成分层式架构,对应也是软件层面上的解耦,各司其职。

分层式架构常分为三层:

  • 接入层 :一般使用二层交换机,工作在数据链路层。
  • 分布层 :一般使用三层交换机,工作在网络层。
  • 核心层:一般使用三层交换机,工作在网络层。

接入层:负责设备接入,并且常用来检查设备是否合规。

分布层( 汇聚层 ):部署策略,提供冗余,容易排错。

核心层:负责高速转发数据.

下面两幅图是在是否添加了核心层的对比:

没有核心层:

添加核心层:

可以发现,如果没有核心层存在的话,核心设备直接相互连接,在拓展性,易用性上,维护成本都存在着极大的挑战。

常见企业架构模型

发展到现在,下图中是较为常见的企业架构模型:

  • 企业园区:企业的核心网络
  • 企业边缘:
    • Internet 端,用于在连接互联网时,进行一些安全产品的防护
    • WAN 端,企业分支如何连接仅企业的核心网络,同样需要一些安全产品的防护
  • 运营商:这里提供互联网访问,和企业内网(WAN,VPN)用于远程站点的访问。
  • 远程站点:公司的分支机构,通过如 VPN 等,连接到企业核心网络。

参考

Cisco CEF

Ethernet Vs IEEE 802.3

posted @ 2020-06-27 18:04  来份锅包肉  阅读(1190)  评论(0编辑  收藏  举报