网络运维一直倡导要可视化,并且在实践中不断优化,怎耐可视化的技术寥寥无几,网络技术经过了五十年的演进变化,可视化依然要依托SNMP、镜像这些老技术。SNMP能监控到网络的运行信息实在有限,从外部应用发起的请求获取网络状态信息的SNMP协议,无法实时反映网络的状态。比如:时延、转发路径、缓存和丢包,这些都无法通过SNMP获知,网络对运维的人员来讲,就是一个黑盒子,传统的监控手段无法看透黑盒子。所以,长期以来网络运维的可视化算不上真正的可视化,那些通过大屏将端口流量、设备CPU、Memory等运行状态显示出来只不过是可视化的一部分,网络真实的运行状态还未能显现出来。最近,网络可视化还真出现不少新技术,颇为引人注目,也许是未来网络运维的技术演进方向,本文接下来就详细讲讲。
Sflow(RFC3176)
Sflow其实算不上新技术,这几年几乎已经所有的网络设备都能支持。Sflow实现了网络流量的采样和推送,通过Sflow采集最原始的数据信息,以IP报文格式的形式发往服务器,由专门的分析工具解析,然后根据这些采集的数据进行统计分析。Sflow是采样方式收集数据,采样比越高获取的数据越真实,但采样比越高,设备CPU压力就越大。Sflow采样报文是经过网络设备CPU收集,然后再发向服务器的,采集的数据太多,会对网络设备CPU形成攻击,可能影响设备的正常协议处理,影响业务。所以,要谨慎使用Sflow,即便使用也要根据设备流量大小,确认好采样比。Sflow使用的局限性让人想到用硬件实现数据采集,比如FPGA、Netstream硬件设备,这样采集数据性能虽会有很大提升,但运维的投入成本(购入支持FPGA的板卡或Netstream硬件设备)会上去。另一方面,网络设备的CPU、Memory、网络拥塞和网络事件的日志信息也无法通过Sflow实时传递出来。所以,Sflow技术一直不温不火,并未得到绝大多数人的认可,使用时还要配合着SNMP来用,一个网络中要部署多个监控系统,可视化看到的都是部分网络,并非全部。
gRPC(Google Remote Procedure Calls,谷歌远程过程调用)
网络运维在可视化上的窘态引起了互联网技术人员的注意,谷歌发布了一个开源的RPC框架,RPC定义了客户端和服务端进行通信的数据结构,服务端提供的服务等,然后编译生成相应的代码供客户端和服务端使用,gRPC是RPC框架正式的实现版本,在2015年初开源的通信框架。gRPC采用了protocol buffer来做数据的序列化与反序列化,用http 2作为数据传输协议,性能更优。在网络设备上集成gRPC应用,网络设备就相当于gRPC客户端角色,监控服务器相当于gRPC服务器角色,网络设备主动向监控服务器发起gRPC通道建立和连接。gRPC可以灵活定义数据格式和数据推送的阈值,从而实现网络设备自身运行状态的主动推送数据能力,实现周期性推送网络设备丰富的运行状态,尤其当发生缓存不足导致的丢包时,也会实时通知给监控服务器,实现网络运行数据的可视化。表1列举了gRPC与传统可视化技术的对比:
显然,gRPC具有响应速度快,实时性高,采集数据全面的优点。
INT(In-band Network Telemetry带内网络遥测)
INT是由Barefoot、Arista、Dell、Intel和VMWARE共同提出的技术。INT是被设计用来收集和报告网络状态的一个框架,它通过数据平面实现,不需要控制平面的干涉,Facebook根据这个协议和相应厂商的网络设备设计了一套系统,未来可能会开源。INT的思想是在第一跳的网络设备上收到相应报文,对其进行封装特定报文,然后扔给下一跳,直到最后一跳网络设备,每一跳网络设备都会收集相应的信息,封在报文里面。最后,在最后一跳网络设备剥离报文里面收集到的信息,然后把原始报文扔给服务器,收集到的网络设备信息扔给监控端处理。这样即不影响正常业务转发,又能收集到经过网络设备的信息,在黑盒不知道网络拓扑的情况下还能探测出网络拓扑。初步协议给定的有:交换机ID、入端口信息、入端口时间戳、出端口ID、出端口时间戳、出端口链路利用率,缓存信息。INT是一个类似OAM的协议,INT根据沿路设备的信息,就能够知道报文怎么走的,哪里有性能瓶颈,解决了网络转发路径和转发时延不可见的问题。要注意的是:“INT推荐在数据面处理,不推荐控制面处理以体现真实情况。”利用INT技术能很快定位网络丢包和延迟问题,通过软件打标记是无法实现INT的高效处理的,必须需要网络设备硬件支持。
网络运维的可视化还有很长的路要走,sflow、gRPC、INT等都是可视化具体实现技术,尤其gRPC和INT技术还没有得到广泛使用,现有数据中心的绝大部分设备还无法支持这种新技术,网络设备的更新换代需要数年时间,所以这些新技术只有在新建的数据中心网络中才能有机会出现,能支持INT功能的网络设备必然具有芯片自编程能力,这对网络设备提出了更高要求。除了以上介绍的这三种可视化技术,还有微软在2015年提出的Pingmesh技术,以及依然是微软在2015年提出的Everflow技术,还有Netsight(具体采用的Openflow协议)、ATPG、Planck等等,这些都是这两年出现的可视化技术,虽然没有gRPC、INT影响力大,但技术也在不断完善中,未来也不好说哪些技术一定能胜出,哪些技术会直接淘汰,去让时间证明一切吧。