使用带内元数据的网络路径通过验证的制作方法

文档序号:13426495阅读:240来源:国知局
使用带内元数据的网络路径通过验证的制作方法

本公开涉及验证分组已经通过了网络中的路径。



背景技术:

服务链定义了一组服务或服务功能(例如,防火墙、深度分组检测、层2转发服务、层3转发服务等),以及它们在通过网络被转发时应用于选择性的分组的顺序(服务1->服务2)。这也被称为服务功能链(sfc),并且已经被诸如政府机关、组织、公司之类的机构广泛部署。这类机构的安全部门可能需要根据机构的安全策略来验证某一应用所处理的分组。例如,若分组流应该通过一系列的服务功能,则需要验证该流的所有分组确实通过了机构的策略所指定的服务链。在流的分组未被正确地处理的情况下,诸如域边缘设备之类的网络设备将被要求标识策略违反,并且采取与机构的策略相对应的相应动作(例如,丢弃或重定向分组、发送警报等)。

附图说明

图1是示出根据示例实施例的在其中可以采用所呈现的通过验证技术的路径验证的网络的示例的图示。

图2是根据示例实施例的作为本文呈现的通过验证技术的路径验证的部分在网络节点处执行的操作的高层流程图。

图3是描绘根据示例实施例的作为本文呈现的通过验证技术的路径验证的部分由控制器执行的操作的流程图。

图4是描绘根据示例实施例的作为本文呈现的通过验证技术的路径验证的部分由出口节点执行的操作的流程图。

图5是描绘根据一个示例实施例的在网络节点处执行的用于使用加密技术来生成验证信息的操作的流程图。

图6是描绘根据另一示例实施例的在网络节点处执行的用于使用秘密共享技术来生成验证信息的操作的流程图。

图7是示出根据示例实施例的流量流的示例以及通过验证技术的路径验证在服务链中的使用的图示。

图8示出了示出根据示例实施例的作为图7所描绘的过程的部分在服务功能处执行的操作的流程图。

图9示出了示出根据示例实施例的出口节点在验证通过服务链的所有服务功能的通过验证中的操作的流程图。

图10示出了根据示例实施例的控制器在配置服务链的每个服务功能以参与服务链的路径通过验证中的流程图。

图11是示出根据本公开的实施例的示例分组头部的图示。

图12是示出根据本公开的实施例的另一示例分组头部的图示。

图13a是示出根据本公开的实施例的示例分组头部的图示。

图13b是示出根据本公开的实施例的图11a的分组头部中的示例元数据字段的图示。

图13c是示出根据本公开的实施例的图11a的分组头部中的另一示例元数据字段的图示。

图14是示出根据本公开的实施例的又一示例分组头部的图示。

图15是根据示例实施例的控制器的框图。

图16是根据示例实施例的网络节点的框图。

图17是根据示例实施例的出口节点的框图。

具体实施方式

概述

在一个实施例中,提供了一种用于验证网络流量通过了网络中的多个网络节点的通过验证的方法。该方法可涉及获取关于网络中的网络节点处的分组的信息。信息可包括分组的带内元数据。从分组的带内元数据读取验证信息。根据从分组读取的验证信息并且基于与网络节点相关联的配置信息来生成经更新的验证信息。经更新的验证信息被写回到分组中的带内元数据。分组在网络中从网络节点被转发。

示例实施例

在网络环境中存在各种这样的情况,其中,能够验证某些网络流量通过了网络中的特定路径是重要的。这在本文被称为通过验证。可能存在与网络中的特定路径相关联的多个网络节点。这种情况的一个示例是服务功能链,但存在许多其它示例。目前,通常以间接方式来传递分组穿过特定服务链的验证,这是因为服务功能和网络转发在不同的信任域中被执行。在这些信任域之间定义物理切换点(即物理接口)。

然而,服务链的最新发展(例如,网络功能虚拟化(nfv)和现代服务链概念(使用诸如定位器/id分离协议(lisp)、网络服务头部(nsh)之类的虚拟覆盖)等)模糊了不同的信任域之间的界线,这是因为切换点不再是被清楚地定义的物理接口,而是虚拟接口。由此,存在这样的一些情况,其中,不准许同一设备中的不同信任层的混合,因此,不能以其当前形式来使用nfv。

网络路径验证

根据一个实施例,提供了在分组经过网络节点时,基于分组的带内元数据来验证/证明分组已经经过了网络中的特定路径的总体系统和解决方案。存在该技术的许多应用,包括但不限于:验证分组穿过了服务功能链中的某些服务功能、验证分组经过了流量工程(te)路线等。

首先参考图1,示出了包括多个网络节点的示例系统100。控制器102被连接到网络节点。控制器102可以是例如软件定义联网(sdn)控制器,并且可以经由参考标号112处所示的控制平面来与多个网络节点进行通信。多个网络节点包括入口节点120、网络节点130、132、134、以及出口节点140。该简化网络拓扑仅是示例,并且可能存在更多(或更少)的网络节点。期望验证分组已经经过了通过网络145中的网络节点130、132、以及134的路径。在网络145中可能有许多其它网络节点,分组通过这些其它网络节点可以在入口节点120和出口节点140之间行进,但为了简单起见,图1中未示出这些其它网络节点。

现在转到图2并且继续参考图1,图2示出了通过验证方法200的高层流程图,通过该通过验证方法200,验证分组通过了网络中的多个网络节点的路径。该方法由作为将验证流量已经经过的网络中的特定路径的部分的每个网络节点(例如,图4所示的网络节点130、132、以及134中的每一个)执行。在210处,在网络节点处接收分组,或在现代管道(pipeline)转发的情况下,在分组在网络节点处被完全接收之前获取关于分组的信息,其中,该信息包括分组的带内元数据。换言之,网络节点不必具有整个分组以便执行后续验证相关步骤。因此,无论是对于“存储和转发”网络节点操作还是现代管道转发,可以说在210处,获取关于网络节点处的分组的信息,该信息包括分组的带内元数据。在220处,网络节点从分组的带内元数据读取验证信息。在230处,网络节点根据从分组读取的验证信息并且基于与网络节点相关联的配置信息来生成经更新的验证信息。在240处,网络节点将经更新的验证信息写回分组中的带内元数据。在250处,网络节点将网络中的分组例如转发到要被验证的路径的多个网络节点中的下一网络节点。

同样,操作210-240由作为将验证流量经过的网络中的路径的部分的每个网络节点执行。仍参考图1,出口节点140可用作验证者节点。出口节点140接收多个网络节点(例如,网络节点130、132、以及134)的配置信息。在分组已经通过了网络节点134之后,它最终到达出口节点140。出口节点140接收分组,并且从分组读取被存储为带内元数据的经更新的验证信息。出口节点140然后基于从分组读取的经更新的验证信息和多个网络节点的配置信息来验证网络中的分组所采取的路径。

下面给出了许多另外的和更具体的实施例,其中,针对验证信息和配置信息解释了示例。在一个示例中,当分组通过多个节点进行时,累积地更新验证信息。带内元数据可包括唯一地标识分组的第一数字和由多个网络节点累积生成的第二数字。可以通过使用加密密钥来加密第三数字以生成加密结果,并且将加密结果与已经存储在带内元数据中的累积加密结果相组合来生成经更新的验证信息。

此外,在一个示例中,每个网络节点的配置信息包括秘密。可以根据shamir秘密共享方案来创建和分发每个网络节点的秘密,并且验证者节点被配置为使用带内元数据来根据shamir秘密共享方案验证分组通过了每个相应的网络节点。在另一示例中,秘密是唯一的加密密钥并且带内元分组括累积生成的加密结果。出口(验证者)节点140被配置为使用带内元数据来验证分组通过了网络中的路径。

图1所示的控制器102可以是软件定义联网(sdn)控制器,其被配置为生成多个网络节点中的每一个的配置信息,并且将配置信息发送到多个网络节点中的相应的网络节点以及出口(验证者)节点140。图3示出了由控制器102执行的方法260的流程图。在262处,控制器生成要被验证(即期望通过验证)的网络中的路径的信息。该信息可以标识流量必须经过的网络节点以验证流量行进了网络中的特定路径。在264处,控制器生成路径中的每个网络节点的配置信息,并且将配置信息发送到每个相应的网络节点。这使得每个网络节点能够使用配置信息来执行验证操作,以根据从接收到的分组的带内元数据读取的验证信息来生成经更新的验证信息,并且将经更新的验证信息写回到分组。下面描述了配置信息的示例。在266处,控制器向出口(验证者)节点发送路径的所有网络节点的配置信息,以使得出口节点能够执行路径验证,如下文更详细描述的。

图3示出了由出口节点140执行的方法270的流程图。在272处,出口节点存储要验证的路径中的每个网络节点的配置信息(从控制器102接收到的)。在274处,出口节点接收离开路径的最后一个网络节点的分组。在276处,出口节点从分组的带内元数据读取验证信息。在278处,出口节点基于从分组读取的验证信息和网络节点的配置(从控制器102接收到的)来验证分组已经穿过路径的每个网络节点。换言之,出口节点可以与其它已知信息一起评估分组的元数据,以验证分组是否已经通过了期望的网络路径。

用于验证流量经过网络中的路径的通过验证的示例是多样的。下面进一步详细描述的一个示例涉及验证分组经过了服务功能链的多个服务功能的路径。另一示例是验证分组经过了网络中的流量工程(te)路线。

如下面进一步详细描述的,由网络节点读取和写入的分组的带内元数据可以是分组的扩展头部。入口节点120还可以在分组被引导至网络中之前生成或设置分组的带内元数据中的特定值存储,其中,分组可能最终经过网络中的特定路径的多个网络节点。

总之,根据一个实施例,提供了一种方法,包括:获取关于网络中的网络节点处的分组的信息,该信息包括分组的带内元数据;从分组的带内元数据读取验证信息;根据从分组读取的验证信息并且基于与网络节点相关联的配置信息来生成经更新的验证信息;将经更新的验证信息写回到分组中的带内元数据;以及来自网络节点的分组在网络中被转发。在网络中的多个网络节点的每一个处执行获取、读取、生成、写入、以及转发。该方法还可包括基于从分组读取的经更新的验证信息和多个网络节点中的每一个的配置信息来验证网络中的分组的路径通过验证。

类似地,提供了一种系统,包括:网络中的多个网络节点,每个网络节点被配置为:获得关于分组的信息,该信息包括分组的带内元数据;从分组的带内元数据读取验证信息;根据从分组读取的验证信息并且基于与网络节点相关联的配置信息来生成经更新的验证信息;将经更新的验证信息写回到分组的带内元数据;以及将分组转发到网络中。

用于网络路径通过验证的累积方案

加密方案

在一些实施例中,每个网络节点可具有加密密钥,并且可被配置为使用该加密密钥来生成特定分组的唯一值。例如,每个网络节点可以使用其加密密钥来对标识值进行操作,例如但不限于,以生成标识值的加密或散列。所生成的加密或散列以及标识值可变成服务验证信息。示例加密操作可包括但不限于:块密码加密(例如,高级加密标准(aes))、密钥散列消息认证码(hmac)等。在一些实施例中,由于加密操作可能是计算密集型的,因此网络节点处的硬件可具有对加密操作的硬件支持。

在依赖于加密操作的一些实施例中,可以累积地生成该条验证信息。也就是说,路径中的第一节点可以生成初始版本的该条验证信息,并且路径中的每个后续节点可以对现有信息进行操作,以在该条信息上留下它们的通过验证。

在一个实施例中,例如,可以使用类似于计数器(ctr)模式中的aes的异或(xor)运算的交换属性。在该实施例中,每个服务可具有它们自己的加密密钥k1、k2、k3、...、kn,并且出口节点(例如,验证者)可以知道所有这些加密密钥。例如,控制器(例如,图1所示的控制器102)可以生成加密密钥并且向每个网络节点分配一个加密密钥,并且出口节点可以通过安全信道从控制器102获得所有加密密钥。每个分组可被插入包括rnd字段、seq字段、以及verify字段的元数据字段。rnd字段可包含在入口节点处生成的随机数。seq字段可包含在入口节点处生成的数字和/或时间戳。seq字段可用于防止重放攻击。verify字段可以在入节点处被初始化为0。每次分组经过入口节点时,可以使用入口节点的加密密钥k1来对序列号进行加密以获得由enc(seq,k1)表示的值,然后verify字段可以由与rnd进行xor的verify=enc(seq,kl)来更新(如aes-ctr模式)。

当分组经过第二网络节点时,可以使用第二网络节点的加密密钥k2来对序列号进行加密以获得由enc(seq,k2)表示的值,然后verify字段可以通过将现有verify字段与enc(seq,k2)进行xor(例如,verify=verifyxorenc(seq,k2))来进行修改。可以通过verify字段上的这种累积xor运算来在每个网络节点上执行该过程直到路径中的最后一个网络节点(例如,第n个节点,n是大于1的整数),该最后一个网络节点具有使用加密密钥kn加密(即verify=verifyxorenc(seq,kn))的序列号。由于出口节点被配置有所有加密密钥的信息,因此出口节点可以通过执行已经由每个网络节点分别执行的相同的加密操作来执行路径认证/验证,并且可以利用verify字段上的所有加密结果来应用累积xor,即verifyxorenc(seq,kl)xorenc(seq,k2)…xorenc(seq,kn)。出口节点处的路径认证/验证可能仅在所有网络节点给出它们在seq字段中的序列号的相应加密时才会产生rnd。若验证失败,则分组可能被标记(并且被重定向或丢弃)。

尽管诸如加密或散列之类的加密操作可能是计算密集型的,但它们不依赖于顺序,因为xor运算可以以任何顺序来应用并且仍生成相同的输出。此外,可以防止重放攻击,因为seq字段值可以至少部分地基于时间戳,使得可以容易地检测到重放攻击。此外,可以使用标准加密操作,例如但不限于,aes。此外,每分组有效载荷开销很小。例如,rnd字段和seq字段一共可以是64位并且verify字段可以是128位以符合aes标准。还可以使用rnd、seq、以及verify字段的其它位长度,例如,24位、32位、56位、256位,但总体开销仍然很小。在一些实施例中,基于xor的验证可被称为嵌套加密。

图5示出了总结使用了上述技术的用于网络路径通过验证的加密方案280的高层流程图。图5所示的操作由多个网络节点中的每一个来执行。在282处,(网络中的路径的多个网络节点中的)网络节点获取关于分组的信息,信息(被完全接收地存储或被管道转发处理)。信息包括带内元数据,其包括用于至少第一值和第二值的一个或多个字段,该第一值基于在网络中的路径的多个网络节点中的初始网络节点处生成的数字和/或时间戳,并且该第二值在分组经过网络中的路径的多个网络节点时被累积地更新。在283处,从分组的带内元数据读取第一值和第二值。在284处,使用对于每个相应的网络节点来说是唯一的加密密钥来基于第一值生成加密结果。在285处,基于从分组读取的第二值以及加密结果生成经更新的第二值。在286处,将经更新的第二值写入分组的带内元数据。在287处,分组在网络中被转发。

因此,以一种形式,提供了一种系统,包括:与网络中的路径相关联的多个网络节点,每个网络节点被配置为:获取关于分组的信息,该信息包括带内元数据,其包括用于至少第一值和第二值的一个或多个字段,该第一值基于在网络中的路径的多个网络节点中的初始网络节点处生成的数字和/或时间戳,并且该第二值在分组经过网络中的路径的多个网络节点时被累积地更新;从分组的带内元数据读取第一值和第二值;使用对于每个相应的网络节点来说是唯一的加密密钥来基于第一值生成加密结果;基于从分组读取的第二值以及加密结果生成经更新的第二值;将经更新的第二值写入分组的带内元数据;以及在网络中转发分组。

如上所述,初始网络节点被配置为执行若干操作,包括:使用初始网络节点的加密密钥并且基于数字和/或时间戳来生成初始加密结果;基于初始加密结果生成初始第二值;将初始第二个值写入分组;以及在网络中转发分组。

出口节点被配置为接收和存储多个网络节点的加密密钥。当出口节点接收到分组时(在假定分组已经通过了多个网络节点中的每一个之后),出口节点从分组的带内元数据读取第一值和第二值。出口节点使用多个网络节点中的每一个的加密密钥来计算多个网络节点中的每一个的加密结果。出口节点基于针对多个网络节点中的每一个所计算的加密结果来计算累积验证值。出口节点然后将从分组读取的第二值与累积验证值进行比较,以使得当从分组读取的第二值与累积验证值相匹配时,分组被确定为已经经过了路径的多个网络节点,否则,分组被确定为未经过路径的多个网络节点。

每个网络节点可被配置为使用从分组读取的第二值和加密结果的异或运算来生成经更新的第二值。类似地,出口节点可被配置为使用针对多个网络节点中的每一个所计算的加密结果的异或运算来计算累积验证值。

共享秘密方案

在另一实施例中,可以使用秘密共享方法以使得每个网络节点可以具有一段秘密,并且每个网络节点使用其该段加密秘密来留下签名作分组中的验证信息的部分。例如,可以使用shamir秘密共享方案(ssss)。在该实施例中,单个(完整)秘密可以与特定多个或一组网络节点相关联,该特定多个或一组网络节点与针对其将验证流量已经通过的路径相关联。该单个秘密的不同份额或片段可以从sdn控制器被分发给多个网络节点。每个网络节点可以使用它们各自的份额来生成从分组特定信息导出的验证信息的片段/部分,或更新元数据中的累积值。具有对完整秘密的访问的出口(验证者)节点可以使用完整秘密来验证接收到的元数据的正确性。

在实现秘密共享方法的一个实施例中,可以使用相同次数的两个多项式poly-1和poly-2。poly-1和poly-2的系数可以是在零(包括零)和正质数p(不包括p)之间随机选择的整数,除了最高项的系数为1到p-1。第一多项式poly-1可以是秘密,并且系数对于所有分组是常数。第二多项式poly-2可以是公开的,并且其系数可以针对不同的分组来不同地选择。也就是说,poly-1是秘密的并且不变的,并且poly-2是公开的并且每分组唯一的。

多项式曲线的点可以由一对数字来定义:索引和多项式针对索引生成的值。poly-1的点可被分发在服务中并且保密。针对每个分组,可以随机选择poly-2。poly-2的相应点可以由每个网络节点计算并且被添加到其相应的poly-1的加密秘密。每个网络节点处的求和结果可被添加到元数据中的分组。出口(验证者)节点可以尝试根据所有网络节点生成的点来构建第三多项式poly-3,并且确定是否poly-3=poly-1+poly-2。除非存在足够数目的poly-3的点,否则无法构建。因此,可以使用该方案来确保/验证分组行进通过了根据策略的网络节点的期望路径。若分组未行进通过网络节点的期望路径,则将不会生成足够的poly-3的点以便验证者节点来构建曲线。因此,可以检测分组是否跳过了路径中的一个或多个网络节点。

安全保证基于需要至少两个点来定义直线、需要至少3个点来定义抛物线、需要至少4个点来定义三次曲线等的事实。也就是说,需要k+1个点来定义次数为k的多项式,其中,k是正整数。攻击者无法从(poly-1+poly-2)的点学习秘密,例如,poly-1的点,因为运算以模p完成。这已经例如在shamir秘密共享方案证明中被数学地证明。

在一个实施例中,待验证的路径在其中可能具有k个网络节点,并且可以选择k+1次的多项式。每个网络节点可以选择随机数rnd-1。例如,poly-1可被表示为poly-1=rnd-1+ax+bx2+cx3…+nxk+1,其中,rnd-1、a、b、c、...、n为系数。使用shamir秘密共享方案(ssss)算法,可以生成阈值k+1个份额。可以针对每个网络节点生成一个(份额-索引,份额)对,并且可以针对出口节点(例如,验证者网络节点)生成单独的(份额-索引,份额)对。这些(份额-索引,份额)对可以是poly-1的点并且保密,以使得每个网络节点仅知道其自己的(份额-索引,份额)对。除了其自己的(份额-索引,份额)对之外,出口节点可被提供(经由控制器102)整个秘密(例如,poly-1)以便执行网络路径验证。

当新的分组需要开始其通过网络节点的路径的旅程时,可以创建新的随机数(rnd-2)并且将其插入到源(例如,入口节点)的元数据中。因此,rnd-2值可能根据分组而变化。假设poly-2可被表示为poly-2=rnd-2+a1x+b1x2+c1x3…+n1xk+1。网络节点还可被配置有poly-2的a1、b1、c1...n1系数。每次分组到达网络节点时,网络节点可以使用存储在分组的元数据中的rnd-2、其份额-索引、以及所配设的poly-2的系数来计算其相应的rnd-2的份额。每个网络节点将其各自的rnd-1和rnd-2的份额相加以获得随机数rnd-3的份额,其可以是多项式poly-3的零次项的系数。该过程可以是简单地将poly-1上的点添加到poly-2上的另一点以获得poly-3上的点。在每个服务处获得的rnd-3的份额可被放入分组元数据,并且与分组一起被传送到路径中的下一网络节点。

在穿过路径的网络节点之后,分组到达出口节点,并且出口节点因此可以获得路径的所有网络节点从元数据生成的rnd-3的所有份额。注意到,k个服务贡献于poly-3的k个点,这不是足以构建poly-3的点数。因此,出口节点还可以使用其poly-2的(份额-索引,份额)对来生成poly-2的另一个点,并且将该点与它自己poly-1的对应点(例如,它自己的(份额-索引,份额)相加。出口节点因此可以组合所有这些rnd-3的份额以确定rnd-3的值。同时,出口节点还知道rnd-1(例如,它知道poly-1的全部秘密)和rnd-2(例如,根据分组元数据),因此,出口节点可以根据所确定的rnd-3的值是否是实际期望的值(即rnd-3=rnd-2+rnd-1)来获得通过验证。

在一个实施例中,可以执行优化,其中,替代每个网络节点将其rnd-3的份额放入分组的元数据,每个网络节点利用包含在元数据中的rnd-3的累积份额值来对其rnd-3的份额应用ssss组合算法以生成经更新的累积份额值,并且仅将该累积份额值放入元数据。

使用秘密共享方法的一个示例流程可以以设置过程开始。在设置过程的开始处,可以选择质数p以使得所有后续操作可以以模p完成。然后,可以选择秘密,例如,可以例如由sdn控制器生成随机数“rnd-1”。只有出口节点可以知道该随机数。然后,可以使用shamir秘密共享方案来拆分秘密。沿着待验证的路径的所有网络节点可被配置有它们各自的秘密的唯一份额,其可被表示为(i,份额-i),其中,i是份额的索引。在一些实施例中,拉格朗日基多项式的零次项可被计算为对应于其索引的常数。该常数可被称为拉格朗日多项式常数(lpc)。在设置过程的最后步骤,可以选择poly-2的系数a1、b1、c1…n1,并且所有网络节点可被配置有该组系数,其中,对于每个分组,仅rnd-2是不同的并且稍后被分配给分组。在一个实施例中,为了优化每个分组的rnd-2的秘密拆分,可以在设置过程期间使用这些系数和索引来计算索引i处的rnd-2的多项式评估的部分,其可被称为份额2-i-过渡。

当分组进入网络路径(即分组通过入口节点)时,可以选择一个数字rnd-2。数字rnd-2可以是随机的但不必是随机的。例如,数字rnd-2可以是时间戳、序列号、分组中的一些字段的散列、或任意或所有这些项的组合。一旦选择了数字rnd-2,则它可被添加到分组的元数据字段以使得路径中的所有网络节点可以访问数字rnd-2。因此,数字rnd-2是根据分组的并且由所有服务共享。在实现累积份额值的实施例中,可以例如通过存储零(“0”)的初始累积份额值来初始化元数据中的字段。

当分组访问包括出口节点的每个网络节点时,可以针对相应的服务-i计算rnd-2的份额。也就是说,可以计算poly-2中的点。在实现优化份额2-i-过渡的实施例中,已经在设置过程中计算了该份额2-i-过渡,并且可以通过简单地将份额2-i-过渡添加到rnd-2来获得rnd-2的份额。rnd-2的份额可以在服务处添加相应的rnd-1的份额(份额-i)以获得新的rnd-3的组合份额。可以从元数据中取回累积份额值并且进行更新以使得累积=累积+rnd-3*lpc,其中,“累积”是累积份额值,rnd-3是相应的服务处的rnd-3的份额,以及lpc是相应的服务的拉格朗日基多项式的零次项。经更新的累积份额值可被放回到分组的元数据中以传送到路径中的下一网络节点。

若下一网络节点是出口节点,则经更新的累积份额值可以与rnd-1+rnd-2进行比较。当经更新的累积份额值与rnd-1+rnd-2相匹配时,这指示分组确实已经经过了路径中的所有网络节点并且可以在网络中被转发。然而,当经更新的累积份额值与rnd-1+rnd-2不匹配时,这指示分组尚未经过路径中的所有网络节点,并且分组可以被标记和相应地处理,例如,丢弃。

下面描述了用于验证具有两个网络节点(网络节点-1和网络节点-2)的路径的示例流程。在该示例中,数字53被选作质数p并且数字10被选作秘密rnd-1。多项式poly-1可以是10+3x+3x2,并且以(索引,份额索引)对格式的份额可被生成为(1,16)、(2,28)、(3,46)、(4,17)、(5,47)等。每个网络节点和出口节点可被分配相应的索引和份额值,例如,网络节点1被分配(2,28)、网络节点2被分配(4,17),并且出口节点被分配(5,47)。可以获得如下拉格朗日基多项式:

根据拉格朗日基多项式,网络节点-1、网络节点-2、以及出口节点的拉格朗日基多项式常数(lpc)分别是10/3、-5、以及8/3,因此:

lpc(网络节点-1)=(10/3)mod53=21

lpc(网络节点-2)=(-5)mod53=48

lpc(出口节点)=(8/3)mod53=38

假设第二多项式poly-2是rnd-2+7x+10x2并且数字45可被选作rnd-2。该分组的poly-2可以是45+7x+10x2,并且以(索引,份额值)对格式的份额可以是(1,9)、(2,46)、(3,50)、(4,21)、(5,12)等。当分组进入路径时,入口节点可以将rnd-2=45和累积份额值cum=0存储为分组的元数据,并且将分组与元数据一起转发到第一网络节点,网络节点-1。在网络节点-1处,可以获得相应的poly-2的份额为46,因为服务-2的份额索引是2。可以根据cum=cum+(((份额(rnd-1)+份额(rnd-2))*lpc)modp来更新累积份额值cum,其可以是cum=0+((28+46)*21)mod53=17。在网络节点-2处,可以获得相应的poly-2的份额为21,因为网络节点-2的份额索引是4。可以根据cum=cum+(((份额(rnd-1)+份额(rnd-2))*lpc)modp来更新累积份额值cum,其可以是cum=17+((17+21)*48)mod53=17+22=39。在出口节点处,可以获得相应的poly-2的份额为12,因为出口节点的份额索引是5。可以根据cum=cum+(((份额(rnd-1)+份额(rnd-2))*lpc)modp来更新累积份额值cum,其可以是cum=39+((47+12)*38)mod53=39+16=55mod53=2。出口节点还可以计算(rnd-1+rnd-2)mod53,其是(10+45)mod53=2。因此,由出口节点计算的累积份额值与通过将rnd-1和rnd-2相加获得的rnd-3相匹配,从而,出口节点可以成功验证分组的确经过了网络节点-1和网络节点-2。

可以使用根据本公开的实施例来防止可能播放的路由的错误配置或欺骗,其中,可以使得流量绕过一些网络节点,例如,防火墙、负载平衡器、内容优化器等。另外的方面涉及验证某个应用的分组经过了网络中的特定路径。在不直接验证分组经过了某些网络节点的情况下,传统技术依赖于不断地验证网络的物理布局以及所有相关联的设备配置。相反,只要poly-1的点被保密,则在实施例中,尝试绕过一些网络节点的攻击者将错过把poly-1上的相应点添加到poly-2上的对应点,因而出口节点不能构建poly-3以交叉验证。此外,在分组进入和离开时观察cum的值的攻击者不能构建poly-1上的点。无法完成之前的cum和之后的cum的差分分析,因为操作以模质数p完成并且可能存在点的许多可能性。此外,跨分组的差分分析的威胁可能由于poly-2的随机数rnd-2而减轻。

应注意的是,在实践中,多项式的(一个或多个)次数可能大于网络节点的最大数目。此外,rnd-2值可以是epoch+随机数(位的级联)。在一些实施例中,可以避免纯序列号,因为它可以是可预测的。此外,质数可能大于rnd-2但不是非常大。此外,可以在模运算中完成所有操作,因此除法可以是反模数而不是常规除法。此外,实施例可能涉及poly-1和poly-2不相同。

现在参考图6,示出了描绘根据上述秘密共享技术的在多个网络节点的每一个处执行的方法290的操作的高层流程图。秘密与由多个网络节点定义的路径相关联。在292处,获取关于网络节点处的分组的信息,该信息在带内元数据中包括分组特定信息。在293处,从带内元数据读取分组特定信息。在294处,使用秘密的唯一份额并且基于分组特定信息来计算验证信息的部分。在295处,将验证信息的部分写入分组的带内元数据。在296处,分组在网络中被转发。

当分组到达具有访问(例如,已经被配置有)秘密的出口节点时,出口节点从分组的带内元数据读取由多个网络节点写入的验证信息的部分。出口节点然后使用秘密和从分组的带内元数据读取的验证信息的部分来验证分组经过(即通过)了路径的多个网络节点。

因此,提供了一种系统,包括:与网络中的路径相关联的多个网络节点以及与路径相关联的秘密,每个网络节点被配置为:获取关于分组的信息,该信息在分组的带内元数据中包括分组特定信息;从带内元数据读取分组特定信息;使用秘密的唯一份额并且基于分组特定信息来计算验证信息的部分;将验证信息的部分写入分组的带内元数据;以及在网络中转发分组。

如上所述,可以根据秘密共享方案来分发秘密的唯一份额。此外,每个秘密的唯一份额可包括第一多项式的一个或多个点。在这种情况下,多个网络节点中的每个网络节点被配置为通过执行下列操作来计算验证信息的部分:基于分组特定信息来计算第二多项式的点;将第二多项式的点与第一多项式的点相加以产生求和结果;以及将求和结果写入分组的带内元数据。出口节点被配置为通过尝试根据由多个网络节点生成的求和结果构建第三多项式来验证分组经过了多个网络节点,以使得若可以生成足够数目的第三多项式的点,则分组被确定为已经经过了多个网络节点,否则,分组被确定为未经过多个网络节点。

此外,对于k个多个网络节点,第一多项式可具有次数k+1并且是rnd-1+ax+bx2+cx3…+nxk+1的形式,其中,rnd-1是随机数并且a、b、c...n是第一多项式的其它系数,并且秘密的唯一份额可包括对应于第一多项式的点的(份额-索引,份额)对,并且验证者节点被提供有唯一(份额-索引,份额)对以及整个第一多项式。每个网络节点可被提供有第二多项式rnd-2+a1x+b1x2+c1x3…+n1xk+1的系数a1、b1、c1...n1,并且其中,每个网络节点被配置为通过执行下列操作来计算验证信息的部分:基于从分组的带内元数据读取的rnd-2和第二多项式的系数来计算rnd-2的份额;并且将rnd-2的份额和rnd-1相加以产生第三多项式的rnd-3的份额。每个网络节点根据从分组的带内元数据读取的rnd-3的累积份额值生成经更新的rnd-3的累积份额值,并且将经更新的rnd-3的累积份额值写入分组的带内元数据。出口节点可被配置为通过执行下列操作来进行验证:从分组读取由多个网络节点生成的rnd-3的所有份额和rnd-2的所有份额;组合由多个网络节点生成的rnd-3的所有份额以产生rnd-3的求和值;计算第二多项式的rnd-2的份额,并且将该份额与由多个网络节点生成的rnd-2的所有份额相加以产生rnd-2的求和值;确定rnd-3的求和值是否等于rnd-2的求和值加上在出口节点处已知的rnd-1的值。

秘密大小

在上述方案中使用的数据的大小取决于特定协议实施例或部署可以承载的元数据的数量。例如,可能存在其中上述任一方案的协议只能承载32位的情况。作为一个示例,利用aes,加密密钥可以是128位,并且利用ssss,秘密(rnd-1)和rnd-2可以是64位。上述累积值也可以是64位。对于上述加密方案,aes的输出可以是128位,因此若需要,累积值可被截断为64位。验证还可能涉及重新加密rnd-2值并且一致地截断以避免故障。

秘密更新/刷新

秘密回收对于方案的总体安全是重要的。它有助于减轻重放攻击。若秘密未被回收,则对手/攻击者可以将来自较旧分组的累积值重新用于较新分组,并且绕过选择的某些网络节点。

此外,回收基于rnd-2大小。若使用了加密方法,则回收不依赖于加密密钥大小,但回收密钥仍是有用的,因为可能用尽rnd-2值中的熵。

例如,64位rnd-2值将支持264个分组,这对应于大约2x1030千兆字节。在lgbps线上,这将需要24天。

在其中针对rnd-2可以使用多于32位的情况下,网络节点可被预配置有多个rnd-1。利用每个网络节点上额外的存储空间需求并且索引这些rnd-1请求中的每一个,可以进一步推送回收请求。可以使用rnd-2的确定性函数以便确定对rnd-1的索引。例如,rnd-2的最后一个字节可被转换为数字并且用于确定针对给定分组使用哪个rnd-1份额。

秘密创建和分发

控制器(例如,服务器)持续地创建秘密并且持续地分发秘密。这将是在如图3所示的步骤264处例如和下面描述的图10的步骤434处执行的操作的部分。例如,当系统用尽随机值(针对第一多项式)时,必须创建新的第一多项式并且必须分发份额。类似地,在加密方案中,加密密钥可能变得耗尽。各种分发模式是可能的。在第一模式(还称为“推模式”)中,控制器以规律(例如,周期性)间隔分发密钥。在第二模式(还称为“拉模式”)中,控制器响应于来自网络节点的请求来分发密钥。例如,封装节点确定它已经耗尽了随机数,并且向控制器发送更新/刷新的请求。混合模式也是可能的。例如,封装节点“拉”新的秘密份额,并且这触发控制器向路径中的所有其它节点“推”秘密份额。

因此,根据实施例,提供了一种方法,包括:生成与通过网络中的多个网络节点的路径相关联的秘密,针对该路径将验证流量已经通过;以及将秘密分发给多个网络节点中的相应的网络节点,以使得每个网络节点能够在分组行进通过网络中的路径时基于由分组承载的带内元数据来生成分组的验证信息。以一种形式,该生成可涉及针对多个网络节点中的每一个生成新的秘密,并且该分发可涉及响应于来自多个网络节点中的一个网络节点的请求来将该新的秘密分发给多个网络节点中的相应的网络节点。以另一形式,该生成可涉及针对多个网络节点中的每一个定期地生成新的秘密,并且该分发可涉及将该新的秘密定期地分发给多个网络节点中的相应的网络节点。以一种形式,秘密可基于与多项式相关联的随机值,当多项式的随机值耗尽时,该生成可涉及生成新的多项式,并且该分发可涉及将与新的多项式相关联的随机值的唯一份额分发给多个网络节点中的相应的网络节点。以另一形式,响应于从多个网络节点中的一个网络节点接收到的请求来针对多个网络节点中的每一个生成新的秘密,并且该分发涉及将该新的秘密的唯一份额分发给多个网络节点中的相应的网络节点。秘密可以是多个网络节点中的每一个的唯一加密密钥以累积地生成验证信息。在这种情况下,当唯一加密密钥耗尽时,新的唯一加密密钥用于多个网络节点。

通过验证:服务链验证-网络路径验证的一个示例

现在参考回图1。服务链(也称为服务功能链(sfc))包括多个服务功能,通过这些服务功能分组将被引导用于将被应用于该分组的各种功能。服务链可包括进入点节点(也称为头端节点、入口接口、或入口节点)、服务功能的有序列表及其物理网络位置(表示为[服务功能,服务位置]元组)。可以对通过服务位置的链被转发的分组执行服务功能或服务。服务位置还可被称为网络节点或服务节点。在一些实施例中,服务位置可以是如互联网工程任务组(ietf)请求注解(rfc)7665中定义的服务功能转发器(sff)。

服务链引用的各个服务功能可以根据冗余和水平服务缩放要求被部署在网络拓扑中的多个点。可以使用全球唯一服务链id来唯一地标识服务链和该服务链的一些列服务功能。网络节点(或服务节点)可以是诸如路由器、交换机、网关等之类的网络设备,并且网络节点可以是物理网络元件或虚拟网络元件。网络节点(或服务节点)可具有计算资源(例如,服务器刀片或其它计算设备),其被配置有适用的软件能力以对被引导至该网络节点的网络流量执行一个或多个服务。

服务链中的服务功能可包括任意类型的服务。服务的示例包括任意网络层中的服务,例如,层2交换、层3路由、以及层7防火墙、内容缓存、负载平衡器、或这些层上的其它服务。在一个实施例中,例如,可以使用服务功能链(sfc)验证来验证分组是否采用了它应该采用的路径,而不管沿服务链的服务的类型。

可以通过服务链转发分组。头端节点(或入口节点)可用作到服务链中的分组分类器接口(确定哪些流量流需要重新引导至服务链中以及哪些不用),其强加必要的服务头部(包含服务链id)和传输封装以将流量流引导至如在服务链结构中指定的适当的网络位置处的第一服务功能。

可以由如下服务链标识符(例如,服务链id)来标识服务链。

服务链idx=[入口节点],[服务功能1,服务位置22],[服务功能2,服务位置2],[服务功能3,服务位置57],[出口节点]。

服务链的结构强制在入口节点处被分类为属于服务链的流量在被发送出网络之前被转发到服务链中。

在一个实施例中,在云管理平台中的编排层,可以针对特定任务(例如,安全网络主机)定义服务策略。服务策略可能需要(除许多其它元素之外)特定l4-l7服务功能、服务度量、以及相关联的选择/附接标准(即租户、流量类别、流等)。这些服务和相关联的度量被发送到控制器102(图1)以供服务选择、图形创建和呈现。

网络中的活跃服务功能可以注册控制器102。注册可涉及控制器102接收多个网络节点中的所有活跃服务功能的通知,每个通知包括描述服务功能能力的信息。在服务功能注册之后,控制器102可以具有服务域内的所有可用服务功能及其位置(例如,网络位置、互联网协议/介质访问控制(ip/mac)地址、以及(若需要)拓扑布置(例如,[数据中心1,机架l]))的视图。此外,网络节点可以发布其服务功能能力,例如,[服务功能1是应用防火墙并且可以处理500个会话]、[服务功能2是ip防火墙并且可以处理200000个会话]等。控制器102维护服务的目录以及包括这些服务的相关联的服务功能(服务可包括单个或多个服务功能),这些相关联的服务功能可以根据需要被实例化为具有类似的属性。该服务目录包括描述所有活跃服务功能的属性的数据,并且根据该数据,控制器102通过从所存储的数据选择必要的服务功能及其相关联的服务链的网络节点来生成服务链的信息。控制器102还标识服务链中的哪一个或多个服务功能是有状态的。例如,控制器102可以存储这样的信息,该信息指示它具有用于服务器负载平衡器的图像,并且该类型的负载平衡器需要y数量的中央处理器单元(cpu)和存储器来运行,并且能够以每秒n个分组的速率来进行安全套接层(ssl)卸载。

在服务链创建期间,控制器102选择所有必需的服务功能及其位置,并且创建服务路径图。服务路径图可以是例如根据rfc7665的呈现服务路径。此时,除了可用服务功能的视图之外,服务基础设施还具有正向和反向(若需要)耦合的一系列服务路径以及相关联的分类标准(租户、流等)。控制器102生成服务头部并且生成服务链的分类标准,并且如下文进一步解释的,将服务头部和服务链的分类标准发送到一个或多个网络节点。

现在参考图7,其示出了通过网络中的服务链300的流量流的示例。服务链300可包括:入口节点302、参考标号304处的服务1的服务节点、参考标号306处的服务2的服务节点、参考标号308处的服务3的服务节点、以及出口节点310。服务1、服务2、以及服务3可以在服务域中,并且入口节点302和出口节点310可以在网络域中。入口节点302可以接收分组并且确定每个分组是否应该经过服务链300。若分组应该穿过服务链300的服务,则入口节点302可以将该分组标记为属于服务链并且将分组转发到服务1,该服务1可被配置为服务链300中的第一服务。服务1可以对分组执行第一服务并且沿着转发分组。若分组穿过服务链300中的每个服务,例如,如流314所示,则分组将经过服务1、服务2、以及服务3,并且每个服务将根据它们各自的服务来对分组进行操作。当分组到达出口节点310时,出口节点310可以对离开服务链的分组执行服务链验证,并且验证分组确实已经经过了服务链300中定义的所有服务。若分组确实经过了服务链300中的所有服务,则服务链验证过程可以返回成功,并且分组可以被继续转发,例如,在流314中。然而,若当分组到达出口节点310时,出口节点310对分组执行服务链验证过程但服务链验证过程失败,则该分组可被标记为未通过验证(通过验证)并且被丢弃,例如,在流程312中。

在各个实施例中,可以至少部分地基于添加到穿过服务链的分组的元数据来在出口节点处执行服务链验证/通过验证。分组可被分配诸如时间戳(例如,其进入服务链的时间)或随机数之类的标识值,以使得可以在经过服务链的所有分组中唯一地标识分组。当分组经过服务链中的服务节点时,除了其如服务链所指定的服务之外,服务节点还可以执行生成或修改一条验证信息的操作。经生产或修改的该条信息以及分组标识值可以作为元数据被添加到分组以用作服务验证信息。出口节点可以具有服务链中所有服务的所有秘密。当分组到达出口节点时,可以从分组提取服务验证信息,并且出口节点可以使用分组标识值和所有服务的秘密来生成或修改该条验证信息的副本,并且将其自己的版本与从分组提取的经生成或修改的该条验证信息进行比较,以验证分组确实经过了服务链中的所有服务。

参考图8,示出了流程图的示例,该流程图总体上描绘了根据本文描述的技术的由服务功能(例如,在服务节点处)执行的用于促进服务链通过验证的操作。还参考图1和图7来描述图8。在402处,可以在服务链的服务节点处接收服务功能的安全配置信息。例如,参考标号204处的服务1的服务节点可以接收服务1的安全配置信息。对于实现秘密共享方法的实施例,安全配置信息可以是秘密的份额,或对于实现加密操作的实施例,安全配置信息可以是加密密钥。在404处,可以接收将在服务节点处执行的验证操作的配置信息。配置信息可以指示是否可以计算poly-3的份额,或是否可以在服务节点处执行使用加密密钥的加密操作。在406处,可以接收穿过服务链的分组,或更一般地,为了管道转发,获取关于分组的信息(这可能在整个分组到达服务节点之前发生)。在408处,可以使用秘密信息和从分组的带内元数据读取的信息来执行验证操作。在410处,可以将操作结果写回(保存)到分组中的带内元数据。例如,verify值可被保存为元数据的部分用于加密操作,并且累计秘密份额值可被保存为元数据的部分用于秘密共享方法。在412处,分组可被转发到服务链中的下一服务功能。下一服务功能可以是服务链的常规服务功能,或者下一跳可以是出口节点。

参考图9,示出了流程图的示例,该流程图总体上描绘了根据本文描述的技术的出口节点可以执行的用于促进服务链验证的通过验证/证明过程420。在422处,可以存储服务链的每个相应的服务功能的服务验证(即上述安全配置)信息。如上所述,在使用秘密共享技术的实施例中,出口节点可以存储秘密(例如,包括rnd-1和其它系数的poly-1),并且在使用加密密钥的实施例中,出口节点可以存储服务链的所有服务的加密密钥。在424处,可以接收离开服务链的分组。如图7所示,分组需要通过出口节点作为离开服务链之前的最后一站。在426处,可以从分组提取服务验证信息。例如,在使用秘密共享的实施例中可以从分组提取rnd-2和累积份额值,并且可以在使用基于加密密钥的加密操作的实施例中可以从分组提取rnd、seq、以及verify。在428处,可以使用所存储的服务验证(即安全配置)信息和从分组提取的服务验证信息来验证分组已经穿过了服务链的每个服务功能。例如,在使用秘密共享的实施例中,可以通过rnd-1和rnd-2的份额来获取rnd-3,并且也使用rnd-1+rnd-2来进行验证;并且在使用加密操作的实施例中,可以使用相应的加密密钥来利用seq的加密对verify字段应用xor运算,并且可以利用rnd来验证xor运算结果。

参考图10,示出了流程图的示例,该流程图总体上描绘了根据本文描述的技术的控制器(例如,图1所示的控制器102)可以执行的用于促进服务链通过验证的操作。还参考图1和图7来描述图10。在432处,可以生成服务链的信息。例如,控制器102可以在网络节点处标识要被应用于服务链300的分组的服务功能,并且定义服务链以包括这些服务。在434处,每个服务功能可被配置有安全配置信息和将在服务功能处执行的验证操作。例如,在使用秘密共享的实施例中,poly-1的份额可以由控制器生产并且被发送到服务功能,并且每个服务功能可被配置为使用它们各自的poly-1的份额来计算rnd-3的份额。在使用加密操作的实施例中,控制器可以生成加密密钥并且分发给服务功能。在436处,服务链的出口节点可被配置有所有服务功能的安全配置信息和将在出口节点处执行的服务链验证。例如,根据实施例实现秘密共享方法还是加密操作,控制器可以配置出口节点来执行相应的服务链验证。

服务链接可以使用nsh技术以及传统链接方法(例如,接口或vlan拼接;通过一系列nat设备(例如,防火墙)的流量转向)。本文呈现的路径通过验证技术适用于服务链的任意实现方式。

网络路径验证的其它使用

文中呈现的路径验证技术的其它示例使用包括:网络中的流量工程(te)路线的路线验证、验证源路由方案(例如,通过分段路由与带内操作、管理和维护(oam)元数据头部的组合)。

通常,这些路径验证技术对于任意基于策略的路由(pbr)方法都是有用的。

用于运载网络路径通过验证的带内元数据的传输机制

可以利用带内元数据的不同的传输机制来实现根据本公开的实施例。不管使用秘密共享方法还是加密密钥,包含验证信息的元数据可以在每个分组穿过网络中的路径时被添加到每个分组。分组中可用于运载元数据的空间可能因部署而不同。在其中网络节点针对服务节点执行代理功能的部署中,元数据的数量变得重要,因为代理节点在流量传输去往/来自服务节点时需要缓冲头部。在各个实施例中,元数据可以作为分组头部的部分来运载。例如,若网络服务头部用于服务链接,则元数据可以作为互联网协议版本6(ipv6)扩展头部或选项头部的部分、或作为新的nsh元数据(md)类型1来运载。

参考图11,示出了包含用于服务链验证的元数据字段502的示例oamipv6扩展头部。元数据字段502还可被称为运载通过验证pot并且可包括第一字段504和第二字段506,其中,第一字段504可包含rnd-2并且第二字段506可包含shamir秘密共享方案(ssss)累积值。尽管虽然第一字段904和第二字段906中的每一个被示出为64位,但该位长度仅仅是示例。在其它实施例中,rnd-2字段和ssss累积字段可具有不同的位长度,例如,32、56、72、128等。应注意的是,在示出头部信息的附图(例如,图11、12、13b、13c、以及14)中,字段可被拆分成两行,并且第二行是第一行的延续。例如,rnd-2字段504包括第一行的rnd-2和表示为rnd-2(cont)的连续第二行。类似地,ssss累积字段506包括第一行的ssss累积和表示为ssss累积(cont)的连续第二行。

参考图12,示出了示例oam选项头部600,其总体上描述了元数据字段602可以如何由头部运载以用于服务链验证。选项头部600可包括:下一头部字段、头部扩展长度字段、以及如互联网工程任务组(ietf)请求注解(rfc)2460中定义的选项字段。例如,oam选项头部600可以是逐跳扩展头部或如rfc2460所述的目的地扩展头部。

选项字段602可包括选项类型、选项数据长度、以及选项数据。选项数据可包括元数据字段604。元数据字段604可包括随机数字段606和累积值字段608。随机数字段606可包含rnd-2,并且累积值字段608可包含shamir秘密共享方案(ssss)累积值。选项数据还可包括pot类型字段610,其可以指示包括pot数据。在一个实施例中,pot类型字段610可以是特定pot变体的8位标识符以指示包括pot数据。pot类型字段、保留字段、随机数字段606、以及累积值字段608的位长度仅仅是示例,并且在其它实施例中,这些字段可具有不同的位长度。

参考图13a,示出了示例分段路由扩展头部700,其总体上描绘了元数据字段702可以如何由头部运载以用于服务链验证。片段路由由ietf进行标准化。可以在ietf网站(例如,https://tools.ietf.org/html/draft-previdi-6man-segment-routing-header-07#section-5.2)上找到对片段路由扩展的描述。在一个实施例中,服务链验证数据可被编码为分段路由头部中的策略列表元素,并且可以使用新的策略类型来将服务链验证数据表示为策略列表元素。策略标志可以指示该数据在策略列表中的索引。图13a示出了指示在元素列表之后的第一个元素的类型的策略标志位4-6,其被标记为策略标志字段704并且包含0x04的值。服务链验证数据被编码为由参考标号702指示的可选策略列表[0]。新策略类型的值尚未被确定,并且为了说明目的,值0x04被用作新策略类型的值。应注意的是,pot数据不需要是策略列表中的第一策略,并且若pot数据是在策略列表[1]、策略列表[2]、或策略列表[3]处,则可以设置相应的策略标志位。

参考图13b,示出了分段路由扩展头部700的示例元数据字段710。示例元数据字段710可包括八位字节0和1处的分段访问标志字段712、八位字节2到8处的随机数字段714、以及八位字节9-15处的累积字段。分段访问标志字段可以指示是已经访问了分段(位被设置)还是尚未访问分段(位未被设置)。随机数字段可包含用于服务链验证的随机数值,例如,rnd-2。累积字段可包含用于服务链验证的累积值,例如,ssss累积值。

参考图13c,示出了分段路由扩展头部700的另一示例元数据字段720。如图13c所示,示例元数据字段720可包括八位字节0到7处的随机数字段722和八位字节8-15处的累积字段724。除了大小与它们在示例元数据字段710中的对应项不同之外,示例元数据字段720的随机数字段722和累积字段724可类似于它们在示例元数据字段710中的对应项,并且可以分别包含用于服务链验证的随机数值和累积值。

参考图14,示出了包含运载pot数据的元数据字段的示例nshmd型1头部800。头部800可包括:tlv类别字段802、类型字段804、保留位字段806、长度字段808、以及元数据字段810。tlv类别字段802可以包含描述类型字段804的范围的信息。在一些情况下,tlv类别可以标识特定供应商,在其它情况下,tlv类别可以标识特定标准主体分配的类型。在一个实施例中,pot可以在特定供应商tlv类别(例如但不限于,具有值0x0009的供应商)中进行定义,并且被表示为供应商(0x0009)tlv类别。类型字段804可以包含指示由元数据字段810运载的信息的特定类型的类型信息。类型信息可以在给定tlv类别的范围内进行定义。在一些实施例中,值分配可以是tlv类别所有者的责任。例如,可以为服务链验证(scv)的类型值选择临时值0x94。保留位字段806可以包含保留位,例如,可以存在三个保留位以供将来使用。在一个实施例中,保留位被设置为0x0。长度字段808可以包含可变元数据的长度,例如,以4字节词的形式。在图14所示的实施例中,长度是4。

元数据字段810可包括随机数字段812和累积数字段814。随机数字段812可包括每分组随机数,例如,64位rnd-2。累积数字段814可包括在每个网络节点处更新的累积数,例如,通过处理每分组随机数字段和网络节点特定参数来在网络节点处更新的64位累积。

图11-14中的头部的各个实施例中的元数据字段使用随机字段和累积字段来说明验证信息可以如何被运载在分组头部中。验证信息还可被称为验证信息或pow数据。然而,元数据字段不限于仅包含随机字段和累积字段。例如,如上所述,在使用秘密共享方法的一些实施例中,每个网络节点可以将它们各自的poly-3的份额放入元数据字段,而不是累积值。在这些实施例中,元数据字段可以包含rnd-2,以及由沿路径的相应服务生成的poly-3的相应份额的多个字段。此外,在使用基于加密密钥的加密操作的实施例中,元数据字段可以包含rnd字段、seq字段、以及verify字段。

可以如何运载元数据的其它示例包括根据现在已知或以后开发的各种隧道方案中的任一个的额外隧道头部,以及将元数据运载为“伪标签”,例如,在多协议标签交换(mpls)转发中。通常,可以在现有或新的隧道/封装头部中运载通过验证/验证元数据。也就是说,可以创建新的隧道/封装头部来运载该类型的元数据,或可以重新利用隧道/封装头部中的现有字段来运载元数据。

因此,总之,提供了一种方法,包括:获取关于网络中的网络节点处的分组的信息,该信息包括带内元数据;从带内元数据读取验证信息;根据从分组读取的验证信息生成经更新的验证信息,该验证信息用于验证网络中的分组的路径;将经更新的验证信息写入分组的带内元数据;并且从网络中的网络节点转发分组。可以以各种方式运载带内元数据,例如:作为ipv6扩展头部中的选项;在目的地选项ipv6扩展头部中;逐跳ipv6扩展头部的选项;作为路由选项ipv6扩展头部的部分;作为用于分段路由的ipv6扩展头部;作为用于操作、管理和维护(oam)的ipv6扩展;作为隧道头部、作为伪标签、或在网络服务头部的扩展头部中。验证信息可包括秘密共享方案的累积值。

以另一形式,提供了一种装置,包括:网络接口单元,其被配置为使得能够通过网络进行通信;耦合到网络接口单元的处理器,其中,该处理器被配置为:获取关于在网络接口单元处接收到的分组的信息,该信息包括带内元数据;从带内元数据中读取验证信息;根据从分组读取的验证信息生成经更新的验证信息,该验证信息用于验证网络中的分组的路径;将经更新的验证信息写入分组的带内元数据;并且使得分组经由网络接口单元在网络中被转发。

此外,提供了一种系统,包括:与网络中的路径相关联的多个网络节点,每个网络节点被配置为:获取关于在网络接口单元处接收到的分组的信息,该信息包括带内元数据;从带内元数据读取验证信息;根据从分组读取的验证信息生成经更新的验证信息,该验证信息用于验证网络中的分组的路径;将经更新的验证信息写入分组的带内元数据;并且从网络中的网络节点转发分组。

参与设备的框图

参考图15,示出了被配置为执行控制器(例如,图1所示的控制器102)的功能的设备的示例架构。控制器102可以采用例如可以生成本文描述的配置信息并且将信息分发给网络节点(和验证者节点)的服务器的形式,例如,网络管理系统。控制器102可包括:处理器910、一个或多个网络接口单元(例如,网络接口卡)920、存储器930、以及硬件逻辑940。驻留在存储器330中的是用于配置过程950的软件,其可包括定义和配置要验证的期望路径的多个网络节点并且如上所述生成和向路径的网络节点发送验证信息的操作。过程950还可以以使用硬件逻辑940的硬件来实现,或组合硬件和软件二者来实现。

处理器910例如是微处理器、微控制器、片上系统(soc)、或其它固定或可编程逻辑。处理器910在本文中还被简称为处理器。存储器930可包括:只读存储器(rom)、随机存取存储器(ram)、磁盘存储介质设备、防篡改存储装置、光学存储介质设备、闪存设备、电、光学、或其它物理/有形存储器存储设备。存储器930可以是单独的或处理器910的部分。因此,通常,存储器930可包括编码有软件的一个或多个有形(例如,非暂态)计算机可读存储介质(例如,存储器设备),该软件包括计算机可执行指令,并且当软件被执行(由处理器910)时,可操作来执行本文中结合用于服务链的网络中的控制器102所描述的操作。为此,存储器930可以存储这样的软件指令,当由处理器910执行时,这些软件指令使得处理器910执行各种配置操作,包括如本文所述的定义网络路径以及利用配置信息来配置网络节点。例如,存储器930可以存储用于处理器910来执行上面结合图13和图10所描述的操作的指令。

网络接口920使得能够通过网络来与如图1所示的网络中的网络节点进行通信。因此,网络接口920可包括一个或多个通信网络接口卡,其具有被配置为接收/发送来自/去往网络的分组的端口。网络接口可包括有线和/或无线网络连接性。

处理器910的功能可以由编码有指令的处理器或计算机可读有形非暂态介质或编码在一个或多个电路中的逻辑(例如,诸如专用集成电路(asic)之类的嵌入式逻辑、数字信号处理器(dsp)指令、由处理器执行的软件等)来实现,其中,存储器930存储用于本文描述的计算或功能的数据(和/或存储被执行以实现本文描述的计算或功能的软件或处理器指令)。因此,可以利用固定逻辑或可编程逻辑(例如,由处理器或现场可编程门阵列(fpga)执行的软件或计算机指令)来实现过程950的功能。

可以使用硬件逻辑940来实现某些功能(例如,诸如生成加密密钥之类的加密操作),以及在不涉及中央处理单元(cpu)(例如,处理器910)或与网络接口920之一相关联的单独处理器的情况下,例如在asic等级执行硬件编程。硬件逻辑940可被耦合到处理器910或可被实现为处理器910的部分。在一些实施例中,硬件逻辑940还可包括一个或多个专用集成电路,其包括缓冲器、队列、以及用于执行分组转发操作的其它控制逻辑。

应理解的是,在其它实施例中,控制器102可包括除了图15所示的那些之外的更少或更多的模块。在另一示例中,配置过程950可以是由asic处理的固件的形式,该asic可被集成在电路板中。替代地,配置过程950可以是包括在可编程逻辑器件(例如,现场可编程门阵列)中的一个或多个逻辑块的形式。此外,可以适配控制器102和/或可以提供附加结构以提供超出本文具体描述的替代或附加功能。在不脱离本文呈现的实施例的范围和精神的情况下,预想对关于图15所描述的结构的修改或添加以实现这些替代的或额外的功能。

现在转到图16,示出了网络节点1000(例如,图1所示的网络节点120、130、132、134、以及140中的任一个)的示例框图。网络节点1000包括:一个或多个处理器1010、存储器1020、总线1030、以及网络处理器单元1040。处理器1010可以是微处理器或微控制器。网络处理器单元1040可包括一个或多个asic并且可促进网络设备1000和其它网络节点以及控制器102之间的网络通信,并且可包括多个网络端口(未示出),从这些网络端口接收网络中的分组并且向这些网络端口将分组路由到网络中。处理器1010执行与存储在存储器1020中的软件相关联的指令。具体地,存储器1020存储用于服务功能逻辑1050的指令,当由处理器1010执行时,使得处理器1010执行一个或多个服务功能的操作。存储器1020还存储用于验证逻辑1060的指令,当被执行时,使得网络节点基于根据本文描述的操作从控制器接收到的配置(验证)信息1065来从带内元数据中读取验证信息、生成经更新的验证信息并且将经更新的验证信息写回带内元数据,并且本文描述了加密相关操作的更具体的实施例。应注意的是,在一些实施例中,验证逻辑1060可以以由asic处理的固件的形式来实现,该asic可被集成在电路板中。替代地,验证逻辑1060可以是包括在可编程逻辑器件(例如,现场可编程门阵列)中的一个或多个逻辑块的形式。具体地,如本文所述,网络设备400的一些组件可以提供对计算密集型加密操作的硬件支持。

存储器1020可包括rom、ram、磁盘存储介质设备、防篡改存储装置、光学存储介质设备、闪存设备、电、光学、或其它物理/有形存储器存储设备。通常,存储器1020可包括编码有软件的一个或多个有形(非暂态)计算机可读存储介质(例如,存储器设备),该软件包括计算机可执行指令,并且当软件被执行(由处理器1010)时,可操作来执行本文描述的操作。

参考图17,示出了被配置为用作诸如图1所示的出口节点140或图7所示的出口节点310之类的出口节点(例如,验证者)的网络节点的示例框图。参考标号1100处所示的验证者(出口)网络节点可包括处理器1110、一个或多个网络接口1120、存储器1130、以及硬件逻辑1140。驻留在存储器1130中的是用于路径验证过程1150的软件,该路径验证过程1150可包括上面描述的并且下面结合图4和图9进一步描述的的操作过程。此外,存储器1150存储从控制器接收到的,并且对应于控制器发送到要验证的路径中的每个单独网络节点的所有配置(验证)信息的配置信息1150。路径验证过程1150的一些或所有操作还可以以使用硬件逻辑1140的硬件(例如,asic或fpga)来实现,或组合硬件和软件二者来实现。网络接口1120可以是可以在网络中发送和接收分组,从而使得耦合到网络设备1100的任意网络节点能够通过如图1所示的网络进行通信的网络端口。

本文描述的操作和逻辑可以以除了由处理器执行的软件之外的任意形式来实现。例如,在一个实施例中,操作和逻辑可以以由asic处理的固件的形式来实现,该asic可被集成到电路板中。在另一实施例中,操作和逻辑可以以包括在可编程逻辑器件(例如,现场可编程门阵列)中的一个或多个逻辑块的形式来实现。因此,如本文所述,本文中呈现的技术可被体现在例如方法、装置、以及计算机可读存储介质中。

本文描述的实施例可以使得能够验证某些网络流量已经行进经过了网络中的特定路径。一个示例是当机构部署服务链来检查应该穿过服务链的所有分组是否实际上穿过了该服务链。不再需要服务链的间接验证。此外,检查每个分组还可以揭示服务链接方法可以是基于流的,其中,仅流的第一分组穿过了整个服务检查,并且流的剩余分组遵循基于简化策略的快捷方式。

本公开的实施例提供了相对于任意传统方法的各种益处。例如,中间网络节点仅知道它们的秘密或秘密的份额。此外,该解决方案在实现服务的多个节点以及分组访问服务的顺序方面是灵活的。例如,服务可以由多个设备实现,例如,跨实现相同策略的若干个防火墙的负载平衡,并且实现相同服务的所有设备将使用相同的秘密份额或相同的秘密(在使用一组秘密的情况下)。路径验证将独立于分组经过的网络节点的顺序来工作。只要将实施的网络节点是路径的部分并且分组经过了这些网络节点,则验证将成功。

此外,只要针对rnd-2使用每个分组的唯一随机数/时间戳,则本公开的实施例可以避免重放攻击。此外,由于验证者还具有秘密组合步骤的部分,因此节点不能被绕过。

本文呈现的实施例的另一方面是需要非常有限的配置,因为路径由单个秘密(在使用秘密共享的情况下)或一组秘密来描述。又一优势是它可能仅需要有限数量的元数据,例如,64位的累积密钥可能是足够的。

对于通过秘密共享来实现验证的实施例,存在其它有益特性:1)shamir秘密共享是多项式数学并且比基于嵌套加密散列等的方法快得多;2)低复杂度:每个节点处的计算(具有一次预先计算的值)包括三个加法运算和一个乘法运算,验证者处的计算是减法,然后与ssec进行比较以进行验证,并且操作可以通过使用基于galois字段(gf字段或有限字段)的加法、乘法用于拆分和组合多项式来进一步优化;以及3)可以通过配置每个路径(例如,服务链)以唯一秘密(rnd-1)来在出口处验证分组经过了哪个路径。

在一些实施例中,多个rnd-1可被预先配置到网络节点中,并且每个分组可被配置为运载一条元数据信息以标识哪个rnd-1份额应该用于该分组。在一个实施例中,可以使用rnd-2的确定性函数来确定对rnd-1的索引。例如,rnd-2的最后一个字节可被转换为数字并且用于确定哪个rnd-1份额应该用于分组。这些实施例可以延长rnd-1的更新周期并且减少控制器上的工作量。

这些技术可以提供分组穿过了网络路径中的特定组的网络路径的坚实验证。此外,这些技术可以允许用户摆脱验证服务链适用于特定应用的传统方法,并且还可以使得任意机构能够利用nfv来建立其服务区。

以上描述旨在仅通过示例的方式。尽管这些技术在本文被示出和描述为被体现在一个或多个特定示例中,但并不意图被限制于所示的细节,因为可以在权利要求的范围或等同物的范围内做出各种修改和结构改变。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1