- 文章名称:In-band Network Function Telemetry
- 发表时间:2018
- 期刊来源:SIGCOMM
I Introduction (介绍)
NFV运行在商品服务器上,在网络功能生命周期管理过程中提供了巨大的灵活性,将逐步代替硬件中间盒设备。现在有很多建立、运行VNF的优秀平台,比如BESS和NetVM,实现VNFs生命周期管理并且提供一个良好的性能保证。
尽管NFV在工业上使用广泛,但是对于NFV在SLA验证、故障检测以及其他第三方应用的重要性却很了解很少。比如当源码是不可知的情况下,实现监测是非常困难的。尽管单独的测量可以进行,但是为VNF遥测设计和实现有限过载的通用架构并非易事。据了解,之前并没有在高效测量VNFs运行时的性能上做相关工作。
为了高效地监控NFs的运行性能,我们引入了带内网络功能遥测(In-band Network Function Telemetry INFT)。INT(in-band network telemetry)是一个在数据平面收集网络状态的架构,引起的开销可以忽略不计,并且不需要与控制器进行交互,同时能够捕获网络上的短暂变化。INFT同样依赖数据平面进行测量,但是旨在中间盒透明。
我们提出NFT,一个轻量级、基于黑盒的高级可配置遥测架构。NFT建立主要在NFV平台之上,并且不需要测量的NFs。遥测仍然主要是INT,通过利用现代CPU的指令级并行性,产生很少的开销并能够监视快速变化的性能。** 我们在网络架构中,添加对于postcard-like report的支持。
贡献如下:
- 一、设计了通用的架构,可以用于测量中间盒的性能而且不导致任何负载。
- 二、为带内遥测报告和postcard-like 报告提出了头部格式。
- 三、进行初步的评估,证明设计引起的微小负载。
II Design (设计)
如图1所示,在NFT中的遥测节点被分为三类:classifier,forwarder,以及sink。classifier是可信任的实体,创建并且插入遥测首部到数据包中,数据包根据顾客/网络配置策略选择出来。Forwards 通过将元数据放进数据包,收集度量信息,另外根据遥测首部(headers)发送post-cards,report metric information(度量信息)。sink 节点提取元数据信息并且将数据包改变为常规数据包。
当一个主机的NIC接收到一个数据包,NIC首先通过底层的路由机制(比如BESS或者Open Vswitch)将数据包发送给NFT classifier(arrow 1)。我们将这样的机制定义为Routing Layer(路由层)。INFT首部被插入到分类为遥测数据包的数据包中。这些数据包接着被发送到NFT forwarder(arrow 2)。转发器(forwarder)依据INFT首部将临时信息(比如时间戳)写入到INFT元数据区域中,然后将这些数据包发送到目的中间盒(arrow 3)。数据包在退出时传输回forwarder(转发器)(arrow 4)。接着,forwarder根据之前写的数据(我们假设为INFT首部和元数据,因此它们不会被中间盒直接移除,在多播的情况下被复制)将遥测结果计算并且写入到数据包中。最后,携带INFT元数据的数据包被发送到sink node(arrow 5)。postcard-like reports是通过forwarders 依据INFT首部生成,同样的,postcard-like reports同样可以直接地发送到sink node 。节点接着提取元数据并且格式化数据包为常规数据包。最后,这些常规数据包通过NIC发送到主机。为了提高架构的性能,某个节点,比如forwarders,可以直接地通过数据平面实现。
INFT协议包括INFT首部和INFT元数据,类似于INT(如图2)。Metric字段决定了放入到每个INFT数据包的元数据的类型。Length 字段指明了下一块元数据插入的位置。设置Postcard 位 表明postcard生成。INFT元数据是紧随在INFT header 之后的4bytes 表项。每个条目包含写入数据的forwarder(转发器)的标识符,数据包进入和离开转发器的端口ID以及收集的度量数据。现在,我们测量延迟,I/O 数据包比特速率,因为它们是最基本最直接的实现。
为classifiers 插入INFT协议并且读取数据 的确切位置可以由操作员配置,消除在不同中间设备添加INFT协议的影响。 默认的,我们建议在IP 选项字段中插入头信息,因为大多的NFs自动跳过IP 项。forwarders (转发器)同样的可以将INFT协议移数据包别的位置上,在数据平面支持更加灵活的测量。然而,正如在评估一节提到,这样的重写操作可能是昂贵的,导致性能下降并,因此应该小心使用。Postcard reports 在源数据包头之前包含一个Postcard header。首部有一个Next Protocol 字段指示数据包首部内的第一层。Sequence 字段和 Left Time 字段用于侦测数据包以及丢弃数据包。
III EVALUATION (评估)
我们在BESS上实现了这个架构,比如,在数据平面,与其他模块处理每个数据包速率的性能进行对比(Time Stamp Counter 的区别取决于进入和退出)。所有模块运行在单个的Inter Xeon E5-2620(2.40GHz).
结果如图3所示,Classifiers可以基于简单规则(比如5元组)相当快的速度(相当ACL模块)执行分类。forwarders写INFT数据的重要性能同样值得关注。我们根据INFT头和入口id选择遥测数据,通过使用条件移动而不是条件跳转来避免CPU气泡,从而开发现代CPU的指令级并行性。
然而,fowarders 花费更长的时间来移动INFT协议到数据包别的位置,因为forwards需要更长的时间来复制动作(actions)。这样的复制可以通过利用BESS预留的buffer来避免。Postcard的产生很缓慢,因为新的数据包需要分配。尽管如此,当postcard 速率低的时候,这样的开销是可接受的。
** 个人 **
In-band:频内,指那些数据控制已经被固定的网络协议,In-band 控制的控制数据通常和主要的传输数据公用同样的连接链路(以太网通道),属于应用层管理。被管理设备只有处于开机状态并进入作业系统的情况下,才能进行管理。像SNMP(Simple Network Management Protocol)都是属于In-band协议。SNMP使用方便,但是存在一个固有的缺陷:SNMP 管理信息总是和网络数据使用同样的网络路径。它使用相同的WAN和LAN路由、中继器和连接链路。当网络中断或是严重受损的时候,SNMP流量就不能在向量的管理设备或是工作站中流通。当网络组件中断时,In-band失去网络连接,不能使用。
Out-band:频外,又被称为熄灯(Lights Mangement,LOM)管理,弥补了In-band的缺点,是指那些数据传输信道独立于正常的网络传输,被管理设备即使在关机状态甚至故障的状态下,都可以进行修复重开机或是日志监控等管理作业。这对于分离两种不同类型的数据是十分有用的。Out of band 管理指那些通过拨号电话线允许技术人员连接到网络组件(防火墙、路由器、网桥、交换机、服务器等)。在电话系统中,当用于建立语音通信的设备分离时,就使用Out of band通信建立语音通信。
In-band管理相对于Out-band管理更廉价,但是在计算机网络中它不能够接触固件(BIOS和URFI),也不能够远程重新安装操作系统,不能修复系统booting的问题。在网络中,不允许独立于当前网络组件的网络组件进行远程管理。看数据传输是否通过独立的数据链路传输判断是否为Out-band network。