昨天,我们提到,数据中心运行的大规模计算与存储业务广泛应用RDMA作为跨节点内存访问的框架,而微突发、光纤劣化以及缓存管理错误等原因造成的以太网的少量丢包会造成RDMA性能的显著下降。
由于传统SNMP等机制无法精确诊断网络中的丢包、时延、抖动等影响业务体验的关键参数,工程师们想,如果有办法钻进交换机里面的以太网包处理芯片里面去就好了,可以看一看缓存使用量,记录转发时延,丢包率等……
谁能够钻进以太网包处理芯片呢?
对了,是以太网数据包本身。
我们如果能通过包处理芯片的特殊设计,在以太网数据包中加入标记字段,包括时间戳、缓存使用量、端口收发速率以及丢包率,那该多好呀!
Broadcom、Barefoot及Marvell为代表的以太网包处理芯片厂商,以及H3C和Arista为代表的中美交换机设备厂商,将这个美好的愿景变为了现实——在数据中心级和部分园区级以太网交换机上,引入了带内网络遥测(Inband Network Telemetry,INT)特性。
带内网络遥测的数据流向如下图所示。
如图,在以太网数据包进入Leaf交换机的时候,它会按照一定的采样率比例,将一部分数据包复制一份。被复制的数据包与原数据包由于具有完全一样的五元组、IP序列号和TCP序列号,在ECMP的Hash机制中,会途经过同样的转发路径。
在每一个交换机节点上,交换芯片会对该数据包的UDP或TCP头部后面,插入一个metadata字段。包括了前面提到的芯片内部诊断信息。如果经过多个节点,就会有多个metadata包头。这种机制叫做IFA over UDP/IFA over TCP。
在转发路径尾节点上,交换芯片会将这个数据包的所有metadata复制一份,并将数据包丢弃。metadata会被封装进ERSPAN隧道,发送到远端的采集器上。
matadata包含的内容如下:
交换机IP地址;
报文出入端口ID;
报文所在队列ID及缓存使用量;
报文出入交换机的时间戳(精确到ns);
出方向丢包字节数;
出方向接口利用率;
网络的SDN控制器通过ERSPAN,采集到这些信息之后,就可以通过来自全局的各个节点,分析出全网每一个微小的拥塞发生时间地点,回溯全网历史数据,以及给出原因诊断甚至自动调整网络配置了。
是不是很神奇?
且慢。
毛主席指出,在复杂的矛盾中,我们要善于抓主要矛盾。如果只是无差别地通过随机采样,获取全局各节点上的转发关键性能数据,难以实现抓主要矛盾。
造成网络性能下降的主要矛盾是哪些呢?如何精准地抓住这些矛盾提升网络性能呢?
请看下一节。