计算机网络之DCB相关技术简介
在一些复杂场景下网络上会存在多种对质量要求不同的流量共存于以太网中,比如在数据中心场景下存在存储流量和普通流量,存储流量时数据中心的核心流量包括文件传输、数据库访问、数据同步等需要更高的网络质量,要求无丢包,优先于其他流量等。普通流量包括日常运维,普通应用流量等,可以存在丢包等,对网络质量要求更低。传统网络上通常分别部署存储网络(如FC-SAN)和普通以太网实现。虽然这样能保证两种流量不会相互影响,存储网络能达到不丢包目的,但是带来成本增加和运维复杂等缺点。因此,推出一台新的流控机制(如PFC、ETS等)来保证不丢包,同时也可以将流量进行分开控制确保不会相互影响。这样的以太网叫增强以太网或者叫无损(Lossless)以太网,在数据中心场景下提出的所以通常叫DCB(Data Center Bridge)以太网。基于DCB可以在一个网络里面虚拟多个单独的链路,对不同链路单独流控、动态分配带宽等
MAC层FC(flow control)
在MAC层没有应答重传等机制,发送端只管发送,接收端只管接收,通常MAC会做缓冲区,比如可以缓存1k,处理不过来时可以先放到缓冲区,如果一直积压在缓冲区,缓冲区满就丢弃,对端不感知的,所以以太网标准中在MAC层定义了流控机制减少报文的丢弃增加mac的可靠性。当处理不过来时发送pause帧告诉对端,让对端停止发送帧一段时间。pause帧结构如下
dst addr | 目的MAC地址,固定为01:80:c2:00:00:01 |
---|---|
src addr | 源MAC地址。 |
eth type | 以太网帧类型,固定为0x8808 |
ctl opcode | 控制码,固定为1 |
time | 暂停时间,当=0时表示取消暂停 |
如果等缓冲区满了才发pause帧,那么pause还没到对端过程中对端还一直发送,此时接收端已经无法继续接收。所以MAC提供可配置的阈值参数,提供XOFF和XON两个参数配置,当本端缓存达到XOFF值时发送一定暂停时间的pause帧。当处理一部分帧后缓存减少到XON时,发送暂停时间为0的pause帧即恢复对端继续发送数据。
VLAN
VLAN是一种虚拟网络技术,可以根据不同的VLAN在MAC层分成多个不同网络,比如在进行广播时,如果设置了VLAN只会在相同的VLAN域里面进行传播,所以VLAN将物理连接的节点划分成多个不同的虚拟局域网。可以将物理连接到一起的一系列计算机分割成不同的局域网。同时在同一个局域网内可以根据Priority进一步将流量划分成8条不同的流量,将一条流量虚拟出多条相互独立的流量,可以根单独对其中一条虚拟流量进行控制。
dst addr | 目的MAC地址 |
---|---|
src addr | 源MAC地址。 |
eth type | 以太网帧类型,固定为0x8100 |
PRI | Priority,长度为3比特,表示帧的优先级,取值范围为0~7,值越大优先级越高 |
CPI | CFI (Canonical Format Indicator),长度为1比特,表示MAC地址是否是经典格式 |
VID | 该帧所属的VLAN域ID |
PFC
根据Priority将流量虚拟出8条独立的流量后,传统的pause帧是控制整条物理链路流量启停,不满足多条流量共存单独控制的目的,所以提出PFC(Priority-based Flow Control)基于优先级进行流量控制,不同优先级的流量使用单独的缓冲区,实现单独控制指定优先级的流量启停。
dst addr | 目的MAC地址,固定为01:80:c2:00:00:01 |
---|---|
src addr | 源MAC地址。 |
eth type | 以太网帧类型,固定为0x8808 |
ctl opcode | 控制码,固定为0101 |
vector | 其中0-7bit表示使能优先级0-7的帧,比如bit1为1表示下面time1有效 |
time0 | 优先级为0的帧暂停时间,当=0时表示取消暂停 |
time1 | 优先级为1的帧暂停时间,当=0时表示取消暂停 |
…… |
ETS
传统的pause帧流量或者PFC都是在接收端处理能力不足后通知对方停止继续发送数据。为了避免由于接收端处理能力不足导致大量丢包的情况。但都只是能简单的控制流量的启停,当一种流量完全占用带宽后其他流量即使没有被流控可能也无法发送报文。所以推出ETS(Enhanced Transmission Selection)基于优先级进行带宽分配,可以对不同的优先级进行带宽分配,当超过了指定带宽时停止传输。ETS基于优先级组PG(Priority Group)进行分配带宽,不同优先级的流量可以分配到不同的PG中,可以实现多个优先级流量共享带宽。
PFC是为了在接收端处理不过来时反压给发送端停止发送。基于这种机制实现带宽的控制效果肯定不理想。所以通常ETS是在发送方向进行带宽的控制。通常基于令牌桶算法进行控制。
DCBX
DCBX(Data Center Bridging eXchange),在数据中心网络融合场景下,为实现无丢包以太网,链路两端的PFC和ETS的参数配置需要保持一致。如果依靠管理员手工配置,不仅工作量庞大而且容易出错。数据中心桥接交换协议DCBX(Data Center Bridging Exchange Protocol)作为一种链路发现协议,能够使链路两端的设备发现并交换DCB配置信息,大大减轻了管理员的工作量。