中间管理器到客户操作系统网络通信量中的透明部署的制作方法

文档序号:15116649发布日期:2018-08-07 20:29阅读:182来源:国知局

本公开涉及虚拟化计算环境,并且更具体地涉及将操作实体透明地部署到虚拟化计算环境的网络数据路径中。



背景技术:

许多企业以及它们的计算机系统利用由虚拟化计算环境的虚拟数据中心(vdc)提供的虚拟机,其中vdc供应虚拟化资源,诸如可通过计算机网络的网络数据路径访问的网络接口。虚拟机的实例(虚拟机实例,vmi)可以包括被配置成利用由vmi的超级监督器(hypervisor)来管理的vdc的系统(例如,硬件)资源的客户操作系统(os)。vmi也可以包括中间管理器,该中间管理器被配置成管理在vmi内操作的客户os并且实现增强客户对vdc资源的利用的一个或多个服务。

通常来说,中间管理器和客户os是独立的操作实体(oe),以使得中间管理器能够“看到”经由超级监督器通过网络数据路径交换的客户os的网络通信量。作为oe,中间管理器也可以经由vdc所提供的网络接口来通过网络数据路径交换网络通信量。然而,由vdc对用于vmi的网络接口的配设通常包括对于有限的硬件资源(例如,网络接口硬件地址)的分配,所述硬件资源由中间管理器和客户os共享以通过网络数据路径进行通信。从vdc的角度来看,一个oe在vmi内被分配以不能被改变的硬件地址,即,所述硬件地址由vdc固定。结果,vdc将“盲目地”丢弃不具有vmi的正确分配的地址的任何网络分组。因此,一个问题涉及管理到具有一个硬件地址的两个独立oe的网络通信量。



技术实现要素:

本文的实施例涉及一种用于将操作实体(oe)透明地部署到虚拟化计算环境的网络数据路径中的技术,所述虚拟化计算环境包括在虚拟数据中心(vdc)的虚拟机实例(vmi)中运行的客户操作系统(os)。所述oe被实施为vmi内的计算单元的中间管理器——例如元-超级监督器(元监督器),所述计算单元包括客户os和相关联的应用。计算单元以使得元监督器被设置在超级监督器和客户os之间并且以对客户os来说透明的方式进行操作的布置被分层(layer)在管理vdc的系统(例如,硬件)资源的超级监督器上方。所述透明部署技术涉及被实施为元监督器的模块的一组条件测试(例如,分支)和动作,其被应用以检查通过网络数据路径交换的网络分组通信量并且操作以使网络数据路径内的元监督器的存在对客户os“不可见”(即,透明),即,使得客户os不知道元监督器的存在,所述元监督器可以执行网络分组通信量的透明加密/解密以及防火墙过滤服务。也就是说,元监督器到客户os网络分组通信量中的透明部署是基于被配置成提供使用“钩子(hook)”部署的独有、特殊用途的条件测试和动作的一个或多个模块,“钩子”在元监督器中对分组进行处理的特定点处被调用并且使得能够在那些点处查验分组以确定分组是被定向到元监督器的网络通信量的一部分、还是被定向到客户os的网络通信量的一部分、还是被定向到vmi外部的目的地(外部目的地)的网络通信量的一部分。实质上,本技术使得元监督器能够将网络分组通信量区分为去往元监督器的分组、去往客户os的分组或者去往外部目的地的分组,并且在此之后将分组转发至正确的目的地。所述模块还被配置成根据方向(例如,根据分组进入接口)对分组进行处理,以使得第一组模块可以与用于“北行”方向中的分组的钩子相关联,并且第二组模块可以与用于“南行”方向中的分组的钩子相关联。

通过透明部署技术来区分网络分组通信量是通过包括以下各项的元监督器(即,操作系统内核)的各个子系统的协作来实现的:(i)一个或多个钩子模块,其使得分组能够在元监督器网络协议堆栈和客户os网络协议堆栈之间进行切换(即,分岔),(ii)防火墙/分组过滤规则集,其被配置成基于对分组的网络流的检查来标记分组,以及(iii)代理服务器,其被配置成处置不可辨别的网络流。分组的标记涉及与分组过滤规则相关联的附加状态,该附加状态用于将分组的网络流识别为与元监督器、客户os或外部目的地相关联,并用于确定那些流是否被透明地加密。另外,与常规的网络堆栈不同,本技术将防火墙/分组过滤的应用和透明加密/解密操作重新排序成首先解密透明加密的分组,由此暴露分组的网络流以确保分组过滤规则对网络流进行操作以识别适当的目的地。

在实施例中,钩子中的一个被配置成检查包含在分组中的协议类型,以识别不确定与请求相关联的回复是源自客户os处还是源自元监督器处的情况(诸如针对链路层协议)。这样的协议的示例是地址解析协议(arp)。根据本技术,通过将arp回复发送到元监督器网络协议堆栈和客户os网络协议堆栈二者来解析这种情况。为此,本技术提供了低层级(即,l2或链路层)钩子模块,所述低层级钩子模块指定了“如果回复分组的协议是arp,则将该回复分组发送到元监督器和客户os二者”。本技术还提供了更高层级(即,l3或网络层)钩子模块,该更高层级钩子模块在分组的协议类型是互联网协议(ip)时被应用。这里,网络通信量分组是基于它们的网络流是否源自或去往元监督器(或是计算机网络中的外部目的地)、基于分组进入接口来进行辨别的。如果呈递入站vmi的源自外部(即,计算机网络)的分组的网络流与元监督器相关联的确定,则分组被传递到元监督器的网络协议堆栈;否则,分组被传递到客户os网络协议堆栈,绕过元监督器的网络协议堆栈的至少一部分。

通过被实施为元监督器的分组过滤器(pf)的防火墙功能性来执行网络流是否与元监督器或客户os相关联的确定。将分组的网络流与在防火墙处保持的状态进行比较,并且如果发生匹配,则呈递分组属于应当被传递到客户os网络协议堆栈或元监督器网络协议堆栈的流的确定。如本文所用,网络流标示5元组,该5元组包括从分组的互联网层(ip)和传输层(传输控制协议tcp和用户数据报协议udp)头部获得的信息,诸如源ip地址和目的地ip地址以及源端口号和目的地端口号与协议类型。因此,网络数据路径内的分组被传递通过pf并被标记,这要求在防火墙处保持的状态包含关于流的来源的信息。然而,要注意的是防火墙也可提供分组过滤用于安全目的,诸如阻挡进入或外出分组、分组欺骗检测和ip地址黑名单。对于在元监督器处接收的、源自客户os处并且经由超级监督器去往计算机网络的分组,在防火墙处创建被修改为具有某一方向(出站/外出)的状态,以使得在元监督器处从超级监督器接收到的返回分组与修改的状态正确地匹配。

分组的网络流与防火墙状态的比较需要检查未加密的网络通信量,这进而需要对在元监督器处从vdc接收的透明加密的传入分组进行解密以获得原始的(5元组)网络流信息。基于该原始流信息,呈递关于网络分组通信量是被允许还是应当被阻挡的确定。对于常规的网络堆栈,网络分组通信量通常首先在解密前传递通过防火墙。然而,根据所述透明部署技术,防火墙分组过滤器的应用和透明加密/解密(例如,ipsec)操作被重新排序成使得在防火墙处理前能够首先进行解密,以使得防火墙能够对未加密的网络流信息进行操作。以此方式进行解密允许暴露传输层(tcp或udp)头部信息(其正常情况下使用ipsec被隐藏/加密)、并且尤其是暴露端口号,以正确地识别网络流。

附图说明

通过结合附图参考以下描述,可以更好地理解本文的实施例的以上优点和其它优点,在附图中相似的附图标记指示同等地或在功能上相似的元件,其中:

图1是虚拟化计算环境的框图;

图2是包括位于超级监督器和客户操作系统(os)之间的元监督器(metavisor)的虚拟机实例(vmi)的框图;

图3是元监督器的框图;

图4是例示对在元监督器处从超级监督器接收的传入分组通信量进行处理的流程图;

图5是例示对在元监督器处从客户os接收的传出分组通信量进行处理的流程图;以及

图6是例示在元监督器的环回接口上对传出分组通信量进行处理的流程图。

具体实施方式

图1是虚拟化计算环境100的框图,该虚拟化计算环境100包括被例示性地实施为虚拟数据中心(vdc)的计算机系统,该虚拟数据中心被配置成提供诸如虚拟存储、虚拟计算资源和虚拟数据库资源之类的可通过计算机网络的网络数据路径访问的虚拟化资源。vdc可以包括通过系统总线150互连的一个或多个处理器110、主存储器120和一个或多个网络适配器130。网络适配器130通过计算机网络将vdc连接到其它计算机或节点,该计算机网络包括点对点链路、广域网、在公共网络(诸如互联网)上实现的虚拟私有网络、或共享局域网。因此,网络适配器130可以被实施为具有将vdc连接到计算机网络所需的机械、电气和信令电路的网络接口卡(nic)。通过网络的通信可通过根据预定义协议交换数据的离散帧或分组来实现,该预定义协议诸如是传输控制协议/互联网协议(tcp/ip),但是也可有利地利用诸如用户数据报协议(udp)之类的其它协议。

主存储器120包括可由处理器110和/或网络适配器130寻址的多个存储器位置,这多个存储器位置用于存储与本文描述的实施例相关联的软件代码(例如,进程和/或服务)和数据结构。处理器和适配器进而可以包括被配置成执行诸如超级监督器125和虚拟机的实例之类的软件代码并且操纵数据结构的处理元件和/或电路。虚拟机实例(vmi)200由超级监督器125管理,超级监督器125是被配置成掩蔽来自vmi200中执行的一个或多个客户操作系统的低级硬件操作的虚拟化平台。在实施例中,超级监督器125例示性地是xen超级监督器,但是根据本文描述的实施例可以使用其它类型的超级监督器,例如hyper-v超级监督器和/或vmwareesx超级监督器。

对于本领域技术人员来说将显而易见的是,可以使用包括各种计算机可读介质的其它类型的处理元件和存储器来存储和执行与本文描述的实施例有关的程序指令。此外,虽然本文的实施例是在软件代码、进程和计算机(例如,存储在存储器中的程序、应用)的方面进行描述的,但是替换实施例也包括将所述代码、进程和程序实施为由硬件、软件、固件或其组合组成的逻辑和/或模块。

图2是虚拟机实例(vmi)200的框图。客户操作系统(os)210和关联的应用212在vmi200中运行并且可以被配置成利用vdc的硬件资源。在实施例中,客户os210可以是linux操作系统、freebsd和类似的操作系统;然而,应当注意的是,根据本文描述的实施例可以使用其它类型的客户os,诸如microsoftwindows操作系统。客户os210的客户内核220包括客户os网络协议堆栈230,用于通过由网络适配器130经由超级监督器125建立的网络数据路径来交换网络通信量。可以由中间管理器(即,元监督器300)至少部分地管理客户os,所述中间管理器包括用于增强客户对诸如处理器110、主存储器120和网络适配器130之类的各种vdc资源的利用的逻辑。至少部分地在超级监督器125的辅助下,vdc资源可以被虚拟化用于vmi。超级监督器可存在用于vmi内的进程的软件接口以传送被定向到超级监督器以访问vdc资源的请求(例如,超级调用(hypercall))。

元监督器300(元超级监督器)和客户os210是独立的操作实体(oe),它们被布置为使得元监督器位于超级监督器125和vmi200内的客户os210之间(即,元监督器被设置在客户os下方和超级监督器上方)并由此能够“看到”通过由网络适配器130经由超级监督器125提供的网络数据路径交换的客户os的网络通信量。作为oe,元监督器300被配置成也通过网络数据路径来交换网络通信量,其中与客户os的网络通信量相比,元监督器的网络通信量一般具有独有的网络流。然而,vdc对于用于vmi200的网络接口(例如,图3的sbg-if360)的配设包括对有限硬件资源(例如,网络适配器的硬件地址)的分配,其由超级监督器管理并且由元监督器300和客户os210共享以通过网络数据路径进行通信(即,发送和接收分组)。也就是说,超级监督器125被配置成管理vdc的包括网络适配器130在内的资源,以使得能够在元监督器300和客户os之间共享用于建立网络路径以通过计算机网络交换分组的硬件地址。从vdc的角度来看,一个oe被分配以vmi200中不能改变的硬件地址,即,所述硬件地址由vdc固定。结果,vdc将“盲目地”丢弃不具有vmi的正确分配的地址的任何分组。本文描述的实施例涉及管理到具有一个硬件地址的两个独立oe的网络通信量。

具体而言,本文的实施例涉及一种用于将操作实体透明地部署到虚拟化计算环境的网络数据路径中的技术,该虚拟化计算环境包括在vdc的vmi中运行的客户os,从而使得所部署的操作实体(oe)与客户os共享网络接口。oe被实施为包括客户os210和关联的应用212的vmi200内的计算单元250的中间管理器(即,元监督器300)。例示性地,计算单元250是被配置成使得企业能够使用安全控制的单个集合(诸如透明加密(即,对客户os透明的加密)、引导策略、应用和数据微分段以及可见性)在混合云环境中安全地运行工作负载的云工作负载保护平台。元监督器300位于计算单元250的汇合处并且包括使得能够进行单元250的安全服务的透明插入的逻辑。计算单元250以使得元监督器300被设置在超级监督器125和客户os210之间的布置被分层在管理vdc的系统(例如,硬件)资源的超级监督器125上方。具体地,元监督器300采用高级虚拟化技术,对于客户os210,元监督器300将自身呈现为云超级监督器125,并且对于云超级监督器125,元监督器300将自身呈现为客户os210。通过有效地充当企业的网络周边,元监督器300实现并施行安全控制和策略。

透明部署技术涉及被实施为元监督器300的模块的一组测试和动作,该组测试和动作被应用以检查通过网络数据路径交换的网络分组通信量并且操作以使网络数据路径内的元监督器的存在对于客户os210“不可见”(透明),即,使得客户os不知道元监督器的存在,所述元监督器可以执行网络分组通信量的透明加密/解密以及防火墙过滤服务。也就是说,元监督器300到客户os网络分组通信量中的透明部署是基于这样一组模块:其被配置成提供独有的、特殊用途的条件测试和动作,这些测试和动作通过使用元监督器中的在对分组进行处理的特定点处调用的“钩子”来进行部署并且使得能够在那些点处对分组进行查验以确定所述分组是被定向到元监督器300的网络通信量的一部分、被定向到客户os210的网络通信量的一部分、还是被定向到vmi外部的目的地(即,外部目的地)的网络通信量的一部分。本质上讲,该技术使得元监督器能够将网络分组通信量区分为去往元监督器的分组、去往客户os的分组或者去往外部目的地的分组,并在此后将分组转发到正确的目的地。值得注意的是,钩子还被配置成根据方向(例如,根据分组进入接口)来处理分组,以使得第一组模块可以与用于“北行”方向中的分组的钩子相关联,并且第二组模块可以与用于“南行”方向中的分组的钩子相关联。

通过透明部署技术进行的网络分组通信量的区分是通过元监督器的各个子系统的协作来实现的,并且更具体地,是通过元监督器的操作系统内核的各个子系统的协作来实现的。图3是元监督器300的框图。在实施例中,元监督器是使用netbsdos内核来实现的,但是也可以使用诸如freebsdos内核之类的其它os内核。元监督器300的各种子系统包括:(i)使得能够进行分组在元监督器网络协议堆栈320和客户os网络协议堆栈230之间的切换(即,分岔)的一个或多个钩子模块312、314,(ii)被配置成基于对分组的网络流的检查来标记分组的防火墙/分组过滤器330以及相关联的规则集,以及(iii)被配置成处置不可辨别的网络流的代理服务器340。分组的标记涉及与分组过滤器规则相关联的附加状态,该附加状态用于将分组的网络流识别为与元监督器300、客户os210或外部目的地(即,计算机网络中的目的地)相关联并用于确定那些流是否被透明加密。值得注意的是,客户os可以提供其自己的对分组的加密/解密,这些分组被“传递通过”元监督器到外部目的地或者从外部目的地“传递通过”元监督器。另外,与常规网络堆栈不同,该技术对防火墙/分组过滤器330的应用和透明加密/解密350(例如,ipsec)操作进行重新排序以首先解密透明加密的分组,由此暴露分组的网络流以确保分组过滤规则对网络流进行操作。元监督器可以提供对去往/来自元监督器以及客户os的分组的透明加密/解密。

在实施例中,元监督器300经由虚拟化网络适配器(例如,虚拟化以太网设备)与客户os210对接以用于分组交换。虚拟网络接口由元监督器提供,以使得能够进行标准分组和/或帧(诸如以太网分组/帧)的交换。元监督器从vmi获得(例如,篡夺)第一虚拟接口,并提供第二虚拟接口给客户os,从而使得网络通信量能够在客户os和计算机网络之间以及向/从元监督器透明地移动。具体地,虚拟接口包括作为首要用于客户os通信量的超级监督器125和元监督器300之间的接口的南行客户接口(sbg-if360),以及作为元监督器300和客户os210之间的接口并且表示元监督器os内核中的客户os的网络接口的北行客户接口(nbg-if370)。出于本文描述的技术的目的,这些接口表示网络数据路径的边界。注意,虚拟网络接口可以被动态地附接和移除,即,当新的物理适配器被动态地绑定到计算单元250时,现有的硬件(物理)网络适配器130可能出现和消失。元监督器确保虚拟接口在网络通信量流动之前是同步并静止的(quiesced)。(由客户os网络协议堆栈控制的)nbg-if可以初始与(由元监督器网络协议堆栈控制的)sbg-if等同地进行配置,例如,具有相同的协议堆栈配置设置(诸如最大传输单元(mtu)尺寸)。然而,要注意的是,可以相对于nbg-if在sbg-if上管理性地改变配置设置中的一个或多个(例如,mtu尺寸)。

如同所述,实现条件测试和动作的钩子由元监督器在对分组进行处理的特定点处调用,这些点例示性地与互联网协议(ip)堆栈的层(例如,负责使用介质访问控制(mac)地址进行数据链路寻址的链路层(l2),以及负责使用可在其中暴露网络流的ip地址进行ip寻址的网络层(l3))相关联。为此,透明部署技术在配置有l2钩子模块(“l2钩子312”)和l3钩子模块(“l3钩子314”)中的一个或多个模块的元监督器300的网络协议堆栈320上操作,这一个或多个模块可在对分组进行处理的特定点处(诸如例如,在透明加密/解密350处理之后)被调用。例示性地,该技术使用网络协议堆栈320的“pfil”头部框架,以便在一个或多个pfil头部点处附接钩子以捕获网络堆栈内的各层处的入站分组和出站分组。如本领域技术人员将理解的,可以使用其它网络堆栈分组捕获技术来附接钩子。当代码执行到达pfil头部点时(例如,在透明加密/解密处理之后),针对该头部登记的任何功能或钩子被调用用于分组。此钩子然后用于在解密之后重定向分组的进一步(防火墙)处理。在实施例中,可以修改元监督器的框架(即,pfil)以将这些钩子添加到分组的代码执行/处理的某些点,诸如处理分组的链路层信息以及每个方向(例如,北-南或南-北)中的分组的网络和传输层信息。

在实施例中,钩子中的一个(l2钩子)被配置成检查包含在分组中的协议类型,以识别不确定与请求相关联的回复是源自客户os处还是源自元监督器处的情况(诸如针对链路层协议)。这样的协议的示例是地址解析协议(arp)(即,互联网工程任务组的rfc826)。根据本技术,当arp协议准许时,通过将arp回复发送到元监督器网络协议堆栈320和客户os网络协议堆栈230二者来解析这种情况。为此,本技术提供了低层级(即,l2或链路层)钩子模块,该低层级钩子模块指定了“如果回复分组的协议是arp,则将该回复分组发送到元监督器和客户os二者”。例示性地,l2钩子312负责处置arp回复并确保仅ip通信量被允许传递通过元监督器网络协议堆栈320。本技术还提供了更高层级(即,l3或网络层)钩子模块,该更高层级钩子模块在分组的协议类型是ip时被应用(调用)。这里,网络通信量分组是基于它们的网络流是否源自或去往元监督器300(还是外部目的地)来进行辨别的。如果呈递入站vmi(即,在sbg-if上入站,从而具有南-北方向)的源自外部的分组的网络流与元监督器相关联的确定,则分组被传递到元监督器网络协议堆栈320;否则,分组被传递到客户os网络协议堆栈230,绕过元监督器的网络协议堆栈的至少一部分。

网络流是否与元监督器、客户os、或外部目的地相关联的确定是由被实施为元监督器的分组过滤器(pf)的防火墙功能性来执行的。例示性地,防火墙是保持流状态以识别网络流的模块。然而,防火墙也可以出于安全目的提供分组过滤服务,诸如阻挡进入或外出分组、分组欺骗检测和ip地址黑名单。l3钩子314对ip分组进行操作,并调用其中分组经历查验的防火墙/分组过滤器330。将分组的网络流与在防火墙处保持的状态进行比较,并且如果发生匹配,则呈递所述分组属于应当被传递到客户os网络协议堆栈或元监督器网络协议堆栈的流的确定。如本文所用,网络流标示5元组,该5元组包括从分组的互联网层(ip)和传输层(tcp和udp)头部获得的信息,诸如源ip地址和目的地ip地址以及源端口号和目的地端口号与协议类型。因此,网络数据路径内的分组被传递通过防火墙/pf330并被标记,这要求在防火墙处保持的状态包含关于流的来源的信息。

对于在元监督器处接收的、源自客户os处(即,北-南方向中的nbg-if上的进入)并且经由超级监督器去往计算机网络(即,去往外部目的地)的分组,在防火墙处创建被修改为具有某一方向(出站/外出)的状态,以使得在元监督器处从超级监督器接收到的返回分组与修改的状态正确地匹配。也就是说,l3钩子在由防火墙进行处理前反转分组的方向。例如,当元监督器(通过nbg-if370)接收源自客户os的分组时,从元监督器300的角度来看,分组是“入站”的。然而,当此分组被通过计算机网络进行发送时,所创建的状态对应于“出站”分组(从客户os的角度来看)。然而,当返回分组被重定向到元监督器中时,所创建的状态对应于入站通信量(即使从元监督器的角度来看原始分组对应于入站分组)。此问题导致了创建正确状态的有趣挑战,特别是鉴于仅向客户os提供一个硬件(mac)地址(以及一个网络(ip)地址)(而非两个分离的地址)的事实。从防火墙的角度来看,可在元监督器处操纵分组的方向以重写分组的方向(即,“入站”分组被修改为“出站”分组并且反之亦然)以用于创建防火墙状态的目的。注意,从元监督器的角度来看,sbg-if保留由vmi分配的硬件地址以及网络地址,而nbg-if未被分配以网络地址。

分组的网络流与防火墙状态的比较需要检查未加密的网络通信量,这进而需要对在元监督器处从vdc接收的透明加密的传入分组进行解密以获得原始的(5元组)网络流信息。基于该原始流信息,呈递(即,防火墙规则触发)关于网络分组通信量是被允许还是应当被阻挡的确定。标准网络分组通信量通常在解密前首先传递通过防火墙。与常规网络堆栈不同,根据透明部署技术,防火墙分组过滤器的应用和透明加密/解密(ipsec)操作被重新排序成使得在防火墙处理前能够首先进行解密,以使得防火墙能够对未加密的网络流信息进行操作。以此方式进行解密允许暴露传输层(tcp或udp)头部信息(其正常情况下使用ipsec被隐藏/加密)、并且尤其是暴露端口号,以正确地识别网络流。

根据透明部署技术,元监督器网络协议堆栈320有助于使用与客户os210共享的mac地址在元监督器300的虚拟接口上接收到的网络分组通信量区分(即,辨别)为去往元监督器的通信量(与去往客户os或外部目的地的通信量相对)。分组所到达的虚拟接口(即,分组是入站还是出站的方向)也可有助于通信量的区分,例如通过使得能够呈递如下决策:诸如分组是去往客户os、元监督器、还是外部目的地,以及如果是前者则是否要对客户分组进行加密。例如,在sbg-if360处从超级监督器(vdc)接收的透明加密的网络通信量可以通过在通过解密修改分组之后将分组重定向或“分岔”到客户os网络协议堆栈230来被转发到客户os210。作为重定向功能的一部分,所述技术提供了修改分组头部、端口号或协议的能力。在解密之后,钩子实质上被用作关于决策分组要被传递到哪个网络协议堆栈的分岔功能性。这些钩子或分岔用在对分组进行处理的不同点处,以确定要将分组传递到哪个协议堆栈(即,客户os还是元监督器)并确定下一处理步骤(即,是否要加密)。因此由防火墙/分组过滤器330在逐个分组的基础上执行处理,以呈递将分组传递到哪里的决策。在元监督器网络协议堆栈320上实现的pfil框架包括在协议堆栈处登记用以执行某些功能的这些附加钩子(或回调)。

在元监督器网络协议堆栈320内的钩子还操作以防止分组正常地流入堆栈320,其中通常存在监听通信量的守护进程。这样的正常流不会发生,因为元监督器不知道客户os发送了什么分组。因此,提供钩子以在分组到达虚拟接口(例如,在nbg-if370上入站)时处理分组以与客户os对接(从网络角度来看),并确保将那些分组通过作为元监督器与超级监督器125(vdc)之间的接口的另一虚拟接口(即,sbg-if360上出站)发送到vdc。值得注意的是,当分组在超级监督器和元监督器之间的接口上到达元监督器处时,那些分组不是在元监督器中被“消费”(因为它们去往那里)就是被转发到元监督器和客户os之间的nbg-if虚拟接口。

图4是例示对在元监督器处从超级监督器接收的(透明加密的)传入分组通信量进行处理400的流程图。传入通信量的分组在sbg-if360处被接收(即,入站南-北定向的分组)并且由网络协议堆栈320处理,其中l2钩子312被调用以检查分组(例如,以太网帧头部的类型字段),并确定分组的协议是否是arp(决策框402)。如果协议是arp,则对分组进行处理前进到决策框404,其中l2钩子确定分组是否是arp回复(例如,通过检查arp分组的操作字段)。如果是这样,则由于arp协议准许无偿(gratuitous)回复,所以将分组传递到元监督器网络协议堆栈320并通过nbg-if370传递到客户os网络协议堆栈230。如果该分组不是arp回复(例如,arp请求),则分组仅通过nbg-if370被传递到客户os网络协议堆栈230。注意,元监督器可以响应于从元监督器发出的arp请求而接收arp回复,从而获得介质访问控制(mac)地址以适当地寻址同一子网上的分组。然而,arp请求不需要由元监督器处理,而是替代地可以经由与sbg-if共享相同的硬件地址(例如,mac地址)的nbg-if由客户os网络协议堆栈来应答。

在实施例中,元监督器可以提供arp代理(即,arp代理服务器),诸如用于具有arp服务的另一oe。在这种情况下,所有到达sbg-if的arp分组都被定向到元监督器中,并由arp代理服务器处理。需要注意的是,元监督器代理服务器也可与客户os交换arp分组。

如果决策框402处的确定是分组的协议不是arp,则处理前进到决策框406,其中l2钩子检查分组(例如,以太网帧头部的类型字段)以确定协议是否是ip。如果不是,则不允许分组传递通过网络协议堆栈320,即分组被阻挡(表面上是畸形的分组)。然而,如果分组的协议是ip,则l3钩子314被调用以执行进一步的测试和动作。特别地,在决策框408处执行测试以确定分组是否被加密(即,由元监督器加密)。注意,在框412处,由客户os加密的分组被传递给防火墙。如果分组被元监督器加密,则在框410处,l3钩子调用透明加密/解密子系统350以解密分组。一旦被解密,就在框412处由防火墙处理分组。分组的处理然后前进到决策框414,其中确定分组是否被标记(加密标签)为透明加密的流的一部分并且因此预期已经被元监督器加密。如果分组是透明加密的流的一部分,则在框416处验证解密;处理然后前进到决策框418,其中确定分组是否被标记(例如,元监督器标签)以供元监督器消费。如果是这样,则将分组传递到元监督器网络协议堆栈320;否则,分组通过nbg-if370被传递给客户os网络协议堆栈230。

对于使用固定(即,预定)端口号的协议(诸如域名服务器(dns)名称查找(例如,ietf的rfc1035)、动态主机配置协议(dhcp,例如ietf的rfc2131)和网络时间协议(ntp,例如ietf的rfc1035)),可能存在不可辨别元监督器的网络协议堆栈320处的网络通信量的情况。客户os210和元监督器300二者都需要查找名称并将其转译为地址的能力。通常,来自这些oe的dns请求转到同一个dns名称服务器,该名称服务器具有用于tcp/udp头部中的目的地(通常还有源)的预定端口号。由于元监督器和客户os共享相同的ip地址,因此不容易区分该通信量的网络流。如果两者要同时请求名称查询,则单独防火墙状态不足以辨别通信量的方向(即,网络通信量分组应当发送到哪个网络堆栈)。因此,透明部署技术包括由代理服务器340进行代理,以作为避免这样的网络流的辨别的方式。也就是说,对于使用预定端口号的网络协议,分组由元监督器代理,而不管元监督器或客户os是否是分组的源。在从客户os210接收到具有不可辨别的网络流的分组时,元监督器300将分组代理到其预期的目的地,由此确保回复被返回给元监督器。在实施例中,代理服务器可以实现“外域服务(foreignservice)”重定向以控制去往/来自计算机网络中的外部目的地(例如,安全网关设备)的分组,在这种情况下,网络流可以是可辨别的。

对于特定网络流,可以将通信量定向到元监督器300中以进行代理,即,元监督器代表客户os210发送通信量,以确保所有不可辨别的网络流以元监督器为源。透明部署技术的此方面使得元监督器能够构建要发送回客户os的响应。也就是说,元监督器网络协议堆栈320保持足够的信息来构建响应以将分组定向到正确的协议堆栈。例如,元监督器300的dns解析器(未示出)可以解析针对客户os和元监督器二者的查询或请求,以使得代理服务器340简单地以模拟如果响应直接来自dns服务器它将会接收到的响应的所构建的形式和形状返回响应。实际上,元监督器300作为透明dns代理来操作。

因此,分析协议的类别,诸如例如由元监督器代理的dns请求,这是因为它的来源/目的地是不可辨别的(例如,使用预定的tcp或udp端口号的协议)。如前所述,其它这样的问题协议可涉及针对其将响应发送到客户os和元监督器二者的动态地址解析(dar)协议;包括使得难以辨别网络流的预定端口号的dhcp;以及ntp。由元监督器使用以执行名称解析、获得ip地址、并获得正确时间的这些协议可以用于将响应发送到与客户os的计算机/节点相似的计算机/节点,导致了潜在的问题。然而,如前所述,即使在网络流是可辨别的时候,也可以使用外域服务代理。

图5是例示对在元监督器处从客户os接收的传出分组通信量(即,入站北-南定向的分组)进行处理500的流程图。传出通信量的分组在nbg-if370处被接收,并由网络协议堆栈320处理,其中l2钩子312被调用以确定分组的协议是否是arp(决策框502)。如果协议是arp(例如,基于arp分组的操作字段的arp请求),则分组通过sbg-if360被传递到超级监督器125并且传递到计算机网络上。如果协议不是arp,则处理前进到决策框504,其中l2钩子确定协议是否是ip。如果不是,则不允许分组传递通过协议堆栈320,即分组被阻挡。然而,如果分组的协议是ip,则l3钩子314被调用以执行进一步的测试和动作。具体来说,在决策框506处执行测试以确定分组是否应被代理。如果是这样,则将分组的ip头部的目的地地址重写为元监督器300的环回接口(即,本地主机lo0)的ip地址(框508),以将代理的数据路径链接到北-南(nbg-if、sbg-if)数据路径。然后分组被传递通过元监督器网络协议堆栈320,在那里它被递送到代理服务器340。

如果呈递分组不应当被代理的确定(决策框506),则处理前进到框510,其中l3钩子调用防火墙330来处理分组。然而,在防火墙进行处理前,分组方向被反转。由于分组是在nbg-if上接收的,防火墙执行处理以创建分组的外出状态(非进入),以使得对应的返回分组(sbg-if上的进入)与恰当的状态正确匹配。具体来说,在nbg-if上接收到的进入分组被转发到防火墙,就好像它们是nbg-if上的外出分组一样。然后分组的处理前进到决策框512,其中确定分组是否被标记(加密标签)为加密流的一部分。当元监督器透明地加密客户os网络通信量时,在nbg-if370上接收到的(未加密的)分组可以增长以包括额外的头部和尾部(例如封装安全有效负载(esp)头部和尾部)以及诸如完整性校验值和/或填充之类的附加数据。这样,如果分组针对加密被标记,则分组的处理前进到决策框513,其中呈递关于加密的分组是否将超过sbg-if的最大传输单元(mtu)的确定。

如果不是,则在框514处(透明地)对分组进行加密,并通过sbg-if360进行发送。然而,如果超过mtu,则在框515处将分组重写为路径mtu发现(pmtud)回复(分组)(按照ietf的rfc1191),并通过nbg-if370发送给客户os。在实施例中,sbg-if360和nbg-if370二者都具有相同的mtu,其定义允许通过接口发送的任何ip分组的最大长度。然而,注意,nbg-if的mtu可以可选地由客户os210降低以虑及计算机网络中的限制,从而最小化传输期间的ip分组的分段。sbg-if360的mtu可以由vmi提供的虚拟网络适配器的实现的物理或逻辑限制结合从网络(例如,使用dhcp)获得的mtu设置来确定。nbg-if370的mtu优选地被设置为与sbg-if360的mtu相匹配,以防止元监督器300必须为未加密的ip分组实现ip分组分段功能性。如果nbg-if370的mtu大于sbg-if360的mtu,则元监督器300可能需要对来自nbg-if370的分组进行分段,以使得它们可以适合于sbg-if360的更小mtu。类似地,如果nbg-if370的mtu小于sbg-if360的mtu,则元监督器300可能需要对来自sbg-if360的分组进行分段,使得它们可以适合于nbg-if370的mtu。

在给定nbg-if370的mtu的情况下,采取最大长度的未加密的ip分组可能作为加密的副作用会增长超过该最大长度,并且这样就不能通过sbg-if360发送。在这种情况下,元监督器300可以对加密的ip分组进行分段,并将其作为两个以太网帧/分组(其二者会基本上小于mtu)发送出去;然而,这样的分段会降低网络的效率并影响性能。为了防止透明加密的通信量的分段,元监督器300例示性地采用根据rfc1191的pmtud。当要对分组执行加密并且结果的(加密的)ip分组会超过sbg-if360的mtu时,元监督器向客户os210发送适当的icmp分组(例如,pmtud回复分组),从而向客户os通知针对该网络流要采取的重调尺寸的mtu以便防止(由于加密而造成的)分段。在接收到pmtud回复后,客户os210可以此后以较小的ip分组来重传数据。因此在不超过sbg-if360的mtu的情况下的透明加密是可能的。在透明加密以逐个流为基础发生并且pmtud目标针对特定网络流的情况下,客户os210能够针对未加密的通信量充分利用mtu,并针对元监督器透明加密的那些流采取更小的mtu(根据来自于元监督器300的pmtud信息)。

图6是例示了对元监督器的环回接口(lo0,即,具有保留的ip地址127.0.0.1)上的传出分组通信量进行处理600的流程图。重定向通信量的分组(请求)将ip头部中的它们的目的地ip地址重写为“本地主机”。回复分组将源ip地址和目的地ip地址互换,以使得回复来自本地主机并且去往sbg-if360的ip地址。注意,只有sbg-if具有ip地址。利用元监督器本地的目的地ip地址,元监督器网络协议堆栈320可将分组路由到环回接口lo0,其中l3钩子处理分组并将分组递送到nbg-if370。

因此,在决策框602处,l3钩子被调用以确定回复分组是否来源于本地主机(即,元监督器)。如果不是,则分组被传递到元监督器网络协议堆栈。如果回复分组来源于本地主机,则在框604处(例如,当vmi将多个sbg-if提供给元监督器时)使用目的地ip地址来定位sbg-if,并且在框606处获得对应的nbg-if。在实施例中,环回接口上的分组的第一头部是ip头部,因为不存在与环回接口相关联的链路层。因此,环回接口上的分组不具有链路层(以太网)头部,并且因而不具有源mac地址和目的地mac地址。由于没有网络协议堆栈检查进入分组的源mac地址,所以l3钩子创建全零的源mac地址。如果客户os需要使用源mac地址,则重定向的分组(请求)的目的地mac地址被放置在合成的以太网头部中(框608)作为回复分组的源mac地址。

有利的是,透明部署技术提供了钩子,其在确保将返回分组转发到正确的堆栈或外出接口的同时使得分组能够定向注入到正确的网络协议堆栈中或使得能够从堆栈接受分组。这样的定向处理部分地基于静态规则(即,硬编码的表达式),并且更一般地基于使用由防火墙创建的状态建立的流。例如,传递通过防火墙的分组按照查询的分组过滤规则进行处理。如果规则指示允许分组传递,则创建自动允许具有相同网络流的返回分组传递到客户os的标准状态。附加到这种标准防火墙状态的是附加状态(例如,标签),其通知钩子(或者更一般地,元监督器内核)标准状态是代表元监督器分组通信量(网络流)还是客户os通信量(网络流)而创建的。在钩子中查询此附加状态(例如,检查标签)以确定要将通信量发送到哪里,即,哪个网络堆栈。因此,静态逻辑(例如,用于arp)和防火墙状态(例如,用于ip、udp、tcp)的组合可用于辨别元监督器通信量(流)与客户os通信量(流)。

前面的描述涉及具体的实施例。然而,将显而易见的是,可以对所描述的实施例进行其它变更和修改,并获得它们的优点中的一些或全部。例如,可明确构想的是,本文描述的组件和/或元件可以被实现为编码在具有在计算机上执行的程序指令的有形(非暂时性)计算机可读介质(例如,盘、电子存储器和/或cd)上的软件、硬件、固件或其组合。因而,本说明书应仅通过示例的方式来理解,而不应以其它方式限制本文的实施例的范围。因此,所附权利要求的目的是覆盖如落入本文的实施例的真实精神和范围内的所有这样的变更和修改。

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