HotNets 2022 阅读评述(六)

07 Dec 2022

第21届HotNets于2022年11月14日-11月15日在美国得克萨斯州奥斯汀召开。本次会议共收到104篇投稿,接收32篇论文,录取率为30.77%。

SNG的同学们按照会议日程对论文内容进行了分期评述,本期介绍session6的论文。

Session 6: Programming Networks at Scale

A Case for Remote Attestation in Programmable Dataplanes

Nik Sultana (Illinois Institute of Technology); Deborah Shands , Vinod Yegneswaran (SRI International)

这篇文章介绍了一种使用Remote Attestation(RA) 技术来对网络安全特性进行动态评估的方法。该论文由来自伊利诺伊理工大学和斯坦福国际研究院的研究者合作完成。

背景:

可编程性是一把双刃剑。它可以更好地针对问题定制解决方案,优化资源利用。但它也可能被滥用,从而破坏硬件的安全性及其不知情用户的安全性。远程证明(RA)是一类为远程用户的资源(如硬件、操作系统和应用程序)提供完整性保证的技术。它通过收集证据以向用户保证与他们交互的资源的完整性,被用于在提供、使用或委托远程资源的互不信任的主体之间建立良好的信任关系。由于现有的RA技术将网络抽象化并集中于对等体,因此需要新的技术来实现动态、自动评估在可编程硬件上实现的网络的安全特性。本文考虑如何使用RA通过自动生成、收集和评估严格的可信性证据来实现网络安全特性的动态评估。

远程证明:

研究人员假设产生证据的硬件组件(例如,初始化芯片或生成数字签名的硬件)是可信的:它们被正确地设计和制造以产生显窃启证据。更大的组件或集成了可信组件的产品(例如,交换机、NIC)不被认为是值得信任的。对手可能试图利用不安全的中间节点以及硬件资源上的限制来潜在地危害路径证明。对手还可能执行供应链或组织内部攻击,以主动干扰硬件、软件和员工。RA利用来自可信组件的输出来获得跨分布式系统的安全保证,这些分布式系统部署在由不可信制造商组装并由不可信操作员(及其员工)运行的第三方节点上。

上图显示了RA中的主要原理,主要包括以下四个步骤:

1.Relying Party(依赖方)是远程程序的用户,它向Attester(证明方)递交程序执行的声明。

2.Attester产生代表执行该程序的平台生成的证据,证据需满足程序执行的声明,并将证据递交给Relying Party。

3.Relying Party将该证据递交给Appraiser(验证方)。

4.Appraiser验证该证据并产生证明结果,然后将证明结果返回给Relying Party。

要使用RA来判断多方随时间的网络通信,需要一种语言使得能够描述网络设备如何生成和处理证据。该语言需要原语来描述主体,并将整个网络中的处理步骤链接在一起。为了在一般网络设置中工作,该语言需要一些特殊的原语,来满足以下要求:

1.语言必须能够抽象路径,因为路径可能事先是不可知的。

2.为了对抽象路径进行推理,语言必须能够对位置进行抽象,因为我们可能不知道沿着路径的中间跳的身份。

3.这种语言还必须能够推理可达性,并断言一个证据收集者可以被证据产生者所达到的策略。

Copland是一种现有的用于RA推理的语言,它将RA证明协议的规范与由特定硬件特征提供的实施机制分开。本文扩展Copland以满足上述三个要求。

可编程数据平面中的远程证明

上图显示了可编程数据平面中的远程证明:证据从交换机直接发送到Appraiser进行认证。第一依赖方RP1接收该评估和认证的直接证据,第二依赖方RP2随后可以从Appraiser处检索该证据。

本文勾画了Copland的扩展,它结合了NetKAT的特性,以满足网络上的证明规范,它能够提供路径抽象、位置抽象以及可达性推理。

创建RA策略之后,Relying Party将编译策略,并将其序列化到传输层的数据包包头中,以便沿着其传输路径对其进行评估,然后,Relying Party将查询指定的地点以获取证据。为了解释关于流的这种策略,研究人员还设想了一种称为PERA(“PISA switch Extended with RA”)的设备,此交换机将有权访问可生成和使用证据的专用硬件原语。这些原语可以集成到可编程交换机中,也可以由可编程交换机远程调用。

个人观点

本文简要介绍了一种使用RA技术对网络安全特性进行动态评估的方法。通过使用NetKAT SDN编程语言的元素扩展Copland RA策略语言,可以为可编程网络定义RA策略,指定网络程序完整性证据的生成、收集和评估。通过实现这种RA策略,网络数据平面可以参与证明其自身可信度的过程。这本身不能确保由可编程数据平面处理的数据的机密性、完整性和可用性,但是它支持提高正在处理数据的数据平面程序中的置信度。并且该技术没有克服网络设备的物理不安全性,这值得社区朝着这方便继续探索。

Network Can Check Itself: Scaling Data Plane Checking via Distributed, On-Device Verification

Qiao Xiang, Ridi Wen, Chenyang Huang, Yuxin Wang (Xiamen University); Franck Le (IBM Research)

本文是厦门大学系统与网络课题组在数据平面验证方面的进一步探索,创新性地提出了分布式的网络设备自验证框架。

背景

网络规模越来越大,设备上的数据平面也越来越复杂,数据平面验证技术可以通过验证数据包转发行为与网络意图的一致性来检测网络错误,尽可能减少网络错误带来的代价。

而当前的数据平面验证工具都采用集中式架构,即利用一台/组高性能服务器作为验证器,通过管理网络,收集所有网络设备的数据平面信息(路由表、ACL等),再在验证器上执行算力/内存密集型计算任务,实现数据平面的网络正确性检测。集中式设计使得验证器容易成为性能瓶颈和单点故障,扩展性差。

设计

作者提出了一种分布式的网络设备自验证框架,增强数据平面验证工具的可伸缩性和提高其时间效率。其基本思想是将算力/内存密集型的验证计算分解为轻量、设备级验证子任务,下放到网络设备上分布式执行,实现大规模网络数据平面网内快速自检。

上图显示了整体框架和流程,主要包括三个部分:

1.高级声明式验证规范语言:用于将验证需求抽象成 (包空间, 设备集合, 行为) 的三元组,意为属于该包空间的数据包进入该设备集合的任一设备都要满足该行为约束。

2.验证规划器:基于数据平面验证需求和网络拓扑结构,生成有向无环网络图DVNet,再将计数任务进行分解为设备子验证任务,并将它们下发给网络中各个设备。

3.配置了分布式验证协议的设备自验证器:通过在所在设备上读取本地转发表,对子验证任务进行计算,并将计算结果与邻接设备依照分布式验证协议进行交换。

流程上可分成四步:

1.网络操作员使用声明式语言指定数据平面验证需求

2.Coral 将验证需求和拓扑结构作为输入,生成 DVNet,进而将数据平面验证问题转化成在 DVNet 上的计数问题

3.验证规划器将整个计数问题分解成设备子任务,并下发给各个设备

4.设备上的验证器各自执行子任务并与其他设备交换结果,最终得到完整的验证结果

实验评估

实验结果表明,针对数据平面的全量更新场景下快速、高效、准确的数据平面验证,验证fattree(k=48)时,该框架比APKeep快813.16倍;验证Airtel1时,80%情况下该框架比该数据集上最快的工具快了24.50倍。另外,该框架下的设备自验证器所需的CPU与内存开销极小,现有商用设备无需进行硬件升级,即可直接运行该框架。

个人观点

本篇文章并不是在集中式方式下继续挤压些许的性能增长,而是创新性地利用分布式设计实现网络设备自验证框架,从而大幅增强了数据平面验证工具的可伸缩性和提高其时间效率。其中的关键是利用 DPVNet 数据结构,将数据平面验证问题转换成有向无环网络图上的计数问题,从而可以很自然地分解成更小的任务并分配到各个设备上,再加上分布式验证协议来实现各个设备关于验证结果的通信,确保验证结果的正确性和验证过程的高效性。

Full-Stack SDN

Debnil Sur, Ben Pfaff, Leonid Ryzhyk, Mihai Budiu (VMware Research)

这是一篇来自VMware的文章。在这篇文章中,作者基于现阶段SDN中管理平面、控制平面和数据平面之间的不一致性和复杂性,提出了一个全栈SDN–Nerpa。在原本的SDN中,各个平面之间采用不同的编程方式导致了系统的可伸缩性和正确性变得越来越具有挑战性,而本文的Nerpa就是为了解决这个问题而生。

背景:

在SDN中,其结构一般分为三个平面:管理平面、控制平面和数据平面。管理平面用以管理网络策略,例如如何维护网络信息和与是否监控某些流量,并提供网络管理员用于管理网络的API。控制平面决定网络设备如何转发、转换或丢弃数据包。而最后的数据平面则实际承载用户流量。如下图所示,以灯泡为例。在灯泡的结构中,管理平面即为灯泡的开关,使用者通过管理平面来控制灯泡是否亮起以及亮度如何等信息;而灯泡内部的控制电路则相当于SDN中的控制平面,负责将灯泡开关的信息转换为灯泡真正的控制信息,如物理电压大小;SDN中最后的数据平面则相当于灯泡本身,负责承载具体的发光任务。

在一个SDN系统中,不同的平面有其不同的设计需求,现实中三个平面是分别采用不同的语言与结构进行编程与设计的,正如灯泡系统中不同的组件涉及不同的物理原理。这为SDN编程环境的正确性和可拓展性带来了极大挑战。在此范例中,添加跨越所有三个平面的新网络功能需要大量的跨团队协同设计、开发和测试工作。其复杂性源于跨平面所需的编排以及平面内功能之间的交互,导致了其极易产生漏洞,影响系统的正确性,并导致其难以拓展。为了处理这个问题,本文提出了一个全栈SDN,Nerpa。

系统实现:

在Nerpa中,作者设想了一个统一的环境来对整个网络进行编程,这为SDN提供正确性和可扩展性保证。该环境分为三个部分,每个平面占一个部分,如下图所示:

1.一个由关系型数据库实现的管理平面。系统管理员通过填充和修改数据库实例的内容来配置管理平面。在本文的实现中,使用OVSDB进行实现。

  1. 一个由可编程交换机实现的数据平面。负责状态同步的Nerpa控制平面将来自管理平面的数据转换为可编程数据平面表中的条目并进行安装。在本文的实现中,使用P4进行实现。

  2. 一个自动生成的控制平面。管理平面是使用关系型数据库构造的,因此在设计完成后会向控制平面交付模式作为控制平面的输入;而数据平面是使用P4构造的,因此在设计完成后会向控制平面交付转发表之间的依赖关系作为控制平面的输出。在获得了控制平面的输入与输出之后,Nerpa会自动推导生成出符合需求的控制平面。在本文的实现中,使用DDlog进行实现。

工程师在使用Nerpa进行SDN的系统设计时,只需要设计并实现管理平面与数据平面的部分,随后,Nerpa会自行生成系统中的控制平面。这个过程并不只在系统完整实现时生效,它同时也支持增量更新。新的管理平面策略与新的数据平面转发逻辑只会对控制平面的生成器形成新的输入与输出,生成器会据此对新输入与输出定向生成符合要求的控制平面的增量更新,并不会覆写整个控制平面,提高了效率。

个人观点

在笔者看来,Nerpa本质上是限定了管理平面和数据平面的实现方式,并按照这种特定的实现方式双向地向内生成了SDN中的控制平面。这种方式下,不仅工程师可以少去关于控制平面的大量的编程与设计工作,还可以避免因各个平面之间接口有错导致的系统漏洞,属于是一个一石二鸟的设计。

It Takes Two to Tango: Cooperative Edge-to-Edge Routing

Henry Birge-Lee, Maria Apostolaki, Jennifer Rexford (Princeton University)

这篇文章来自普林斯顿大学的研究者。本文提出了一种利用公共网络来达成现代网络服务严格的性能要求的方法。该方法使用相对较为低廉的方式达成了严格的性能要求,使得一些小型的公司也可以不借助专用网络与数据中心来为用户提供更好的服务。

背景:

在对更低延迟的不懈追求中,云提供商将服务器部署在离客户更近的地方,而企业则采用具有性能保证的付费网络即服务 (NaaS) 产品。不幸的是,这些趋势促进了更大的行业整合,使大公司和服务良好的地区受益,同时挤压了较小的云提供商和企业的生存空间。为了解决这个问题,本文提出了一种利用BGP公共网络来达成现代网络服务严格的性能要求的方法。现有的公共网络无法满足此项需求,主要原因有:1)当有多条路径存在的时候,现有的网络通过使用多种不同种类的协议来测量路径性能,这通常是单方面发起的测试,在测试性能的时候会有各种原因导致性能不准确;2)由于不能准确的测试多条路径的性能,因此系统对于最优网络路径的选择也无从谈起;3)就算已有现有系统可以完成上述两项目标,其也必须有系统内核参与,对于网络而言,这并不是一个好的处理方案。在这样的基础上,本文提出了Tango,通过云和用户节点的协同工作来同时就进行路径测试,并通过将功能部署在数据面上来绕开了对系统内核的调用,实现了利用公共网络来达成现代网络服务严格的性能要求的目标。

系统实现:

Tango在固有系统的基础上将用户端的网络入口和云服务器段的网络入口替换成了可编程交换机。对于Tango而言,他有三个主要的组件:1)一个BGP域间控制平面,用于建立Tango交换机之间的不同转发路径;2)一个在可编程交换机上实现的数据平面,它将测量数据包附加在正常数据包上,并通过适当的域间路径路由数据包;3)一个路由决策器,决定如何将数据包路由到其他的Tango交换机上。

本质上,这三个组件都是可以实现在可编程交换机上的。假设此时ASX和ASY之间有多条路由,如上图所示。在Tango中,其为这多条路径宣告了不同的IP前缀,并将对应的数据包从这多条路径分别转发,避免了在BGP协议中对于单个IP前缀只会有一个转发决策的问题。Tango在进行路径测试时,会在测试数据包上附加其自身的测试数据,并在ASX发出并由ASY接收。当ASY接收到多个不同的IP前缀的数据包时,其可以依据附加信息辨明数据包来源于哪条路径,并以此计算出每条路径对应的精准开销,从而为高效的路由决策提供了前提条件。在Tango中,上述工作皆由可编程交换机完成,避开了对系统内核的调度,使得其成为一个较为高效的处理方案。

个人观点

本篇工作使用两台可编程交换机分别作为系统两端的网络入口,并使用公共网络进行数据转发操作。本篇工作使用相对较为低廉的方式达成了严格的性能要求,使得一些小型的公司也可以不借助专用网络与数据中心来为用户提供更好的服务。该工作的确是提供了一个相对便宜的解决方案,且不会对现有网络造成影响,这是本文的优点。但是为了使用这个系统,仍需要在用户端部署相应的可编程网络设备,这依旧是一个相对小、但不能忽视的开销。

版权声明和个人见解说明

本文中所有的图片截取自论文正文,版权属于作者与ACM。

对每篇论文的“个人观点”仅仅是一人之见,希望能抛砖引玉,请大家多多发表意见。