马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在华为、华三交换机参数页面中,我们会明显看见缓存这一栏,那么对于这一栏缓存的参数,他指什么呢?同时缓存空间大小又会影响交换机什么方面的表现呢?一起花5分钟时间看看。交换机有三种转发模式:直通转发、存储转发和无碎片转发。不管是哪种转发模式,都要用到缓存。直通转发只解析报文的前几个字节进行转发,存到缓存里的数据量小,转发速度快,但因没有对整体数据做校验,容易转发错误报文。
交换机缓存空间 (Packet Buffer)的定义缓存是衡量交换机性能的关键指标。它并非通常意义上的缓存,而是一种数据交换的缓冲区,其核心作用就是在网络流量突发或端口拥塞时,暂时缓存无法即时转发的数据包,避免数据丢失,保障网络传输的可靠性。交换机缓存空间是处理数据突发流量而必需的设计,同时缓冲区的大小直接决定了在数据包丢失之前可以交换机可以容纳多大的突发流量。数据包会在入口缓冲区中驻留一段有限的时间,直到处理完成。数据包处理流水线的延迟通常非常有限,在固定流水线架构中约为1到2微秒。
交换机通用数据缓存模型示意图上图中,左边为数据报文入口结构,右边为输出端口结构。数据包被放置在缓存空间中,在缓存空间会有专门的管理算法控制和调度哪些数据包被丢弃,哪些数据包被传输和哪些业务流可以优先传输。总结缓存空间的核心作用有以下几条:- 应对流量突发(Traffic Burst)临时存储“积压”的数据包,按顺序逐包转发,避免丢包
- 拥塞控制(Congestion Control)通过缓存队列管理(如 FIFO、优先级队列),按策略调度数据包,缓解拥塞
- 保障服务质量(QoS)通过划分优先级缓存区域,优先转发高优先级数据包,确保关键业务质量
- 端口速率差异低速端口向高速端口发送数据时,高速端口需等待低速端口的“积压数据”,缓存可平滑速率差异
缓存空间算法调度
这是Barefoot Tofino2的数据报文处理模型,入口缓冲区会保留来自输入链路的传入数据包,同时数据包头(通常是数据包的前128-256个字节)将由数据包处理逻辑进行处理。该处理逻辑会检查数据包头中的各种协议报头,以计算下一跳,即数据包到达最终目的地需要经过的下一个路由器/网络设备。然后,它会为数据包分配一个出口队列以及优先级,并确定数据包必须从哪个出口出去。数据包调度对于交换机来说是一个重要环节,即使是Tofino2可编程交换机,这部分它也是不可编程的。本质上,数据报调度只处理报头。
数据包越小占用缓存空间越大[size=1.25em]交换芯片中数据包长越小,缓存空间占用越大,那么丢包率可能越大。这是因为数据包越小,其在交换芯片中的处理时间越短,导致更多的数据报需要在缓存中等待处理,从而增加了缓存空间的占用。 [size=1.25em]在交换芯片中,数据报的处理过程包括入口缓冲区和延迟带宽缓冲区(DBB)。入口缓冲区保存来自输入端口的传入数据包,而数据包头由数据包处理逻辑处理。处理完成后,数据包进入DBB,该缓冲区在网络瞬时拥塞期间提供缓冲1。由于小数据包的处理速度更快,它们会在入口缓冲区中迅速通过,但在DBB中仍然需要等待处理,这增加了DBB的占用率,也就是缓存空间的占用率。
[size=1.25em]另外网络芯片的性能是通过它在不丢弃数据包的情况下以线速每秒处理多少比特的流量以及满足该速率的最小数据包大小来衡量的。尽管以太网链路上 IP 数据包的最小大小可以低至 64 字节,但许多网络芯片会考虑典型的网络负载,并设计其数据包处理流水线以满足远大于 64 字节的数据包的性能要求——从而有效地减少每秒通过芯片的数据包数量。通过这样做,可以优化数据包处理逻辑,从而节省芯片的面积和功耗。但是带来的问题就是对小包流量可能就无法线速转发,这是在交换机性能实际测试中会碰见的问题。 [size=1.25em]
[size=1.25em]当然,缓存空间也不是越大越好,越大的缓冲区会显著增加延迟,有些交换机标榜拥有数GB的缓冲容量;然而,这会导致每GB的缓冲延迟高达 200毫秒。这种巨大的缓冲空间其实完全没有用,在数据包传输时候,上游的发送方会认为这种延迟是数据包丢失从而进行重传,反而加剧拥塞问题。其实更多的应该是从ASIC芯片的架构设计上来想办法。
缓存空间大小怎么来设计?
[size=1.25em]一个计算依据是根据网络往返时间 (RTT)。如果一台主机通过一个 RTT 为 16us 的网络连接到一个 100Gbps 链路,并且希望以 100Gbps 的速度传输数据,则必须允许其至少发送 1.6Mb(16us * 100Gbps)的数据才能收到确认。在 TCP 协议中,这被称为拥塞窗口大小,对于一个流来说,理想情况下等于带宽延迟乘积。
[size=1.25em]交换机避免丢包所需的缓冲区大小与带宽延迟相关。理想情况下交换机内的队列应具有足够的缓冲区,以容纳所有流经其的流量的拥塞窗口总和。这可以保证突发的incast不会导致缓冲区溢出。对于数据中心交换机,规则是一个端口最多需要等于整个交换机带宽(而不仅仅是端口带宽)乘以平均RTT。交换机的总缓冲区也是整个交换机带宽乘以平均RTT,最高效的交换机设计是交换机中的所有缓冲区都可以动态地提供给任何端口。
|