为软件定义网络,存储和计算执行操作的编译器和方法与流程

文档序号:11637161阅读:515来源:国知局
为软件定义网络,存储和计算执行操作的编译器和方法与流程

本发明涉及通信网络,存储设备和计算设备。这样的网络可以是分组交换或电路-交换。本发明特别涉及用于物理和虚拟网络里分组转发设备,计算设备,存储设备,虚拟交换机,虚拟机器和容器的配置方法。

背景资料

分组交换网络(psn)和计算领域的最新发展导致了软件定义网络(sdn)的概念。在本发明的内容里,我们把软件定义网络(sdn)当作为定义网络的高级规范(如,但不限于,高级编程语言或脚本语言)的能力和按此规范,通过一个自动过程指示相应的物理和虚拟网络,存储和计算资源。

最近的发展可以在wo2010115060“管理虚拟交换机的方法和设备”,和wo2012082988“网络交换机的配置方法”找到。

最近已经可能,使用一个开放式接口,通过一个标准化协议,根据所需要的转发行为,指示分组转发装置。目前领先的协议是openflow,但本发明并不限制或约束于openflow协议,而是本质上与其通用,并可以与提供给分组转发装置转发表的编程介入的未来协议共同工作。转发表包含的信息与传入分组和输入端口的信息匹配时,提供将分组转发出所需要的输出端口。

我们将称'分组转发设备'为'交换机'遍及本文档的其余部分,用于任何执行分组转发设备,不限于开放系统互连(osi)的第2层。除了转发功能,交换机可能对分组提供额外的(多个)操作,例如,但不限于,在转发分组到它一个或更多个输出端口前,进行监控和/或记录,和/或缓冲,和/或修改传入分组的包头和/或有效载荷。该交换机还可能不转发(阻止)分组。这些在除分组交换外,在分组上执行(多个)附加操作的器件,通常称为里间匣子,包括在本文档里使用的交换机定义。

最近,对在虚拟物理服务器上或容器里运行的虚似机里执行交换和里间匣子功能的兴趣在增长,典型地被称为网络功能虚拟化(nfv),允许更大的灵活性和敏捷性部署网络功能和降低成本的潜力。在本发明描述和专利要求的sdn编译器,应该有创建这些虚拟机或容器转发指令的能力。

往交换机分布这些转发表,通常是由所谓的“sdn控制器'完成的。sdn控制器功能是在一个集里的地方(实施通常冗余),由此里央指定的转发表分布到,网络里的典型地理分布的交换机间。此外,在sdn控制器在其北行接口提供了物理和/或虚拟网络资源的集里视图,例如交换机在网络里,他们的拓扑-通路结构,各个链接的状态。

以上所述sdn和传统的网络之间的一个重要区别在于:对于在网络里的交换机的转发表是以集里的方式来计算的,而不是传统的网络以分布式方式操作,这是基于大量不同的网络控制协议。这允许sdn网络用户(用户在最广泛的意义上:例如,但不限于网络运营商,it运营商,操作系统,应用程序,其它网络,其它sdn编译器)可以集中地指定网络的期望行为,大大增强对网络的控制。此外,随着云计算的引入,计算,存储和网络资源之间的紧密集成和集里控制,已经成为一种强制性要求。

目前,网络产业的重点是编程介入分组转发设备的转发表。为了创建网络,存储和计算之间的紧密集成,也有必要为物理主机,虚拟主机和物理第一个提供指令。例如。一台主机可以被指令在其哪个接口发送分组到特定目的节点。例如,一台主机可以被指令接受哪个分组和丢弃哪个。例如。一个网络接口卡(nic)可以被指令转发接受哪个分组和丢弃哪个。对软件定义网络,包括物理和虚拟网络,存储和计算资源需要一个全面的方法。

在计算领域已成为普遍的做法来虚拟物理服务器到一个或更多个虚拟机,从而导致上述的云计算。服务器虚拟化过程里产生物理计算资源的逻辑抽象。鉴于当今的计算机和网络之间的紧密集成,有必要开发一种用于物理和虚拟网络资源的逻辑抽象。

us2013/058215公开了一个虚拟器,用于管理通过一个网络转发数据的多个被管理的交换元件。虚拟器包括用于存储输入逻辑转发平面数据的一个第一组表和用于存储输出物理控制平面数据的一个第二组表。它还包括一个表映射引擎,用于通过在第一组表里的输入逻辑转发平面数据上执行一组数据库连接操作来将第一组表里的输入逻辑转发平面数据映射到第二组表里的物理控制平面数据。在一些实施例里,物理控制平面数据随后被转换成物理转发行为,其指导被管理的交换元件转发数据。在该现有技术文献里,被管理的交换机将该物理控制平面数据转换成物理转发平面数据指定被管理交换机的转发行为(参照[0197]),其缺点是对物理节点加于要求执行转换并在所述物理节点里使用资源。在us2013/044641提出的现有技术,是创建一个覆盖虚拟网络,在本申请里的术语一个逻辑网络,基于底层里的隧道,通常是基于ip的网络。这个方法的缺点是操作虚拟重叠网络和底层网络,使操作复杂。此外,现有技术的缺点,根据us2013/044641一个虚拟节点的模型,在本申请的术语一个逻辑节点,在一个物理节点之后,是基于网络元件的连续性配置操作和管理网络,而不是基于网络服务。

发明概要

本专利申请要求来自未预先公布的ep14185824.1,但已在2014年9月22日提出。

本专利申请要求来自未预先公布的ep14185825.8,但已在2014年9月22日提出。

本专利申请要求来自未预先公布的ep14186045.2,但已在2014年9月23日提出。

本专利申请要求来自未预先公布的ep14196330.6,但已在2014年12月4日提出。

与本申请同一发明者未预先公开的专利申请pct/ep2014/055640描述了用于上述计算和网络之间的紧密集成的方法和编译器,以及逻辑抽象物理和虚拟网络资源的需要。

因此,pct/ep2014/055640描述了用于翻译或编译一个高层次的网络规范到一组指令用于适当的物理和/或虚拟网络和/或计算资源的方法。这些指令陈述对传入的分组要执行的操作,如转发,接收,丢弃传入分组,以及如何从源节点发送分组。

在pct/ep2014/055640里所述的发明还涉及用于执行这个方法的sdn编译器的布置。

为了完成这一任务,sdn编译器保留了每个逻辑网络通过高层次的网络规范定义的模型。另外,在sdn编译保留了物理和/或虚拟网络和/或计算资源的模型。这两个模型以及它们之间的关系表示于一组关系,如矩阵。逻辑网络包括逻辑节点。每个逻辑源和逻辑目的节点之间的转发通路是通过执行于这些矩阵的操作,产生一个物理和虚拟资源附着点(points-of-attachments,poa)列表,确定的,(例如,但不限于以太网媒体接入控制(mac)地址))。上述相应的指令是从这些转发通路存储在矩阵导出的。上述方法允许在相同的物理和虚拟资源上定义和建立多个同时逻辑网络。

在pct/ep2014/055640里描述的方法可以适用于目前可用的基于openflow的产品,但并不限于openflow,并可能与提供分组转发装置转发表介入编程访问未来协议共同使用。所描述的方法可以用于目前广泛使用的附着点(poa)的识别符,如以太网mac地址。所描述的方法可以用于ipv4和ipv6的命名和分组的格式。

发明描述在pct/ep2014/055640,不需要任何物理节点转换,创建可直接用于对传入分组作出转发决定的转发项,允许实现较不复杂的转发硬件和软件转发。所描述的发明不需要底层网络,简化了操作,通过使用逻辑命名空间到物理网络资源编译逻辑网络。所描述的发明使用基于有向图的网络抽象,允许sdn编译器用户,基于声明性请求指定的网络服务,及容可一个实施和维护所述网络服务,简化操作,并允许指定,实施和维护复杂的网络服务的sdn编译器。

pct/ep2014/055640描述了一个sdn编译器方法,并且包括由特定的一个物理节点执行的操作的规范(pct/ep2014/055640图61i,245和246页;其它)。本发明通过特定的一个节点或网络和特定的一个边的组合执行的操作扩展了pct/ep2014/055640里提出的方法,允许sdn编译器的用户指定对特定的一个边执行的一个或更多个操作。

这里,“边”被定义为是一个有向图表示的整个网络的元素。这样的元素连接图里的两个相邻顶点(节点),并具有方向。当表示为有向图时,两个顶点之间的双向物理连接由两个边表示。这将在下面的说明附图里更详细地解释。

一个附加操作的示例是传递功能,将一个传入信号传送在节点里的一个传出信号。实例但不限于这样的信号是物理信号,一个分组或一个位。实例但不限于这样的传递功能是一个原子处理,一段计算机代码,改变传入信号或数字信号处理的物理过程。在目前的it(信息技术)部署里,一方面网络与另一方面存储和计算之间存在松散的耦合。因此,网络对应用程序的可见性有限,并且应用程序对网络可见性有限,导致it资源的次优性能。此外,网络运营商对应用程序的可见性有限,其要求和应用程序开发人员对网络功能的可见性有限,从而导致了次优的软件开发以及应用程序和网络操作。

本发明的一个目的是提供一个方法和一个编译器,其解决了上述提到的用于组合一个特定节点或网络和一个特定边的功能,允许增加网络可编程性。

因此,本发明提供了一个高级-网络规范,包括一个或更多个节点里在一个或更多个边上要执行的操作的翻译或编译到适当的物理和/或虚拟网络和/或存储和/或或计算资源的一组指令的方法,从而在网络,存储和计算的操作之间形成紧密耦合。

本发明还涉及被安排为执行这个方法的一个sdn编译器,以及包括指令和数据的一个计算机程序产品,其被安排为当由诸如这样的一个sdn编译器操作计算机设备时,使得当由诸如这样的sdn编译器的计算机设备操作时,安排该计算机设备执行的权利要求的方法。

为此,本发明提供了一个如在权利要求1所述的方法,以及权利要求里定义的在一个独立设备的一个编译器和一个计算机程序权利要求里的独立计算机程序产品的权利要求。本发明的另一个相关方面在权利要求16里要求保护。本发明的另一个相关方面在权利要求17里要求保护。

附图简述

本发明将参考一些附图详细地进行说明是仅旨在表明本发明的实施方案,而不是限制范围。本发明的范围在所附权利要求和其技术等同限定。即,本领域技术人员将理解用于解释本发明的特征,部件,元件等,除非另有说明,

可以用技术上的同等代替。此外,不同实施方案的单独的特征可以组合,即使在附图里没有明确表明或说明书里没有明确解释,除非这种组合在物理上是不可能的.

附图示出:

图1是一个软件定义网络的各种组件的描绘图

图2a是一个示出物理节点ba,bb,bc和bd功能的表示图

图2b是一个示出物理网络baa功能的表示图,包括通过链路互连的物理节点ba,bb,bc和bd。

图2c是一个示出物理网络baa功能的表示图,包括通过链路互连的物理节点ba,bb,bc和bd,其中一个物理节点和一个物理链路之间的互连是由一个物理附着点(poa)来表示,p101至p108,其中示出了物理链路在每个方向上的物理通路的成本。

图2d是一个图示出了一个有向图的表示的物理网络baa,包括由边互连的顶点(节点)ba,bb,bc和bd,其中一个顶点和一个边之间的互连是由一个物理附着点(poa)表示的,p101至p108,其中示出了各个边的成本

图3a是一个图示出了网络ka和kb和它们拓扑-映射的关系

图3b是是一个图示出了网络ka,kb,kc,kd和其映射的关系,为一个拓扑-映射或一个层-映射。

图3c示出了网络ka,kb,kc,kd,la,lb,lc,ld和其映射的关系,为一个拓扑-映射,一个层-映射或一个深度-映射。

图3d是是一个图示出了在深度h的网络的ka,kb,kc,kd,la,lb,lc,ld和它们的映射关系,以及在深度h+1的网络kaa,kcc,laa,lcc。在(d,n,h+1)的网络kaa包含两个在(d,n,h)的网络ka和kb。在(d,n+1,h+1)的网络kcc包含两个在(d,n+1,h)的网络kc和kd。在(d+1,n+1,h+1)的网络lcc包含两个在(d+1,n+1,h)的网络lc和ld。在图3c里所示出的节点ka和kd,kb和kc,la和ld,lb和lc之间的对角线层-映射在该图里被省略,以简化图。在图3c里所示出的节点ka和la,kb和la,kc和ld,kd和lc,ka和lc,kc和la,kb和ld,kd和lb的对角线层-映射在该图里被省略,以简化图。

图4a是一个图示出了在(d,n,h+2)的naaa网络包括在(d,n,h+1)的网络naa,ncc和nee。网络naa包括在(d,n,h)的网络na和nb。网络ncc包括在(d,n,h)的网络nc和nd。网络nee包括在(d,n,h)的网络ne和nf。图4a还示出了在(d,n,h)的网络之间的拓扑-映射。

图4b是一个图示出了在(d,n,h+2)的naaa网络包括在(d,n,h+1)的网络naa,ncc和nee。网络naa包括在(d,n,h)的网络na和nb。网络ncc包括在(d,n,h)的网络nc和nd。网络nee包括在(d,n,h)的网络ne和nf。图4b还示出了在(d,n,)的网络之间的层-映射以及在(d,n,h)的网络之间的拓扑-映射。

图5a是一个图示出了网络ka,kb,kc,kd,la,lb,lc,ld和网络ka和网络kb之间的拓扑-映射,网络ka和网络kc之间的一个层-映射,网络的kb和网络kd之间的一个层-映射,网络ka和网络la之间的一个深度-映射,网络kb和网络的lb之间的一个深度-映射,网络kc和网络的lc之间的一个深度-映射之间的一个深度-映射,以及网络kd和网络ld之间的一个深度-映射。另外,示出了拓扑-映射和层-映射的附着点(poa)。

图5b是一个图示出了网络ka,kb,kc,kd,la,lb,lc,ld和拓扑-映射,层-映射和深度-映射的命名。另外,示出了拓扑-映射和层-映射的附着点(poa)。

图5c是一个图示出了网络ka,kb,kc,kd,la,lb,lc,ld和计算并存储从网络的la到网络lb命名为l14的一个拓扑-映射为一个级联其由从网络la到网络ka命名为l12的一个深度-映射,从网络ka到网络kb命名为l11的一个拓扑-映射,从网络kb到网络lb命名为l13的深度-映射所组成,命名为l11拓扑-通路是从网络ka到网络kb命名为l11的一个单一拓扑-映射

图5d是一个图示出了网络ka,kb,kc,kd,la,lb,lc,ld和附加于图5c的是计算并存储从网络lc到网络la命名为l19的一个层-映射为一个级联其由从网络lc到网络kc命名为l17的一个深度-映射,从网络kc和网络ka命名为l7的一个层-映射,以及从网络ka和网络la命名为l15的一个深度-映射所组成和计算并存储从网络lb到网络ld命名为l20的一个层-映射为一个级联其由从网络lb到网络kb命名为l16的一个深度-映射,从网络kb和网络ld命名为l10的一个层-映射,以及从网络kd和网络ld命名为l18的一个深度-映射所组成。

图5e是一个图示出了网络ka,kb,kc,kd,la,lb,lc,ld和附加于图5d的是计算并存储从网络lc到网络ld命名为l22的一个拓扑-映射为一个级联其由从网络lc到网络la命名为l19的一个层-映射,从网络la和网络lb命名为l21的一个拓扑-通路,以及从网络lb和网络ld命名为l20的一个层-映射所组成,命名为l21的拓扑-通路是从网络la到网络lb命名为l14的一个单一拓扑-映射。

图5f是一个图示出了网络ka,kb,kc,kd,la,lb,lc,ld和附加于图5e的是计算并存储从网络lc到网络ld命名为l22的一个拓扑-通路为从网络lc到网络ld命名为l22的一个单一拓扑-映射。

图6a是一个图示出了用于从一个第一个网络到一个第二个网络的一个第一个映射-类型的一个第一个映射与一个第一个映射的命名的标数法。

图6b是一个图示出了用于从一个第二个网络到一个第三个网络的一个第二个映射-类型的一个第二个映射与一个第二个映射的命名的标数法。

图6c是一个图示出了用于一个第三个边-类型的一个第三个边与一个第三个边的命名,其为一个级联其由一个第一个边与一个第一个边的命名和一个第二个边与一个第二个边的命名所组成的表示法。

图6d是一个图示出了用于一个第三个边-类型的一个第三个边与一个第三个边的命名,其为一个级联其由一个第一个映射与一个第一组边-关系和一个第二个映射与一个第二组边-关系所组成的表示法。

图7a是一个图示出了拓扑-映射l5和l6,层-映射l7,l8,l9和l10以及深度-映射l12,l13,l15,l16,l17,l18,l24和l25。

图7b是一个图示出了拓扑-映射l14和l22,层-映射l19和l20和拓扑-通路l11,l21和l23。

图7c是一个图示出了在步骤1里的从网络lc到网络ld命名为l23的拓扑-通路和在步骤6里从网络的lc到网络ld命名为l23的拓扑-通路的递归-通路,步骤2至步骤5是计算的里间步骤。

图8是一个图示出了在(d=1,n=0,h=2)的逻辑网络naaa包含在(d=1,n=0,h=1)的逻辑网络naa,ncc和nee。逻辑网络naa包含在(d=1,n=0,h=1)的逻辑网络na和nb。网络ncc包含在(d=1,n=0,h=1)的逻辑网络nc和nd。逻辑网络nee包含在(d=1,n=0,h=1)的网络ne和nf。图8还示出了在(d=0,n=0,h=0)的物理网络qa,qb,qc,qd,qe和qf。图8还示出了拓扑-映射,深度-映射,级-映射和网络之间的拓扑-通路,以及每个拓扑-映射的命名,平映射和拓扑-通路和边-关系。

图9是一个图示出了sdn编译器装置的一个例子,包括一个数据库,一个事件处理程序和一个指令程序。图9还示出了一个用户和sdn控制器和一个sdn节点和51至61的消息流。

图10是计算机装置的概要

图11a示出了逻辑节点na,nb,ne,nf,拓扑-映射和拓扑-通路。图11a还示出了命名为“行动1”和“行动3”的操作

图11b示出了通过物理链路互连的,表示一个第三个计算设备的物理节点qa,表示一个第二个分组转发系统的物理节点qb,表示一个第三个分组转发系统的物理节点qc,表示一个第四个分组转发系统的物理节点qd,表示一个第五个分组转发系统的物理节点qe和表示一个第四个计算设备的物理节点qf。

图11c示出了物理节点qa,qb,qc,qd,qe,qf和逻辑节点na,nb,ne,nf,深度-映射,拓扑-映射和拓扑-通路。图11c还示出了节点qb可能执行一个命名为“行动1”的操作,节点qc可能执行一个命名为“行动2”的操作,节点qe可能执行命名为“行动3”和“行动4”的操作。

图11d示出了根据图6a的表示法命名为j1至j5的物理拓扑-映射以及命名为j6,j7,j8,j13,j14,j15的深度-映射。

图11e示出了根据图6c的表示法命名为j24,j28和j53以及命名为j54的拓扑-通路的拓扑-映射。

图11f示出了命名为j54的拓扑-通路的递归-通路

图11g是示出了从命名为j54的请求的拓扑-通路计算的递归-通路里的所有节点的,一个输入端口,一个输出端口,一组传入边-关系和传出一组边-关系。

图11h示出了一个第一个操作调用和一个第二个操作调用

图11i示出了j1到j5和j54的边的交换-标识符。

图11j示出了在(d=0,h=0)的网络,从被命名为j54的请求的拓扑-通路计算出的递归-通路里的物理节点qa,qb,qc,qd,qe,qf的转发指令包括输入端口,输出端口,一组传入边-关系以及在所述一组传入边-关系的每个边的交换-标识符,和一组传出边-关系以及在所述一组传出边-关系的每个边的交换-标识符以及一个将执行的附加操作。

图12a示出了通过物理链路互连的表示一个第五个计算设备的物理节点pa和pg,表示一个第六个分组转发系统的物理节点pb,表示一个第七个分组转发系统的物理节点pc,表示一个第八个分组转发系统的物理节点pd,表示一个第九个分组转发系统的物理节点pe和表示一个第六个计算设备的物理节点pf和ph。

图12b示出了物理节点pa,pb,pc,pd,pe,pf,pg,ph和逻辑节点ha,hb,he,hf,hg,hh,深度-映射,拓扑-映射和拓扑-通路。图12b还示出了节点pb可能执行命名为“行动5”的一个操作,节点pc可能执行命名为“行动6”的一个操作,节点pe可能执行命名为“行动7”和“行动8”的操作。

图12c示出了根据图6a的表示法命名为r1至r5的物理拓扑-映射,命名为r20和r21的层-映射以及命名为r6至r15的深度-映射。

图12d是示出了根据图6c的表示法,命名为r16,r17,r18,r24,r25的拓扑-映射,命名为r22和r23的层-映射和命名为r19和r25的拓扑-通路。

图12e示出了命名为r25的拓扑-通路的递归-通路

图12f示出了一个第三个操作调用和一个第四个操作调用

图12g示出了r1至r5,r19和r25的边的交换-标识符

图12h示出了从命名为r25的请求的拓扑-通路计算的递归-通路里的所有节点的一个输入端口,一个输出端口,一组传入边-关系和一组传出边-关系。

图12i示出了从(d=0,h=0)的网络,是命名为r25请求的拓扑-通路的转发指令计算的递归-通路里的物理节点pa,pb,pc,pd,pe,pf,pg,ph其包括一个输入端口,一个输出端口,一组传入边-关系,所述一组传入边-关系里的每个边的交换-标识符,和一组传出边-关系和所述一组传出边-关系里的每个边的交换-标识符,以及要执行的一个附加操作。

图13a示出了用于具有一个第四个边的命名的一个第四个边的表示法,第四个边是一个第四个边-类型,并且包括并行的一个第一个级联和一个第二个级联,如符号“&”表示。

图13b示出了逻辑节点ma,mb,mc,md,me,mf,mg和mh,命名为k21至k29的拓扑-映射和命名为k31的一个拓扑-通路。

图13c示出了根据图6c的表示法命名为k31的拓扑-通路。

图13d示出了根据图6c的表示法命名为k31的拓扑-通路。

图13e示出了逻辑节点ma,mb,mc,md,me,mg,mh和命名为k31的一个拓扑-通路。

图13f示出了操作调用,包括表示操作的操作命名,至少一个边,表示要执行所述操作的位置的节点。

图13g示出了操作调用,包括表示操作的操作命名,至少一个边,表示要执行所述操作的位置的一个节点。图13g还示出了所述操作的操作和数据,输入数据和输出数据之间的关系。

图14a示出了逻辑节点ma,mb,mc,md,me,mf,mg和mh,命名为k21至k29的拓扑-映射和命名为k32的拓扑-通路。

图14b示出了根据图6c的表示法命名为k32的拓扑-通路。

图14c示出了根据图6c的表示法命名为k32的拓扑-通路。

图14d示出了操作调用,包括表示一个操作的一个操作命名,至少一个边,表示要执行所述操作的位置的节点。图14d还示出了所述操作的输入数据和输出数据。

图15a示出了通过物理链接互连的,表示一个第三个计算设备的物理节点qa,表示一个第二个分组转发系统的物理节点qb,表示一个第三个分组转发系统的物理节点qc,表示一个第四个分组转发系统的物理节点qd,表示一个第五个分组转发系统的物理节点qe,表示一个第四个计算设备的物理节点qf,表示一个第六个分组转发系统的物理节点qh,表示一个第五个计算设备的物理节点qg。

图15b示出了物理节点qa,qb,qc,qd,qe,qf,qg,qh和逻辑节点ma,mb,mc,md,me,mf,mg,mh,深度-映射和拓扑-映射。

图15c示出了根据图6a的表示法命名为j1至j5和k6至k10的物理拓扑-映射。

图15d示出了根据图6a的表示法命名为k41至k58的深度-映射。

图15e示出了根据图6c的表示法命名为k21至k29的拓扑-映射。

图15f示出了命名为k31的拓扑-通路的递归-通路。

图15g示出了从命名为k31的请求的拓扑-通路计算出的递归-通路里的物理节点qa,qb,qc,qd,qe,qf,qg,qh和逻辑节点ma,mb,mc,md,me,mg,mh的一个输入端口,一个输出端口,一组传入边-关系,一组传出边-关系。图15g还示出了由一个操作命名表示的逻辑节点ma,mb,mc,md,me,mg,mh要执行的附加操作。

图15h示出了从命名为k31的请求的拓扑-通路计算的递归-通路里的物理节点qa,qb,qc,qd,qe,qf,qg,qh的一个输入端口,一个输出端口,一组传入边-关系,一组传出边-关系。图15h还示出了由一个操作命名表示的物理节点qa,qb,qd,qe,qf,qg,qh要执行的附加操作。

图15i示出了从命名为k31的请求的拓扑-通路计算的递归-通路里的物理节点qa,qb,qc,qd,qe,qf,qg,qh的一个输入端口,一个输出端口,一组传入边-关系,一组传出边-关系。图15i还示出了物理节点qa,qb,qd,qe,qf,qg,qh要执行的附加操作,输入数据和输出数据。

图16示出了从命名为k31的请求的拓扑-通路计算的递归-通路里的物理节点qa,qb,qc,qd,qe,qf,qg,qh要执行的伪代码。

图17a示出了在(d=1,n=0,h=0)的逻辑节点ma,mb,mc,md,me,mf,mg,mh,在(d=0,n=0,h=0)的未知物理节点?x1,?x2,?x3,?x4,?x5,?x6,?x7,?x8,?x9,命名为k21至k29的拓扑-映射,命名为l51至l68的深度-映射以及命名为?l71至?l80的未知物理拓扑-通路,表示为一个图里的有向边。在图17a里,问号表示未知物理节点和未知物理拓扑-通路。

图17b是按照图6a的表示法示出的命名为l51到l68的深度-映射。

图17c是根据图6c的表示法示出的拓扑-映射k21至k29。在图17c'?l71[拓扑-通路]'表示l71是未知拓扑-通路。

图17d示出了命名为k21的拓扑-映射。

图17e示出了k21至k29的拓扑-映射。

图17f示出了命名为k21到k29的拓扑-映射的物理实体,所述物理实体被用作一个搜索声明。

图17g示出了一个搜索声明。

图17h示出了命名为k21至k29的逻辑拓扑-映射的要求如何与命名为?l71到?l80的未知物理拓扑-通路的要求相关。

图17i示出了一个逻辑节点的要求如何与一个未知物理节点的要求相关,包括由一个操作命名指定的要求。

图18a示出了一个未知物理节点如何与一个物理节点相关。

图18b示出了一个未知物理拓扑-通路如何与一个物理拓扑-通路相关。

图18c是根据图6a的表示法示出的命名为l51至l68的深度-映射。

图18d根据图6c的表示法示出的拓扑-映射k21至k29。

图18e示出了命名为k31的拓扑-通路的递归-通路。

图19示出了命名为l5,l14和l22的网络ka,kb,kc,kd,la,lb,lc,ld和命名为l5,l14和l22的拓扑-映射,命名为l12,l13,l15,l16,l17和l18的深度-映射,命名为l7,l10,l19和l20的层-映射以及命名为l11,l21和l23的拓扑-通路以及边-关系。

图20a示出了通过作为物理链路的拓扑-映射连接的由物理节点ke表示的一个第一个物理设备,由物理节点kf表示的一个第二个物理设备和由物理节点kg表示的一个第三个物理设备,。图20a还示出了p301至p304的附着点(poa)。

图20b示出了在(d=0,n=0,h=0)的物理节点ke,表示一个第一个物理设备,在(d=0,n=0,h=0)的物理节点kf,表示一个第二个物理设备,在(d=0,n=0,h=0)的物理节点kg,表示一个第三个物理设备,在(d=1,n=1,h=0)的逻辑节点fe,ff和fg,在(d=1,n=2,h=0)的逻辑节点fh和fj以及在(d=1,n=3,h=0)的逻辑节点fk和fl。图20b还示出了命名为q1,q3,q19,q20,q24,q28的拓扑-映射,命名为q5至q14,q16,q17的深度-映射,命名为q22,q23,q26,q27和q51至q54的层-映射,以及命名为q21,q25,q29的拓扑-通路,表示为一个图里的有向边。

图20c示出了根据图6a的表示法命名为q1至q4的拓扑-映射,命名为q5至q18的深度-映射以及命名为q51至q58的层-映射。

图20d示出了根据图6c的表示法拓扑-映射q19,q20,q24,q28,命名为q22,q23,q26,q27的层-映射和命名为q21,q25,q29的拓扑-通路。

图20e示出了命名为q1,q3,q21,q25和q29的边的交换-标识符。

图20f示出了逻辑节点fe,ff和fg,命名为q19的拓扑-映射具有子网-标识符1:2:3:4/64,命名为q20的拓扑-映射具有子网标识符1:2:3:5/64和附着点(poa)11.11.11.10,11.11.11.11,11.11.11.12,11.11.11.13。

图20g示出了逻辑节点fk为一个用户代理具有逻辑名uri-1,和逻辑节点fl为一个原服务器具有逻辑名uri-2,命名为q28的拓扑-映射,和命名为q29的拓扑-通路表示'http请求1'。

图20h示出了从命名为q29的请求的拓扑-通路计算的递归-通路里的在(d=0,h=0)的网络为物理节点ke,kf和kg的转发指令包括一个输入端口,一个输出端口,相关的一组传入边-关系和所述相关的一组传入边-关系里的每个边的交换-标识符,和相关的一组传出边-关系和所述相关的一组传出边-关系里的每个边的交换-标识符。

图21a示出了逻辑节点fk具有逻辑名uri-1的一个用户代理,和逻辑节点fl具有逻辑名uri-2的一个原服务器,命名为q28的拓扑-映射,命名为q29的拓扑-通路表示“http请求1'和命名为q42的拓扑-通路表示“soap请求a”。

图21b示出了的逻辑节点fk具有逻辑名uri-1的一个用户代理,和逻辑节点fl具有逻辑名uri-2的一个原服务器,命名为q28的拓扑-映射,命名为q29的拓扑-通路表示'rest请求b'。

图22a示出了在(d=0,n=0,h=0)的物理节点ke,表示一个第一个物理设备,在(d=0,n=0,h=0)的物理节点kf,表示一个第二个物理设备,以及在(d=0,n=0,h=0)的物理节点kg,表示一个第三个物理设备,在(d=1,n=1,h=0)的逻辑节点fe,ff和fg,在(d=1,n=2,h=0)的逻辑节点fh和fj以及在(d=1,n=3,h=0)的逻辑节点fk和fl。图22a还示出了命名为q2,q4,q30,q31,q35,q39,的拓扑-映射,命名为q5至q15,q18的深度-映射,命名为q33,q34,q37,q38和q55至q58的层-映射,以及命名为q32,q36,q40拓扑-通路,表示为一个图里的有向边。

图22b示出了根据图6c的表示法拓扑-映射q30,q31,q35,q39,命名为q33,q34,q37,q38的层-映射和命名为q32,q36,q40,q41的拓扑-通路。

图22c示出了逻辑节点fk具有逻辑名uri-1的一个用户代理,和逻辑节点fl具有逻辑名uri-2的原服务器,命名为q28和q39的拓扑-映射,命名为q29的拓扑-通路表示“http请求1”,命名为q40的拓扑-通路表示“http响应1”。

图23a示出了在(d=0,n=0,h=0)的物理节点ke,表示一个第一个物理设备,在(d=0,n=0,h=0)的物理节点kf,表示一个第二个物理设备的,在(d=0,n=0,h=0)的物理节点kg,表示一个第三个物理设备,在(d=1,n=1,h=0)的逻辑节点fe,ff和fg,在(d=1,n=2,h=0)的逻辑节点fh和fj以及在(d=1,n=3,h=0)的逻辑节点fk和fl。图23a还示出了命名为q1,q3,q19,q20,q24,q28的拓扑-映射,,命名为q5到q14,q16,q17的深度-映射,命名为q22,q23,q26,q27和q51至q54的层-映射,以及命名为q21,q29的拓扑-通路,表示为一个图里的有向边。

图23b示出了在(d=0,n=0,h=0)的物理节点ke,表示一个第一个物理设备,在(d=0,n=0,h=0)的物理节点kf,表示一个第二个物理设备,在(d=0,n=0,h=0)的物理节点kg,表示一个第三个物理设备,在(d=1,n=1,h=0)的逻辑节点fe,ff和fg,在(d=1,n=2,h=0)的逻辑节点fh和fj以及在(d=1,n=3,h=0)的逻辑节点fk和fl。图23b还示出了命名为q1,q3,q19,q20的拓扑-映射,命名为q5到q14,q16,q17的深度-映射,命名为q22,q23,q26,q27和q51到q54的层-映射,以及命名为q21,q25,q29的拓扑-通路表示为一个图里的有向边。

图24a示出了物理节点kx,ky和逻辑节点la,lb,lc,ld和命名的拓扑-映射,层-映射和深度-映射。

图24b示出了物理节点kx,ky和逻辑节点la,lb,lc,ld和命名的拓扑-映射,层-映射和深度-映射。

图25是执行一个整个逻辑网络的一个迁移的方法的一个流程图。

图26a示出了物理节点qa,qb,qc,qd,qe,qf,qg,qh和逻辑节点ma,mb,mc,md,me,mf,mg,mh,深度-映射,拓扑-映射和缓冲内容b1至b16。

图26b示出了缓冲内容b1至b16,一个物理节点,一个附着点(poa)和一个缓冲类型。

图26c示出了命名为k31的拓扑-通路的递归-通路,包括缓冲内容b1至b16。

图26d示出了缓冲内容b1至b16,逻辑节点,拓扑-映射和缓冲类型。

图27a示出了通过物理链接互连的,表示一个第六计算设备的物理节点ra,表示一个第七个分组转发系统的物理节点rb,表示一个第八个分组转发系统的物理节点rc,表示一个第九个分组的物理节点rd转发系统,表示一个第七个计算设备的物理节点re,表示一个第十个分组转发系统的物理节点rf,表示一个第十一个分组转发系统的物理节点rg,和表示一个第八个计算设备物理节点rh。

图27b示出了物理节点ra,rb,rc,rd,re,rf,rg,rh和逻辑节点ma,mb,mc,md,me,mf,mg,mh,深度-映射和拓扑-映射。

图27c示出了根据图6a的表示法命名为s1至s10的物理拓扑-映射。

图27d示出了根据图6a的表示法命名为s21至s32的深度-映射。

图27e示出了根据图6c的表示法命名为k21至k29的拓扑-映射。

图27f示出了命名为k31的拓扑-通路的递归-通路包括缓冲内容b1至b16

图27g示出了缓冲内容b1至b16,一个物理节点,一个附着点(poa)和一个缓冲类型。

图28a示出了表示物理处理器的物理节点kp和kq,表示逻辑过程的逻辑节点lr和ls,深度-映射和拓扑-映射。

图28b示出了表示物理处理器的物理节点kp和kq,表示物理过程的物理节点kr和ks,表示逻辑过程的逻辑节点lr和ls,深度-映射,级别-映射和拓扑-映射。

发明的优选实施例的详细描述

非预公布的现有技术的pct/ep2014/055640描述了一个软件定义网络(sdn)的编译器的方法。以下所述方法的主要元件的概要说明。然而,应该注意的是在pct/ep2014/0055640已描述的所有特征也可在本发明里应用。还有pct/ep2014/0055640里描述的特征/实施例的组合,没有在此被明确描述,也是在本发明的范围内可能的实施例。因此,pct/ep2014/0055640的所有段落在下文通过参照的方式在本文件里并入。

如在上面给出的介绍里sdn的定义,导致了本发明至一个系统包含以下组件如图1里描述(参照pct/ep2014/055640图1,35页)。

1.一个用户在一个高层次网络规范里定义一个网络。

2.一个sdn编译器转换高层次网络规范成一组物理和虚拟网络以及计算资源的指令.

3.一个sdn控制器分配这组指令与物理和虚拟网络以及计算资源.

4.物理和虚拟联网以及计算资源在一个传入分组上按照收到的一组指令执行行动。在图1里,它们用术语“sdn节点”被表示。

在上面第1点提到的一个用户可能是,但不限于,一个人,一个网络管理系统,云计算管理系统,应用程序,另一个sdn编译器。这样,一个用户可以指“用户设备”,即,任何合适的计算机设备,如计算机工作站,可能是独立的或更大的网络的一部分。这样的计算机设备的一个例子示于图10和将在以下描述。

在图1里,从底部到顶部的方向,各个部件在北向接口上报告已执行的特定任务以及报告变化,统计信息和差错。

在第4点所提到的资源包括典型的组网和计算资源,但不限于:

·物理分组转发装置(如,但不限于,第2层交换机,第3层路由器,防火墙,深度分组检测设备,缓存节点,或其它类型的里间组件)。

·充当网络主机的物理设备,例如但不限于物理服务器,个人计算机,笔记本电脑,平板电脑,移动电话,

·物理网络接口卡(nic)

·虚拟物理服务器里的虚拟交换机,

·虚拟物理服务器里的虚拟机,

·虚拟网络接口卡(nic),

·支持ipv4的路由器,支持ipv6的路由器,mpls-交换机[mpls=多协议标签交换],应用程序过程提供的分组-交换,

·电路-交换节点作为一个例子,但不限于,光纤交叉-连接交叉连接光纤,远程光分/插多路复用器(roadm)或光交叉连接交叉连接光波长,同步数字系列(sdh)多路复用器或同步光网络(sonet)多路复用交叉连接时隙,

·os(操作系统)内核

·应用过程,

·物理或虚拟节点的输入缓冲和输出缓冲,

·存储设备,作为一个例子,但不限于,支持通过以太网的光纤通道(fcoe)支持通过ip的光纤通道(fcip)的存储设备,

·一个波分多路复用(wdm)的多路复用器,

在每个上述层次里的物理和/或虚拟节点是分组-交换或电路-交换节点,两者任一。对于这两者分组-交换节点以及电路-交换节点的一组指令是由sdn编译器创建的。在分组-交换节点的情况下,这些指令包括转发表项。在电路-交换节点的情况下,这些指令包括交叉连接的设置。

注意,以上提到的资源包括物理设备的组件,例如但不限于一个物理网络接口卡(nic)和整个物理设备,例如但不限于一个物理分组转发设备。因此,在第4点所指一组指令,可为一个物理设备的一个组件或为整个物理设备创建的。

注意,虚拟节点,代表虚拟资源诸如虚拟机在方法里表示为物理节点(参照pct/ep2014/055640186页)。

一个逻辑网络抽象的规范是由用户输入的“高层次网络规范“,并在上述第1点提及。理想的是,这规范指定任意的逻辑网络,其中包括在任意拓扑-通路里任意数量的逻辑节点,被映射到任意物理以及虚拟网络和计算资源的逻辑节点。多个逻辑网络可以被定义并在相同的物理以及虚拟网络和计算资源上同时创建。

上述第2点指的是“高层次网络规范翻译成一组网络和计算资源的指令”。在一个分组转发交换机的情况下,这些指令是交换机根据转发分组的转发表项。在一台主机的情况下,这些指令是哪些分组应该被接受或丢弃根据的过滤表项和到哪个输出端口发送始发于该主机节点到特定目的节点的分组的指令。在一个网络接口卡(nic)的情况下,这些指令是哪些分组应该被转发或丢弃根据的过滤器表项。上面提到的第2点提供了从一个高层次的网络规范到适当的物理和虚拟网络和计算资源的一组指令的翻译或编译。我们称这个过程为一个“sdn编译器“过程,类似计算里使用的编译器,翻译一个高层次的语言到层次指令。请注意,上述过程应当对两者物理以及虚拟网络和计算资源提供指令,而相比与所谓“重叠“虚拟网络(如提出的例如nicira/vmware),其基本上在物理网络之上创建一个虚拟隧道,除了在隧道入口和出口交换机外,没有配置物理交换机。所希望的sdn编译器的方法应该提供一个整体的方式既包括两者虚拟和物理资源,包括整个物理网络。此外,所希望的sdn编译方法还应该指示非交换网络设备,与上面提到的,所需的指令。此外,由于当前的openflow的实现提供在软件(例如openvswitch提供在一个虚拟物理服务器里运行的一个虚拟交换机),以及在硬件(例如necprogrammableflowpf5240交换机),有必要确定跨越虚拟和物理网络和计算资源的前述指令。在一个实现里,“sdn编译器“的功能,或至少一部分功能,和“sdn控制器”的功能,或至少一部分功能,可以合并成一个单一的系统。

现在,我们首先将描述物理和虚拟资源,为其sdn编译器使用功能表示法创建相应的指令。图2a,2b,2c和2d(参照pct/ep2014/05564037页图2a,2b,2f,2g)描绘了一个物理网络的组成部分。物理节点的例子在图2a示出和其被认为在其上创建逻辑网络的物理资源。作为物理节点(在图2abd至ba)的命名是只是用于识别物理资源,而不是用于在决策任何转发。如在图2b里所描述的,我们定义一个物理网络(在图2b标识为baa)是物理节点的集合。物理节点通过物理链路(由实线表示)相互连接的。

一个物理链路是双向的情况下,一个物理链路在一对物理节点之间创建一对邻接,每个方向一个邻接。一个物理链路是单向的情况下,一个物理链路在一对物理节点之间创建一个邻接,一个方向的一个邻接。该物理链路可以是任何物理介质,包括但不限于,光纤电缆,铜电缆,空气。物理链路也可以是由其它的网络技术提供的通路,例如但不限于光波长,时分多路复用(tdm)电路,多协议标签交换(mpls)。一组物理节点与一组物理链路的组合确定网络的物理拓扑-通路。物理网络可以包含任意数量的节点,具有任意链路,导致于一个任意拓扑-通路。

一个典型的物理网络示出在图2c,示出了物理网络baa以及ba至bd的物理节点。如在图2c里所描述,物理节点和物理链路之间的接口被称为物理附着点(poa),为p101至p108表示。一个典型的附着点(poa)的标识符的例子是在目前部署的网络的以太网媒体接入控制(mac)的地址,但我们的发明并不限于此。附着点(poa)的标识符在sdn的控制下的网络集合里必须是独特的。附着点(poa)识别两者,一个节点的“输入端口”当节点接收分组或信号时以及一个节点的“输出端口”当节点发送分组或信号时。如在图2c里所描绘的,每个物理链路具有一个或更多个成本类型和在每个方向的每个成本类型相关的(多个)成本值。在物理网络里使用的一个典型的成本类型是链路延迟,其中通常以毫秒表示的成本值,但任何类型的成本,可以使用表示所述链路的属性。每个双向物理链路具有两个成本值,每个方向一个。每个单向物理链路的成本类型具有一个成本值。在特定方向的物理链路的成本值示出了起源分组在那个特定方向最靠近的物理节点。例如,从ba至bb的链路有一个为1的成本值。从bb到ba的链路有一个为3的成本值。在单播网络的情况下,当一个物理链路表示一对物理节点之间的邻接-关系(多个),一个物理通路表示从一个物理源节点到一个物理目的节点,一个分组或信号的一个物理路由,.在多播或广播网络的情况下,单一的物理源节点和多个物理目的节点之间有一个物理-通路的关系。然后,一个物理节点通过深度-映射映射到多于一个的逻辑节点导致多播。物理-通路可以在每个方向有多个成本类型,通常一个成本值等于在特定的方向的物理-链路包括的特定成本类型的成本值的总和。一个物理-通路是分组从源节点到目的节点通过的物理附着点(poa)的序列。“通路”另一选择术语是“流”,例如在openflow的规范使用术语“流“(flow)。

我们也可以用一个有向图作为网络代表。所述有向图可被加权。图2d给出网络baa的有向图,示出顶点(节点)ba到bd与连接顶点的有向边。在图2d里,“边”,是用箭头连接一个顶点与另外一个顶点来表示,其中箭头方向表示数据流的方向。当作为一个有向图来表示,两个顶点之间的双向物理链路是由两个边来表示的。每个边对应于一个邻接。

pct/ep2014/055640(39,41,42页)根据术语通常用法描述了属性属于一个物理交换节点,一个物理主机节点,一个物理网卡(nic),一个虚拟交换节点和一个虚拟主机节点。一个例子是,但不限于,一个主节点是计算设备或一个存储设备(参照pct/ep2014/055640155和204页)。

到现在为止,我们提供了物理和虚拟网络以及计算资源的功能模型。现在,以说明本发明,我们认为,一个高层次规范可以定义一个逻辑网络并且独立于物理和虚拟资源。

逻辑网络是通过指定定义的:

1.逻辑网络的命名

2.其中逻辑网络包括的逻辑节点命名

3.逻辑节点之间的邻接

4.逻辑网络里的一个或更多个成本类型

5.逻辑节点之间的逻辑邻接的每个成本类型的成本(多数)

6.逻辑网络的转发策略

7.从物理和/或虚拟节点到逻辑节点的映射

成本类型和值表示链接的属性,并且可以被用为确定一个转发策略。

如上所述的物理和/或虚拟节点被映射到逻辑节点,使用一个1:1,1:n或n:1映射,如下:

‐1:1物理到逻辑映射

‐1:n物理到逻辑映射

‐n:1物理到逻辑映射

‐1:1虚拟到逻辑映射

‐1:n虚拟逻辑映射

‐n:1虚拟到逻辑映射

‐n:1物理和虚拟到逻辑映射

如上所述,在这方法虚拟节点被表示为物理节点(参照pct/ep2014/055640186页),以减少上面的映射:

‐1:1物理到逻辑映射

‐1:n物理到逻辑映射

‐n:1物理到逻辑映射

逻辑节点的功能表示为虚线圆圈,如图3c里描绘。一个物理/虚拟到逻辑映射可以具有一个可选地成本值用于映射的每个方向。

sdn编译器的一个用户定义逻辑网络。用户可以是,但不限于,一个人,一个网络管理系统,一个云管理系统,一个应用程序,另一个sdn编译器。逻辑网络可以包含任意数量的逻辑节点,具有任意逻辑邻接,导致任意的逻辑拓扑-通路。作为一个例子逻辑网络可以被指定为在一个高层次编程语言里的图,其中逻辑节点映射与物理和/或虚拟节点为每个逻辑节点的属性。

对于逻辑节点,我们使用一个独立于物理和虚拟资源的命名空间的逻辑命名空间。逻辑网络现在可以被定义在逻辑节点方面,其可以以任何适当的形式的任何适当的数目的独特字符来表示,并根据需要被映射到相应的虚拟和物理资源。通过改变该映射,逻辑网络可以重新映射到其它虚拟和物理资源。

1:n物理到逻辑映射允许命名一个物理资源为多个逻辑命名。

1:n虚拟到逻辑映射允许命名一个虚拟资源与多个逻辑命名。请注意,逻辑网络是独立于物理网络和虚拟资源,当然具有物理和虚拟资源之间存在一个通路的约束,因此提供了物理网络和虚拟资源的抽象。

逻辑节点命名被使用于转发决定(参照pct/ep2014/05564047页)。请注意,逻辑节点是本身被命名,而不是它的接口。在与物理网络类比,我们定义一个逻辑网络是逻辑节点的集合。逻辑节点通过逻辑链接(由实线表示)相互连接的。在一个逻辑链路是双向的情况下,一个逻辑链路创建一对逻辑节点之间的一对邻接。在一个逻辑链路是单向的情况下,逻辑链路创建一对物理节点之间的单一邻接。一组逻辑节点与一组逻辑链路的组合确定网络的逻辑拓扑-通路。在单播网络的情况下,当逻辑链路表示一对逻辑节点之间的邻接-关系(多个),一个逻辑通路表示一个分组跟随的从逻辑源节点到逻辑目的节点的逻辑路线。在多播或广播网络的情况下,单一的逻辑源节点和多个逻辑目的节点之间有一个逻辑通路的关系。一个逻辑通路是分组从逻辑源节点到逻辑目的节点通过的物理附着点(poa)和/或虚似附着点(poa)的一个序列。在这里,我们到达一个重要的关系:逻辑源和逻辑目的节点与用于在物理和虚拟附着点(poa)方面描写的一个通路的关系。这将允许我们用逻辑节点命名定义一个网络和翻译(编译)所定义的网络到为物理和/或虚拟网络和/或计算资源的在物理和/或虚拟附着点(poa)方面的指令。

一个逻辑网络可以创建于一个物理网络,一个虚拟网络或一个物理/虚拟网络的组合(参照pct/ep2014/05564093页)。另外,一个逻辑网络可以创建于另一个逻辑网络。为了避免任何含糊,以下我们将指在深度d的一个网络是创建于在深度(d-1)的一个网络。我们指在一个特定深度为深度d,其中d是一个从0(零)开始的正整数。到目前为止,称深度d=0是等于一个物理或虚拟网络。到目前为止称深度d>=1等于一个逻辑网络。组合的物理和虚拟网络是由一个或更多个层组成(参照pct/ep2014/05564091页)。在每一层的节点可以通过物理和/或虚拟链路互连。物理链路可以是任何物理介质,包括但不限于,光纤电缆,铜电缆,空气。物理链路也可以是由其它的网络技术提供的通路,例如但不限于光波长,时分多路复用(tdm)电路,一个多协议标签交换(mpls)。物理链路也可以是由其它的网络技术提供的一个隧道,例如但限于一个gre隧道[gre=通用路由封装],nvgre-隧道[nvgre=网络虚拟化使用通用路由封装],vxlan隧道[vxlan=虚拟可扩展局域网。虚拟链路可以是一个虚拟连接,包括但不限于虚拟交换机和虚拟机之间的虚拟链路,虚拟机之间的虚拟链路,网络套接字之间的虚拟链路。一个层可能提供服务到一个更高层,并可能从一个低层消费服务。最低分组-交换层提供用于媒体-访问控制(mac)。一个逻辑网络包括一个或更多个层。

我们指一个特定的层作为层n,其中n是一个从n_min开始的正整数并可具有0(零)值。我们指层n=n_min(d)为在深度d的“最底层”。(参照pct/ep2014/05564093页和141页)。层在当前的网络的实例是,但不限于,物理介质层,频率或波长-分割多路复用层,时分多路复用层,数据链路层,网络层,传输层,应用层。在一个整体网络内一个层n为层(n+1)提供服务和(n+1)消耗由层n所提供的服务。

每一层是由具有层次结构的任意数量级别的任意数量子网络组成的。一个网络可以被抽象为一个节点,以及可以成为另一个网络里的一个节点。作为一个例子,但不限于,网络baa,如图2c里所示,可以被抽象到在一个网络的网络里的一个节点。为了避免任何混淆,此后我们将引用一个网络在级别h包括在级别(h-1)的网络,并考虑在深度d和层n的最低级别为h_min(d,n)(参照pct/ep2014/05564093页和146页)。

一个在级别h_min(d,n)的网络是一个节点。这适用于物理网络和逻辑网络。使用此术语,在级别h的物理网络baa,如图2d所示,由物理网络ba,bb,bc,bd在级别(h-1)组成。

以上是在图3a至3d所示(参照pct/ep2014/055640图33a,33b,33c,34a,94页)。图3a描绘了网络ka和网络kb是在同个级别h,并通过一个链路互连。如在图3a所示,网络ka和网络kb也可以相互连接到其它网络。网络之间的关系被称为映射。为了对将要被介绍的各种映射一致的命名,我们将参照一个拓扑-映射,而不是以下造型里的一个链接的一个邻接。在链路是双向的情况下,一个链接创建在一对网络之间的一对拓扑-映射。在链接是单向的情况下,一个链接创建一对网络之间的单个拓扑-映射。拓扑-映射是从一个第一个网络到第二个网络的映射,第一个和第二个网络是在相同深度d和相同层n和相同级别h(参照pct/ep2014/055640图49,179页)

图3b描述了网络ka,kb,kc,kd处于相同级别h。网络ka和kb通过链路被互连,表示为一个拓扑-映射。网络ka和kc通过链路被互连,表示为一个层-映射。网络的kb和kc通过链路被互连,表示为一个层-映射。一个层-映射是一个从第一个网络到第二个网络的映射,第一个和第二个网络在不同的层n。

在图3c里网络ka、kb、kc、kd,la、lb、lc、ld被示出。在这图里每个网络具有相同的级别h,假如层次结构级别在h=0开始,图3c里一个网络在h=0相当于到目前为止称的一个“节点”,假如h=1图3c里一个网络相当于一个“节点的网络”参照于下文,假如h=2图3里网络相当于一个“节点的网络的网络“参照于下文,等等。每个网络位于一个特定的深度d和层n。当网络ka和kb在深度d,层n,网络kc和kd在深度d层(n+1),网络la和lb在深度(d+1),层n,网络lc和ld在深度(d+1)、层(n+1)。

在特定级别h我们区分3个类型网络之间的映射(参照pct/ep2014/05564094,128和129页):

-拓扑-映射是具有相同深度d和层n网络之间的邻接。请注意,邻接是一个映射。我们定义拓扑-映射为从一个在(d,n,h)到另一个在(d,n,h)的网络的映射。图3a仅示出两个网络(kaandkb,kcandkd,laandlb,lcandld)之间的拓扑-映射,因我们的例证限制在3-维。一般来说拓扑-映射可以存在任意数量网络之间,并且通常呈现为2-维布局并被这里介绍的sdn编译方法支持。拓扑-通路-映射被示为实线。物理到虚拟映射是物理和虚拟节点之间的一种特殊类型的拓扑-映射。

-层-映射是在不同的层n和相同的深度d网络之间的关系。我们定义层-映射为从一个在(d,n,h)的网络到另一个在(d,n-y,h)的网络的映射,或从一个在(d,n-y,h)的网络到另一个在(d,n,h)的网络的映射,其中y是大于零和小于或等于n-n_min(d),n_min(d)作为在深度d处的最下层。层-映射被示出为条纹。

-深度-映射是在不同的深度d的网络之间的关系。我们定义一个深度-映射为从一个在(d,n1,h)的网络到另一个在(d-x,n2,h)的网络的映射,或从一个在(d-x,n1,h)的网络到另一个在(d,n2,h)的网络的映射,其中x是大于零和小于或等于d,其中n1可以等于n2。深度-映射被示出为虚线。

一个物理节点的功能的表示为带有实心圆的圆圈,如图3a所描绘。一个逻辑节点的功能的表示为虚线圆,如图3a所描绘。图3a里没有示出在网络ka和网络ld之间,网络的kb和网络的lc之间,网络kc和网络的lb之间,网络kd和网络的la之间的深度-映射,以保持该图比较简单。图3a示出了只连接到一个网络ka,kb,kc,kd,la,lb,lc或ld以及在另一端是与‘...‘为开放式的拓扑-通路-,层-,深度-映射。这些层-映射说明了层-映射可以扩展到一个任意数字的层(次)。仅连接到单个网络的深度-映射说明深度-映射可以扩展到一个任意数字的深(处)。在级别h仅连接到单个网络的拓扑-映射描绘了在级别(h+1)的拓扑-映射,这将要以下解释。

在不同级别的网络之间我们认为级别-映射是:

-级别-映射是在同一深度d和同一层n但不同级别的网络之间的关系。我们定义一个级别-映射为从一个在(d,n,h)的网络到一个在(d,n,h-z)的网络的映射或从一个在(d,n,h-z)的网络到一个在(d,n,h)的网络的映射,其中z大于零和小于或等于h-h_min(d,n),h_min(d,n)是在深度d和层n的最低级别。我们将参照在深度d=0,层n,级别h=h_min(d,n),为一个网络,而不是一个物理节点。我们将参照在深度d>=1,层n,级别h=h_min(d,n)为一个网络,而不是一个逻辑节点。

图3d示出了一个级别-映射。图3d示出了在级别h的网络ka,kb,kc,kd,la,lb,lc,ld和它们的拓扑-映射,层-映射和深度-映射的关系。被示于图3c里节点ka和kd,kb和kc,la和ld,lb和lc之间的对角线层-映射在此图里被省略,以简化该图。在图3c示出的节点ka和la,kb和la,kc和ld,kd和lc,ka和lc,kc和la,kb和ld,kd和lb之间的对角线深度-映射在此图里被省略,以简化该图。图3d还示出了在级别(h+1)的网络kaa,kcc,laa,lcc。在(d,n,h+1)的网络kaa包含两个都在(d,n,h)的网络ka和kb,换句话说,网络kaa是通过一个级别-映射映射到网络ka和kb的。在(d,n+1,h+1)的网络kcc里包含两个都在(d,n+1,h)的网络kc和kd,换句话说,kcc是通过级别-映射映射到网络kc和kd的。在(d+1,n,h+1)的网络laa包含两个都在(d+1,n,h)的网络la和lb,换句话说,网络laa是通过级别-映射映射到网络la和lb的,在(d+1,n+1,h+1)的网络lcc包含两个都在(d+1,n+1,h)的网络lc和ld的,换句话说,网络lcc是通过级别-映射映射到网络lc和ld的。

图4a示出了一个级别-映射(参照pct/ep2014/055640图42a和42,146页)。图4a示出在(d,n,h+2)包括在(d,n,h+1)的网络naa,ncc和nee的网络naaa。网络naa包括在(d,n,h)的网络na和nb。网络ncc包括在(d,n,h)的网络nc和nd。网络nee包括在(d,n,h)的网络ne和nf。图4a还示出了在(d,n,h)的网络之间的拓扑-映射。图4b示出了图4a的网络naaa,naa,ncc,nee,na,nb,nc,nd,ne和nf通过在(d=1,n=0)的网络之间的级别-映射为另一选择的表示。作为一个例子,在(d=1,n=0,h=2)的网络naaa包括在(d=1,n=0,h=1)的网络naa,ncc和nee。因此,示出了一个网络naaa和网络naa之间的级别-映射,一个网络naaa和网络ncc之间的级别-映射并且一个网络naaa和网络nee之间的级别-映射。注意,在这个方式里一个作为层次图的层次网,被表示为一个非层次图。从一个第一个网络到一个第二个网络的拓扑-映射,层-映射,深度-映射或级别-映射可以是1:1,1:n或n:1映射(第一网络:第二网络),(参照pct/ep2014/05564096页)。

为了使提出的方法可扩展,我们在网络和以下形式节点的逻辑命名引进层次(参照pct/ep2014/05564080页):

.....网络-的-网络-的-网络.网络-的-网络.网络.节点。“.”

符号分隔包括的不同元素的逻辑命名。我们指网络-的-网络-的-网络为nonon以及网络-的-网络为non。

以上命名结构引入以递归方式的层次:

‐一个网络是节点的一个集合

‐一个non是网络的一个集合

‐一个nonon是non的一个集合

‐等等,如由在以上“.....”定义的命名形式使用。

这在网络里创建的层次等级是任意数量的,显然在部署是限于实际约束。

使用上述结构的一个节点是由位于:

.....网络-的-网络-的-网络.网络-的-网络.网络.节点

同样,一个网络位于:

.....网络-的-网络-的-网络.网络-的-网络.网络

同样,nons位于由:

.....网络-的-网络-的-网络.网络-的-网络(non)

等等,为层次结构里各个层次。

注意,每个点的符号“.”表示一个级别-映射(参照pct/ep2014/055640119页),因此地址结构完全遵循一个网络的层次结构,按级别-映射的表示。注意,一个物理网络里可以使用层次命名。

我们现在扩展地址到以下形式:

.....网络-的-网络-的-网络.网络-的-网络.网络.节点.子-识别符1.子-识别符2.....

“.....网络-的-网络-的-网络.网络-的-网络.网络”里的每个点符号“.”表示一个级别-映射和,“子-识别符1.子-识别符2.....”里的每个点符号“.”表示一个层-映射。在“网络-的-网络-的-网络”之前的“.....”识别了层次命名可扩展到任意数字的级别。在“子-识别符2“之后的“.....”识别了地址可包括到任意数字的层。一个子-标识符是一个节点。在层n的一个子-标识符提供一个服务到层(n+1)。一个例子,但不限于这样一个服务是一个多路复用的服务。使用这个方法各种层的逻辑命名可以组合成一个单一的逻辑地址空间。这使得有可能使用逻辑地址-空间跨越多个层实行转发。这提供了一个层次网络里里通过它的地址定位节点的办法。此外,上述方法抽象每个网络到在命名层次里它特定的级别的一个节点。例如。一个non包括一个有网络与网络之间的邻接关系的网络的集合,以同样的方式,一个网络包含有节点之间邻接关系的节点的一个集合。

一个拓扑-通路是拓扑-映射的一个级联(参照pct/ep2014/055640174页)。一个第一个拓扑-通路可以包括一个第二个拓扑-通路,创建一个第一个拓扑-通路和第二个拓扑-通路的一个嵌套。一个拓扑-通路可以使用以下方法创建:创建并存储从在(d,n,h)的一个第一个网络到在(d,n,h)的一个第二个网路的拓扑-映射为一个级联其由在(d,n,h)的零或更多个拓扑-映射和零或更多个在(d,n,h)的拓扑-通路所组成,所述拓扑-映射的数量和所述拓扑-通路的数量是这样的,它们的总和至少是一。这个方法被称为计算拓扑-通路的方法,(参照pct/ep2014/055640181,182页)。注意,一个级联其由一个拓扑-映射所组成是指一种情况,其中,所述从在(d,n,h)的一个第一个网络到一个在(d,n,h)的第二个网络的所述拓扑-通路包括一个单个的拓扑-映射。术语“一个级联其由一个所组成”用于避免或-声明以保持描述相对简单。

我们定义一个级别-通路为一个级联其由级别-映射所组成(参照pct/ep2014/055640146页),一个第一个级别-通路可以包括一个第二个级别-通路,创建一个嵌套由第一个级别-通路和第二个级别-通路所组成(参照pct/ep2014/055640174页)。以下方法可以使用创建级别-通路:计算并存储一个从在(d,n,h1)的一个第一个网络到在(d,n,h2)的一个第二个网络的级别-通路为一个级联其由在(d,n)的零或更多个级别-映射和在(d,n)的零或更多个级别-通路所组成,所述级别-映射的数量和所述级别-通路的数量的总和是至少一。这个方法被称为计算级别-通路的方法。我们指一个级别-通路为其转发项作为被一个用户请求的一个请求的级别-通路。

作为一个或更多个拓扑-通路和一个或更多个级别-通路可以级联,我们指一个从在(d,n,h1)的一个第一个网络到在(d,n,h2)的一个第二个网络的拓扑-级别-通路为一个级联其由在(d,n)的零或更多个拓扑-通路的和在(d,n)的零或更多个拓扑-级别-通路所组成,所述拓扑-通路的数量和所述的零或更多个拓扑-级别-通路的数量的总和是至少一。这个方法被称为计算拓扑-级别-通路的方法.注意,一个第一个拓扑-级别-通路可包含一个第二个拓扑-级别-通路,创建所述第一个拓扑-级别-通路的嵌套和第二个拓扑-级别-通路。注意,一个第一个拓扑-级别-通路可以是一个单一的拓扑-通路拓扑-通路或一个单一的级别。

我们指的一个拓扑-通路,级别-通路和拓扑-级别-通路是为其请求的转发项分别作为请求的拓扑-通路,请求的级别-通路和请求的拓扑-级别-通路(参照pct/ep2014/055640182页)。作为一个例子,但不限于,一个请求的拓扑-通路可能是由一个sdn控制器,一个物理节点,一个sdn编译的一个用户请求的。这样的要求可能是一个主动的通路-实例或一个反应的通路-实例。我们指一个拓扑-映射,深度-映射,层-映射,级别-映射,拓扑-通路,级别-通路和拓扑-级别-通路为边。

注意,作为一个例子,但不限于,一个拓扑-级别-通路可以包括一个单个拓扑-通路,一个单个级别-通路,一个单个拓扑-映射或一个单个级别-映射。

一个拓扑-映射可以使用下列任何方法创建:

一个第一个用于计算一个拓扑-映射的方法,包括以下行动:

计算和存储从在(d,n1,h)的一个第一个网络到在(d,n1,h)的一个第二个网络的拓扑-映射为一个级联其由从所述第一个网络到在(d-x,n2,h)的一个第三个网络的一个深度-映射,从所述第三个网络到在(d-x,n2,h)的一个第四个网络的一个拓扑-级别-通路和从所述第四个网络到所述第二个网络的深度-映射所组成,其中x是大于零和小于或等于d,其中n1也许等于n2,

第二个用于计算一个拓扑-映射的方法,包括以下行动:

计算和存储从在(d,n,h)的一个第一个网络到在(d,n,h)的一个第二个网络的一个拓扑-映射为一个级联其由从所述第一个网络到在(d,n-y,h)的一个第三个网络的一个层-映射,从所述第三个网络到在(d,n-y,h)的一个第四个网络的一个拓扑-级别-通路以及从所述第四个网络到所述第二个网络的一个层-映射所组成,其中y是大于零和小于或等于n-n_min(d),n_min(d)是在特定深度d的一个最底层和n_min(d)为=>0。

第三个用于计算一个拓扑-映射的方法,包括以下行动:

计算和存储从在(d,n,h)的一个第一个网络到在(d,n,h)的一个第二个网络的拓扑-映射为一个级联其由从第一个网络到在(d,n,h-z)一个第三个网络的一个或更多个级别降低的级别-映射,从第三个网络到在(d,n,h-z)的一个第四个网络的拓扑-通路以及从第四个网络到第二个网络在级别增高的一个或更多个级别-映射所组成,其中z是大于零和小于或等于h-h_min,h_min是在深度的和层n的最低级别。

第一个方法和第二个方法使用的拓扑-级别-通路用于计算一个拓扑-映射可以是一个拓扑-级别-通路,一个拓扑-通路或一个级别-通路,作为一个拓扑-级别-通路可以包括一个单个拓扑-通路和一个拓扑-级别-通路可以包括一个单一级别-通路。当创建一个拓扑-映射在计算拓扑-映射使用的拓扑-级别-通路可以是一个明确创建的拓扑-级别-通路或者可以是由拓扑-映射和级别-映射所组成的级联。

一个层-映射可以使用任何以下方法来创建:

第一个用于计算一个层-映射的方法,包括以下行动:

计算和存储从在(d,n1,h)的一个第一个网络到在(d,n1-y,h)的一个第二个网络的一个层-映射为一个级联其由从所述第一个网络到在(d-x,n2,h)的一个第三个网络的一个深度-映射,从所述第三个网络到在(d=0,n2-y,h4)的一个第四个网络的零或更多个层-映射以及从所述第四个网络到所述第二个网络的一个深度-映射所组成,其中x大于零和小于或等于d,其中y大于零和小于或等于n1-n1_min和小于或等于n2-n2_min和小于或等于n2-n2_min,n1_min是在深度d的最低层,n2_min是在深度d-x的最低层,

第二个用于计算一个层-映射的方法,包括以下行动:

计算和存储从在(d,n1,h)的一个第一个网络到在(d,n1+y,h)的一个第二个网络的一个层-映射为一个级联其由从所述第一个网络到一个在(d-x,n2,h)的第三个网络的一个深度-映射,从所述第三个网络到一个在(d-x,n2+y,h)的第四个网络的零或更多个层-映射以及从所述第四个网络到所述第二个网络的一个深度-映射所组成,其中x大于零和小于或等于d,其中y大于零且小于或等于n1_max-n1和小于或等于n2_max-n2,n1_max是在深度d的最高层,n2_max是在深度d-x.的最高层,

注意,在计算层-映射的第一个方法里,在第三个和第四个网络可以是在(d-x,n2,h)或在(d-x,n2-y,h)的同一个网络。注意,在计算层-映射的第一个方法里,第三个和第四个网络可以是在(d-x,n2,h)或在(d-x,n2+y,h)的同一个网络。注意,从在层n的一个第一个节点到在层(n-1)的一个第二节点的层-映射其次是一个拓扑-映射的结果是一个多路复用行动,诸如例如但不限于在节点ka(参照pct/ep2014/055640236页)。因此,当提供在组件层次而不是设备层次的转发项时,sdn编译器应该注意物理节点的多路复用和解多路复用功能。作为一个例子,但不限于,多路复用和解多路复用功能可以由一个网元管理系统(ems)提供给sdn编译器。

我们命名每个边以及我们使用在图6a到6d所示表示法来表示映射和拓扑-级别-通路(参照pct/ep2014/055640的图51a到51d,182页)。图6a示出了用于一个第一个映射的表示法是具有一个第一个边的命名,第一个映射是一个第一个映射-类型,第一个映射-类型是从一个第一个网络到一个第二个网络的一个拓扑-映射,深度-映射,层-映射或级别-映射。在第一个附着点(poa)的第一个网络和第一个映射接口,在第二个附着点(poa)的第二个网络和第二个映射接口。所述第一个附着点(poa)和第二个附着点(poa)是可选地的。符号'-()->“表示的映射的方向。

我们用于图5a的例子描绘如以上图3c所示的边的命名和符号,其示出了网络ka,kb,kc,kd,la,lb,lc,ld,网络ka和网络kb之间的一个拓扑-映射,网络ka和网络kc之间的一个层-映射和网络kb和网络kd之间的一个层-映射。图5a也示出了p706至p701附着点(poa)p706至p701。如网络ka,kb,kc和kd是物理网络,网络ka和网络的kb之间的拓扑-映射表示为一个物理链路,网络ka和网络kc之间的层-映射是表示为一个物理链路以及网络的kb和网络kd的层-映射是表示为一个物理链路。因为物理链路可以是单向或双向的,我们表示从一个第一个网络到一个第一个网络的一个拓扑-映射,深度-映射,层-映射,级别-映射,拓扑-通路,级别-通路或拓扑-级别-通路为一个图里的有向边。这示于图5b,其示出了网络ka,kb,kc,kd,la,lb,lc,ld,拓扑-映射,层-映射和深度-映射。图7a示出了图6a里的符号的映射的图5b作为一个例子,从网络ka到网络kb命名为l5的拓扑-映射由表示:l5=ka-(拓扑-映射p701::p702)->kb,其中“拓扑-映射”指的是“拓扑-映射”。同样地,”深度-映射“指的是“深度-映射”,“层-映射”指的是“层-映射”,“级别-映射”是指“级别-映射”,“拓扑-通路“指的是“拓扑-通路“和“级别-通路”指的是“级别-通路“使用在符号。可选地,一个深度-映射的方向,一个层-映射和一个级别-映射的方向可以被包括在映射类型里(参照pct/ep2014/055640180页)。

使用如图6a相同的表示法,图6b示出了一个第二个映射与第二个边的命名,第二个映射是一个从第二个网络到一个第二个网络的第二个映射-类型。如在图5c里所示,通过应用第一个方法用于计算上述拓扑-映射,我们计算和存储一个从网络la到网络lb命名为l14的拓扑-映射为一个级联其由从网络la到网络ka命名为l12的一个深度-映射,从网络ka到网络kb命名为l11的一个拓扑-通路和从网络kb到网络lb命名为l13的一个深度-映射所组成,从网络ka到网络kb的拓扑-通路l11包括一个从网络ka到网络kb命名为l5的拓扑-通路。另一选择,创建命名为l11的拓扑-通路也可以被省略,并一个命名为l14的拓扑-映射可能直接从拓扑-映射l5被创建了。在图5c里,从网络ka到网络kb命名为l5拓扑-映射被标记为l5/l11表示拓扑-映射l5被用于计算拓扑-通路l11或换句话说该拓扑-通路l11被映射到拓扑-映射l5。

我们指两个边之间的关系为一个边-关系,其中一个第二个边被多路复用或映射到一个第一个边,我们用“第一个边/第二个边”一个正斜杠符号表示“这样的边-关系。作为一个例子,我们指的l5/l11如图5c所示由边的命名l5表示的一个拓扑-映射之间的一个边-关系和由边的命名l11表示的一个拓扑-通路,其中命名为l11的拓扑-通路被映射到命名为l5的拓扑-映射,或换句话说,拓扑-映射l5被用于计算拓扑-通路l11。在图5c里在标记这种边时一个边的命名是以粗体示出的。

图6c示出了一个第三个边与一个第三个边的命名的符号,所述第三个边是第三边的类型和作为由一个第一个边和一个第二个边所组成的级联,加号表示级联和正斜杠符号表示一个边-关系。如图7b所示的一个例子,创建一个命名为l14的拓扑-映射是“拓扑-映射l14=l12/l14+l11/l14+l13/l14”和一个命名为l11的拓扑-通路是“拓扑-通路l11=l5/l11”,使用图6c表示法。

如在图5d里所示,通过应用第一个方法和第二个方法,用于计算一个层-映射,我们计算和存储一个从网络lc到网络la命名为l19的层-映射为一个级联其由从网络lc到网络kc命名为l17的一个深度-映射,一个从网络kc到网络ka命名为l7的层-映射和一个从网络ka到网络la命名为l15的深度-映射所组成,以及我们计算和存储一个从网络lb到网络ld命名为l20的层-映射为一个级联其由从网络lb到网络kb命名为l16的一个深度-映射,一个从网络kb到网络kd命名为l10的层-映射和一个从网络kd到网络ld命名为l18的深度-映射所组成.

如图5e所示,通过应用第二个方法,用于计算一个拓扑-映射,我们计算和存储一个从网络lc到网络ld命名为l22的拓扑-映射为一个级联其由从网络lc到网络la命名为l19的一个层-映射,一个从网络la到网络lb命名为l21的拓扑-通路和一个从网络lb到网络ld命名为l20的一个层-映射所组成,从网络la到网络lb命名为l21的拓扑-通路包括一个从网络la到网络lb命名为l14的一个单一拓扑-映射.

如图5f所示,我们计算和存储一个从网络lc到网络ld命名为l22的一个单一拓扑-映射。

图7b示出使用图6c的表示法创建的拓扑-通路l11,l21和l23,拓扑-映射l14和l22以及层-映射l19和l20。在图5f里所示的边-关系可以用于通过递归计算一个一组边-关系。在这里,“递归”术词指的是一个数学递归操作。所述一组边-关系包括嵌套的边-关系。在这里,“嵌套的边-关系”里的“嵌套”这个词指的边有一个数学嵌套格式关系。

作为例子但不限于从网络ka,从网络ka到网络kb的拓扑-映射具有边-关系l5/l11,从网络ka到网络kb的拓扑-通路具有边-关系l11/l14,从网络la到网络lb的拓扑-映射具有边-关系l14/l21,从网络la到网络lb的拓扑-通路具有边-关系l21/l22,从网络lc到网络ld的拓扑-映射具有边-关系l22/l23和从网络lc到网络ld的拓扑-通路命名为l23,因此从网络ka到网络kb的拓扑-映射l11有一个一组边-关系l5/l11/l14/l21/l22/l23的一个例子。我们指一个单一的边-关系和两个或更多个边的关系通过递归组合为一个一组边-关系。一个第一个例子,但不限于:一组命名为l5的拓扑-映射的边-关系的是l5/l11/l14/l21/l22/l23。第二个例子,但不限于,一个命名为l5的一组拓扑-映射的边-关系的是l5/l14/l23.

注意,在一组边-关系里的第一个边的命名是所述边的命名。我们通过递归计算所请求的拓扑-通路l23的递归-通路,并为每个边-关系在一个一组边-关系里存储嵌套的边-关系。这里,一个递归-通路被定义为一个使用递归作为一个数学技术计算出的通路。递归-通路的一个例子是在图5f的l23。

图7c示出了从网络lc到网络ld命名为l23的拓扑-通路的递归-通路的计算。如图5f里所示,上面我们计算和存储从网络lc到网络ld一个命名为l23的拓扑-通路为从网络lc到网络ld命名为l22的单-拓扑-映射,并表示在图7b为l23“拓扑-通路l23=l22/l23”的拓扑-通路,步骤1示出上述表示法。使用图7b示出的关系我们递归地计算出递归-通路和一个一组包括用于每个边的嵌套的边-关系,如图7c所示的步骤5。图7c步骤2到的4是计算的里间步骤。使用图6a,6b和6c的表示法,图6d示出了一个表示法用于一个拓扑-通路,级别-通路或拓扑-通路-级-通路,图7c的步骤6通过7c的步骤5与图7a的组合,使用图6d的表示法示出了步骤5的递归-通路。

我们现在包括一组层次网络里的边的命名。图8示出网络naaa,naa,

ncc,nee,na,nb,nc,nd,ne,nf,qa,qb,qc,qd,qe,qf和在(d=0,n=0,h=0)的拓扑-映射,在(d=1,n=0,h=0)的拓扑-映射和深度-映射,作为一个有向边的表示法用于图4a和4b里所示的网络。注意,图4b里的每个级别-映射是一个在级别h的一个第一个网络和一个在级别h+1的第二个网络之间的一个关系,例如但不限于,网络naa和网络naaa之间的级别-映射被表示为一对有向边的级别-映射,例如但不限于,从网络naa到网路naaa的级别-映射和从网络naaa到网路naa的级别-映射。从网络naa到网络naaa的级别-映射被命名为j22并在图8里示出。从网络naa到网络naaa的级别-映射被命名为j47并在图8里示出。pct/ep2014/055640(图53e)描述物理拓扑-映射,深度-映射和级别-映射,按照图6a的表示法。如在图8里所示,我们计算和存储一个从网络naa到网络ncc命名j30的拓扑-映射作为一个级联其由从网络naa到网络nb的级别-映射命名为j17,一个从网络nb到网络nc命名为j29的拓扑-通路,一个从网络nc到网络ncc命名为j18的级别-映射所组成,从网络nb到网络nb命名为j29的拓扑-通路包括从网络nb到网络nc命名为j25的一个拓扑-映射,以上描写了计算拓扑-映射采用的第三个方法。我们计算和存储一个从网络ncc到网络nee命名为j31的拓扑-映射为一个级联其由从网络ncc到网络nd命名为j19的级别-映射,一个从网络nd网络ne命名为j27的拓扑-映射和一个从网络ne到网络nee命名为j20级别-映射所组成,上述描写了用于计算拓扑-映射的第三个方法。通过创建一个命名为j30和j31拓扑-映射我们可以指定节点网络naa,ncc和nee之间的转发行为。如本领域技术人员将理解的,拓扑-映射的创建可以重复在任意数量结构层次。pct/ep2014/055640(213页)描述了一个级别-通路如何更改为成拓扑-通路–通路。

为了允许在一个包括转发或分组交换节点的分组交换网络(psn)里转发或交换分组或在非-分组-交换网络里里继或交换物理信号,上述我们分配零或一个交换-标识符与拓扑-映射,拓扑-通路,级别-通路和拓扑-级别-通路,(参照pct/ep2014/055640188页)。一个交换-标识符取决于一个创建的拓扑-通路包括网络和拓扑-映射的深度d和层n。在一个特定的深度d和层n的网络是全分组-交换网络或全非-分组-交换网络,两者之一。在一个特定的深度d和层n的节点是全分组-交换节点或全非-分组-交换节点,两者之一。我们区分,但不限于,以下交换-标识符类型:

i.在深度d=0和在任意层n包括一个物理信号的交换-标识符,在深度d和层n的节点是非-分组-交换节点。

ii.在深度d=0和一个执行媒体访问控制(mac)的层的交换-标识符,在深度d和层n的节点是分组-交换节点。

iii.在任意深度d和在任意层n的交换-标识符包括逻辑标识符,在深度d和层n的节点是分组-交换节点。

pct/ep2014/055640(189页至192页)描述了交换-标识符类型i),类型ii)和类型iii)的例子。

之前或在创建在一个深度d,层n的一个第一个网络sdn编译器应该被用户指示,例如,但不限于一个网络管理员pct/ep2014/055640页191):

i.网络是否在所述深度d和所述层n的分组-交换网络或非-分组-交换网络

ii.如何为所述深度d和所述层n构建交换-标识符。pct/ep2014/055640(192页,201至203页),描写了如何构建交换-标识符的例子。

这是在所述深度d和所述层n的初始化完成的,,因为这是相同与在所述深度d和所述层n的每个网络的信息。这是在所述深度d和所述n层的初始化完成,因此一个sdn编译器的一个用户将不必指定这信息与所创建的每个网络。在上面i)的信息被sdn编译器用于选择创建一个物理分组-交换节点的转发项或一个物理非-分组-交换节点的转发项的方法。

在该方法里,我们为一个请求的拓扑-级别-通路从所述循环-通路计算转发项。在d=0,h=h_min是一个物理节点时,递归-通路为每个节点包含以下信息(参照pct/ep2014/055640192页和193页):

-作为物理或虚拟节点与一个拓扑-映射或一个层-映射之间的附着点(poa)的一个输入端口,例外是在递归-通路的第一个节点不具有一个输入端口因为分组或信号是由在递归-通路的第一个节点创建的。

-作为物理或虚拟节点与拓扑-映射或一个层-映射之间的附着点(poa)的一个输出端口,例外是在递归-通路的最后一个节点不具有一个输出端口因为分组或信号是被在递归-通路的最后一个节点接收的,

另外,当为每个边计算一组边时,递归-通路还包含:

-在输入拓扑-映射的一组输入边-关系或层-映射,例外是在递归-通路的第一个节点其不具有输入拓扑-映射或一个层-映射

-在传出拓扑-映射的一组传出边-关系或层-映射,例外是在递归-通路的最后一个节点其不具有传出拓扑-映射或一个层-映射

上述输入端口,输出端口,一组输入边-关系,一组传出被-关系,以及导致物理节点的转发项,也被称为转发指令的交换-标识符的组合,将进一步在下面的例子里说明。每个在递归-通路的物理节点的转发项包括一个输入端口,一个输出端口,一组输入边-关系的交换-标识符和一组传出边-关系的交换-标识符。上述转发项,无论是直接或间接地,被发送到递归-通路的物理节点,例如,但不限于,通过一个sdn控制器。pct/ep2014/055640(第197页)描述了对于一个节点,一组输入边-关系里的边数量也许可以通过确定相关的一组输入边-关系减少。对于一个节点,相关的一组输入边-关系是一组所述节点在深度,层和级别的一个输入拓扑-映射或一个输入深度-映射或一个输入层-映射的边-关系,以及递归-通路里在深度,层和级别的所有网络的通过一个或更多个深度-映射映射到所述节点。pct/ep2014/055640(第197页)描述了对于一个节点,一组传出边-关系里的边数量也许可以通过确定相关的一组传出边-关系减少。对于一个节点,相关的一组传出边-关系是一组所述节点在深度,层和级别的一个传出拓扑-映射或一个传出深度-映射或一个传出层-映射的边-关系,以及递归-通路里在深度,层和级别的所有网络的通过一个或更多个深度-映射映射到所述节点。

为了创间适当的转发指令我们区分一个分组-交换网络(psn)的一个物理节点,和在一个非psn的一个物理节点。一个在psn的物理节点,称为物理分组-交换节点,执行转发和分组的统计多路复用。一个在非psn的物理节点,称为物理非-分组-交换节点,执行里继和物理信号的多路复用。一个例子,但不限于,是非-psn的一个电路-交换节点(csn)。一个例子,但不限于,是非-psn的是一个无线网络里执行多路复用物理信号的节点。pct/ep2014/055640(193和194页)描述了物理分组交换节点的转发项的计算。pct/ep2014/055640(195和196页)描述了物理非分组交换节点的转发项的计算。pct/ep2014/055640(198至200页)描述了一个用于创建包括两个或更多个的物理节点的物理设备的一个单一转发项。

当根据上述方法创建一个拓扑-映射,层-映射,拓扑-通路,级别-通路,或拓扑-级别-通路时,当创建一个拓扑-映射,层-映射,拓扑-通路,级别-通路,或拓扑-级别-通路时可选地的一个或更多个要求被考虑在内(参照pct/ep2014/055640221页)。只有如果所述拓扑-映射,层-映射,拓扑-通路,级别-通路或拓扑-级别-通路与所述一个或更多个要求符合,所述拓扑-映射,层-映射,拓扑-通路,级别-通路或拓扑-级别-通路被创建。换言之,一个拓扑-映射,层-映射,拓扑-通路,级别-通路或拓扑-级别-通路只有被创建,如果所述拓扑-映射,层-映射,拓扑-通路,级别-通路或拓扑-级别-通路的要求被计算的所述拓扑-映射,层-映射,拓扑-通路,级别-通路或拓扑-级别-通路满足了。请求的拓扑-通路,级别-通路或拓扑-通路-级别-通可以被认为是给一个用户的一个服务(参照pct/ep2014/055640222页)。一个例子,但不限于,所述用户的是一个人,一个组织,一个应用程序。通常情况下,所述服务的要求被存储在一个合同,作为所述用户和所述服务的提供者之间的服务级别-协议(sla)。如将在本领域的技术人员可以理解,上述方法允许所述服务的所述的提供者的提供更丰富的服务,基于可以在建立所述服务时使用的更复杂的要求,。边-关系被用于确定任何变化对一组网络的影响。作为一个例子,但不限于,如图50c所示从网络ka到网络kb命名为l5的拓扑-映射是与边-关系l5/l11的,因此,如果命名为l5第一个边被改变时,第二个边的命名为l11将受到影响。在命名为l5的拓扑-映射被删除的情况下,例如但不限于,拓扑-映射l5是被切断的物理光纤链路,根据边-关系l5/l11影响了命名为l11的拓扑-映射,并且将要由sdn编译器重新计算。在拓扑-通路l23是一个请求的拓扑-通路和命名l23拓扑-通路不能被重新计算的情况下,如在图50f的例子里,所述请求的拓扑-通路的服务-级别-协议(sla)被违反了。

注意,所描述的方法允许在一组网络里多层次的生存能力。另外,注意,所描述的方法允许对sla的一个更深层次的分析。作为一个例子,但不限于,一个大量的故障情形可能由方法所存储的信息进行模拟以及可能确定对一个或更多个sla的影响。作为一个例子,但并不限于,这允许用于检查违反sla的概率与所述违反sla所招致的处罚。注意,所描述的方法允许存储每个违反sla,因此为说述sla建立了一个记录。

在非分组交换网的情况下也参考了转发项,由于sdn编译器提供了一个对两者统一的方法来创建分组-交换节点和非-分组-交换节点的指令。在非-分组-交换网络的情况下转发项是一个指定输入端口的输入信号,可选地修改后,所述输入信号应如何里继到一个输出端口的指令。作为一个例子,但不限于,在一个wdmroadm的情况下,sdn编译器创建一个指令指定在一个输入端口的输入波长应在所述输入波长可选地修改,例如改变输入波长的频率之后,如何里继也被称为交叉连接,到一个输出端口。转发项,被无论是直接或间接地发送到递归-通路里的物理节点,例如,但不限于,通过一个sdn控制器。

以上描述的方法可使用图数据库来实现,其中网络,映射,拓扑-通路,级别-通路和拓扑-通路被存储在图数据库,其中一个网络是以顶点命名被存储在图数据库,其中一个拓扑-映射,深度-映射,层-映射或级别-映射的映射是以有向边以及其命名被存储在图数据库,其中所述网络的属性是以顶点属性被存储在所述图数据库,其中所述映射属性是以边的属性被存储在所述图数据库,其中所述拓扑-通路,级别-通路或拓扑-级别-通路的属性是以边的属性被存储在所述图数据库(参照pct/ep2014/055640图57,145和230页)。所述映射的类型和方向可以以边的类型被存储在所述图数据库。作为拓扑-通路,级别-通路或拓扑-级别-通路的拓扑-级别-通路的类型可以以边的类型被存储在所述图数据库。一个所述映射的一个映射类型和一个方向的例子是一个递增的深度-映射。一个支持一个以上的边的类型的图数据库通常被称为一个支持图属性的图数据库。一个图数据库通常,但不限于,是基于一个图属性的模型包含具有属性的顶点和具有属性的有向边。在sdn编译方法内的网络属性可以存储为顶点的属性。这样顶点属性,也称为顶点属性,可以包括上述的sdn编译方法的网络相关输入以及附加的网络信息,例如但不限于物理或虚拟节点的地理经度,物理节点或虚拟节点的地理纬度的和节点的正常运行时间。在sdn编译方法内的拓扑-映射,层-映射和深度-映射的属性可以存储为边的属性。用于创建或重新计算一个映射或一个拓扑-通路,级别-通路或拓扑-级别-通路的计算一个拓扑-映射的第一个方法,计算一个拓扑-映射的第二个方法,计算一个拓扑-映射的第三个方法,计算一个层-映射的第一个方法,计算一个层-映射的第二个方法,计算一个拓扑-通路的方法,计算一个级别-通路的方法以及计算一个拓扑-级别-通路的方法,可被实现为在一个图数据库的一个查询。以上所述的附加要求可以包括在这样的查询。

作为一个例子,但不限于,计算一个拓扑-通路的一个查询可以是一个从一个第一个节点到一个匹配与一个从所述第一个节点到一个第三个节点的在深度减少的深度=映射的第二个节点的通路的一个图数据库查询。

可选地的附加要求可以所述查询里在指定。

我们现在考虑一个sdn编译器设备的例子,包括一个数据库,一个事件处理程序和一个指令程序,如图9所示(参照pct/ep2014/055640图57,232页)。图9还示出了sdn编译器的一个用户(user),一个或更多个sdn控制器和一个或更多个sdn物理节点。所有网络,拓扑-映射,深度-映射,层-映射,级别-映射,拓扑-通路,级别-通路,拓扑-级别-通路的信息被存储在数据库里。一个例子,但不限于,这样的数据库是一个图数据库。事件处理程序处理全部从用户(user),从一个或更多个sdn控制器,并从数据库的输入事件。另外,该数据库可直接查询自己,但为了允许事件处理和优先从数据库的数据库请求,(数据库请求)流是通过事件处理程序。事件处理程序允许事件的优先并防护查询攻击数据库。

指令程序(instructor)负责创建一个用户请求的拓扑-通路,级别-通路或拓扑-级别-通路的转发项,这是在这拓扑-通路,级别-通路或拓扑-级别-通路在数据库被创建之后。一个或更多个sdn控制器可以发送请求到事件处理程序(eventhandler)。另外,一个附加的显示器可以用来轮询一个或更多个sdn控制器。

图9示出下面的消息流

51用户(user)到事件处理程序(eventhandler),例如,对于索取(get)请求,脚本,命令接口,图形用户界面(gui)。

52sdn控制器(controller)到事件处理程序(eventhandler)

53数据库(database)到事件处理程序(eventhandler),例如,对于违反要求触发重新计算和错误报告。

54数据库(database)查询+行动(query+action)从事件处理程序(eventhandler)到数据库(database)

55数据库(database)到指令程序(instructor),包括拓扑-通路,级别-通路或拓扑-级别-通路的信息

56指令程序(instructor)到控制器(controller),包括转发指令

57事件处理程序(eventhandler)到用户(user),例如错误报告

58数据库(database)到用户(user),例如查看错误报告

59指令程序(instructor)到用户(user),例如错误报告,统计

60节点(node)到控制器(controller),例如错误报告,状态报告

61sdn控制器(controller)到节点(node),包括转发指令

注意,所述事件处理程序使用任何一个创建逻辑网络规范的方法,翻译一个sdn编译器的一个用户指定的逻辑网络规范成为一个数据库查询,例如但不限于创建拓扑-映射的第一个方法。

在非分组交换网络的情况下,由于sdn编译器提供了为对两者分组交换节点以及非分组交换节点创建指令的一个统一方法,也参考了转发项,(参照pct/ep2014/055640196页)。在非分组交换网的情况下的转发项是指定如何在输入端口的传入信号应所述传入信号的可选地修改后里继到一个输出端口的指令。注意,在一个非分组交换网络,其中没有逻辑节点和网络存在,向其中上述方法适用,一个或更多个拓扑-映射可以使用第二个方法来创建拓扑-映射来创建转发表项可以使用计算的方法来计算用于非包交换节点的转发表项,边可以被重新计算,服务可以根据一组要求来请求。作为一个例子,但不限于,上述方法可以利用图数据库来实现。

pct/ep2014/055640(207至211页,图52n)描述了作为创建逻辑节点的另一选择,一个逻辑命名可以被分配给一个物理节点和/或一个物理拓扑-映射和/或物理附着点(poa)。pct/ep2014/055640(234至240页,图59b)描述了一个包括或不包括逻辑节点的非分组-交换网络的一个例子。

为了支持多租户,并提供每个租户自己的地址空间,隔离于其它租户,每个租户的命名空间的最高层次的网络应该是全球独特的,以确保隔离于其它租户。作为一个例子,但不限于,最高层次可以是ipv6流标签或可以重新利用的一个ipv4识别字段来表示一个租户。如将被本领域的技术人员理解,比上面的例子里使用的用于描述sdn编译方法的比较简单的拓扑-通路结构,更复杂的拓扑-通路被sdn编译器支撑。如将被本领域的技术人员理解,上述的各个方法落本发明的范围内,如例但不限于,多播,隧道,标签-交换。

非预先公布的现有技术pct/ep2014/055640(39,42,2345页)描述了可选地通过一个物理或虚拟节点对一个分组上进行操作的方法,例如但不限于监视和/或在分组转发到其一个或更多个的输出端口之前修改传入分组的包头和/或有效载荷或阻止一个传入分组,所述附加的可选地操作可由sdn编译器的一个用户指定。所述附加操作可以在一个虚拟节点里执行,例如但不限于一个虚拟机或一个容器,导致网络功能虚拟化(nfv),其中虚拟节点执行可选地操作,例如但不限于监视和/或记录和/或缓冲和/或在分组转发到其一个或更多个的输出端口之前修改传入分组的包头和/或有效载荷或阻止一个传入分组。

在分组交换网络里,包括分组交换节点,除了转发,多路复用和解多路复用操作之外,我们定义附加操作作为节点可选地执行的任何操作。在包括非分组交换节点的非分组交换网络里,除了交换,多路复用和解多路复用操作之外,我们将附加操作定义为可选地由节点执行的任何操作。在由分组交换节点组成的分组交换网络里,一个转发操作也称为一个交换操作。

我们用一个操作命名表示一个操作。每个操作命名表示一个操作。

我们将操作调用定义为以下的一个组合:

-一个操作命名表示的一个操作,

-至少一个边,

-表示要执行所述操作的位置的一个节点,

与存储在一个特定位置的静止数据相反,所述操作执行在正在运行的数据。在非分组交换网络的情况下,所述操作执行在一个信号上。在分组交换网络的情况下,所述操作执行在一个流里的一个或更多个分组。所述流是由至少一个边的和一个所述边的交换-标识符的组合指定的。

所述操作可以是对一系列分组的操作,例如缓冲多个分组,对所述多个分组有效载荷的组合进行编码,并将所述多个分组发送到一个输出端口。注意,所述至少一个边,应该存在于所述操作应该执行的所述逻辑节点的一组传入边-关系里,并且应该存在于所述操作应该执行的所述逻辑节点的一组传出边-关系里,因为所述至少一个边的交换-标识符识别应在其上执行所述操作的分组或信号。这将在以下进一步说明。

一个操作是在在一个节点执行的。所述节点可以被认为是在一个网络里要执行所述操作的一个位置。

通过定义了至少一个操作调用的一个或更多个节点的通路导致一个或更多个操作调用被顺序地或并行地执行,并且可以被认为是包括一个或更多个操作调用的一个程序。

一个附加操作的示例是传递功能。在分组-交换网络里,所述传送功能将传入分组的有效载荷传送到传出分组的有效载荷。分组的有效载荷包含数据。当所述分组沿着从源节点到目的地节点的通路运行时,所述数据是在运行,因此是对运行里的数据执行所述传递功能。在非-分组-交换网络里,所述传送功能将输入信号传送到输出信号。一个信号包含数据。当所述信号沿着从源节点到目的地节点的通路运行时,所述数据运行,因此对运行里的数据执行所述传递功能。传递功能的一个例子,但不限于此,是在计算设备的软件里执行的过程。传递功能的示例但不限于以软件,计算机代码,硬件执行的处理,改变传入信号或数字信号处理的物理过程执行的处理。

如本领域技术人员将理解的,包括其中对运行里的数据执行传递功能的节点的网络类似于一个数据流架构的网络。在数据流架构里,执行的一个操作仅基于操作的输入参数的可用性或存在。相比之下,在冯·诺依曼(vonneumann)结构里,执行操作取决于程序计数器。在分组-交换网络里,操作的所述一个或更多个输入参数是一个或更多个分组。在非-分组-交换网络里,一个指令的所述一个或更多个输入参数是一个信号。

在一个逻辑网络里指定操作调用,它们是以下的一个组合:

-一个操作命名表示的一个操作,

-逻辑网络里里至少一个边,表示应在分组或信号上执行所述操作,

-逻辑网络里表示要执行所述操作的位置的逻辑节点,

注意,若在一个逻辑节点执行一个单个操作,则操作命名表示操作和一个逻辑节点命名,其为逻辑节点的一个独特的标识符,也许可以相同并一次存储。

我们的目标是编译一个逻辑网络,其中根据上述描述,sdn编译器的一个用户根据物理和虚拟资源定义附加操作,并为所述物理和虚拟资源创建转发指令,包括要在物理节点上执行的零或更多个的操作。

一个通过一个或更多个逻辑节点的请求的-通路至少定义了一个操作调用,导致顺序或并行执行一个或更多个的操作调用,并且可以被认为是包括一个或更多个操作调用的程序。

所述操作调用和请求的-通路是由一个sdn编译器的一个用户定义的,由此向一个sdn编译器的所述用户提供逻辑网络的可编程性。

在一个逻辑分组-交换网络里,逻辑网络里所述至少一个边的示例,但不限于是ipv6源地址,ipv6目的地址和ipv6流标签[ipv6:因特网协议版本6]的一个3元组。

在一个逻辑非-分组-交换网络里的一个例子,但不限于,是一个逻辑网络里所述至少一个边表示一个信号在其要执行所述操作的是添加一个逻辑标识符到一个物理信号,例如但不限于,通过一个调制技术。

如本领域技术人员将理解的,通常被称为“里间匣子”的设备,诸如但不限于防火墙,深度分组检测设备,缓存节点是执行附加操作的设备的示例。今天,里间匣子通常是专用的硬件设备。在虚拟节点里执行附加操作通常称为网络功能虚拟化(nfv)。例如,nfv的预期好处是,但不限于降低设备成本,降低运营成本和更快地提供网络服务。

我们使用图11a至11j所示的示例来解释该方法。图11a示出了逻辑节点na,nb,ne和nf,命名为j24,j28和j53的拓扑-映射,以及一个命名为j54的拓扑-通路,表示为一个图里的有向边。我们认为逻辑节点na,nb,ne和nf是分组-交换节点。我们通过操作命名’行动1'表示一个第一个操作,并且通过操作命名’行动3'表示一个第二个操作。我们将一个第一个操作调用定义为以下的一个组合:

-表示操作的一个操作命名“行动1”

-命名为j54的一个边,

-表示要执行所述操作的位置的一个逻辑节点nb,

我们将第二个操作调用定义为一个组合:

-表示操作的一个操作命名“行动3”

-命名为j54的一个边,

-表示要执行所述操作的位置的一个逻辑节点ne,

第一个和第二个操作调用如图11h所示。我们认为命名为j54的拓扑-通路的交换标识符为“源na,目标nf”,如图11i所示。因此,应该在其上执行所述第一个操作和所述第二个操作的命名为j54的边由交换-标识符“源na,目的地nf”来标识。命名为j54的请求的-通路横越节点nb,在其执行了所述第一个操作,并横越节点ne,在其执行了所述第二个操作。注意,顺序地执行所述第一个操作和所述第二个操作。所述操作命名和所述边可以由sdn编译器的一个用户指定。当一个边存在于一个节点的一组传入边-关系里并且存在于所述节点的一组传出边-关系里时,我们指所述边-关系横越一个节点。

图11b示出了通过物理链路互连的第三个计算设备,第二个分组转发系统,一个第三个分组转发系统,第四个分组转发系统,第五个分组转发系统和第四个计算设备。图11b还示出了p431至p440的附着点(poa)。节点qa表示一个第三个计算设备,节点qb表示一个第二个分组转发系统,节点qc表示一个第三个分组转发系统,节点qd表示一个第四个分组转发系统,节点qe表示一个第五个分组转发系统,节点qf表示一个第四个计算设备。节点qb可以执行命名为“行动1”的操作,节点qc可以执行一个命名为“行动2”的操作,节点qe可以执行命名为“行动3”和“行动4”的操作。

作为示例,但不限于,我们考虑如图11a所示并且如上所述的包括逻辑节点na,nb,ne,nf的逻辑网络,并且根据图11b所示的网络图编译所述逻辑网络。

图11c示出(d=0,n=0,h=0)的物理节点qa,qb,qc,qd,qe和qf。图11c示出(d=1,n=0,h=0)的逻辑节点na,nb,ne和nf。图11c还示出了命名为j1到j5,j24,j28和j53的拓扑-映射,命名为j6,j7,j8,j13,j14和j15的深度-映射,以及一个命名为j54的拓扑-通路,表示为一个图里的有向边。图11d示出了按照图6a的表示法,命名为j1到j5的拓扑-映射以及命名为j6,j7,j8,j13,j14和j15的深度-映射。图11e按照图6c的符号示出了命名为j24,j28和j53的拓扑-映射以及命名为j54的拓扑-通路。

命名为j1到j5的拓扑-映射表示单向的物理链路。使用以计算拓扑-映射第一个方法计算了命名为j24,j28和j53的拓扑-映射,如图11c和11e所示。命名为j54的拓扑-通路被计算为一个级联其由命名为j24的拓扑-映射,命名为j53的拓扑-映射和命名为j28的拓扑-映射所组成,如图11c和11e所示。我们计算所请求的拓扑-通路的递归-通路,命名为j54,如上所述。使用图11e所示的关系,我们递归地计算所述递归-通路和包括每个边的嵌套的边-关系的一组边-关系。命名为j54的拓扑-通路的递归-通路的结果在图11f示出。

递归-通路包含每个节点的以下信息:

-一个输入端口,

-一个输出端口,

-一组传入边-关系,

-一组传出边-关系,

命名为j54的拓扑-通路的递归-通路,如图11g所示。在图11g'未命名'表示未指定一个输入端口或一个输出端口。如上所述,我们将操作调用定义为以下的一个组合:

-表示操作的一个操作命名,

-至少一个边,

-表示要执行所述操作的位置的一个节点,

因此,可以在一个节点里执行由一个操作命名表示的操作,如果至少一个边存在于应当执行所述操作的所述逻辑节点的一组传入边-关系里,并且存在于应执行所述操作的所述逻辑节点的一组传出边-关系里。作为示例,但不限于,我们认为所述第一操作调用是以下的一个组合:表示一个操作的一个操作命名“行动1”,命名为j54的一个边表示要在其上执行所述操作的一个边的和一个逻辑节点nb表示要执行所述操作的位置。如图11g的第五行所示,命名为j54的边存在于逻辑节点nb在其应执行所述第一个操作的一组传入边-关系j7/j24/j54里,并且存在于逻辑节点nb在其应执行所述第一个操作的一组传出边-关系j8/j53/j54里。如图11g的第四行所示,命名为j54的边存在于物理节点qb的传入边-关系j1/j24/j54里,并且存在于物理节点qb的传出边-关系j7/j24/j54里。如图11g的第六行所示,命名为j54的边存在于物理节点qb的传入边-关系j8/j53/j54里,并且存在于物理节点qb的传出边-关系j2/j53/j54里。物理节点qb和逻辑节点nb通过命名为j7和j8的深度-映射相关,如图11d所示。如图11f所示,命名为j54的请求的拓扑-通路的递归-通路包含一个级联其由从物理节点qb到逻辑节点nb在深度增加的命名为j7的深度-映射,和从逻辑节点nb到物理节点qb深度减少的命名为j8的深度-映射所组成。

pct/ep2014/055640里描述的sdn编译器方法现在通过以下操作进行扩展:

i)存储一个物理节点的一个或更多个操作命名,每个操作命名表示由所述物理节点可能执行的一个操作,

ii)存储一个或更多个操作调用,每个操作调用是由一个操作命名,至少一个边和表示要执行所述操作的一个位置的一个逻辑节点的一个组合确定的,

iii)创建一个指令执行由所述物理节点之一对一个分组或信号的一个附加操作,其为所述存储的操作之一,if已经定义了一个操作调用是由一个操作命名,至少一个边和所述逻辑节点所述之一的一个组合确定的and一个递归-通路包含一个级联其由从所述物理节点之一到所述逻辑节点之一的一个或更多个在深度增加的第一个深度-映射所组成and从所述逻辑节点之一到所述物理节点之一在深度减少的一个或更多个第二个深度-映射,and所述至少一个边包含在所述物理节点之一的物理拓扑-映射或物理层-映射的一组传出边-关系里,and,所述至少一个边被包含在所述物理节点之一的物理拓扑-映射或物理层-映射的一组传出边-关系里,and所述附加操作命名与所述物理节点之一被一起存储,

上述行动i)至iii)使用上述示例进行了说明。

行动i):如图11c所示,物理节点qb可以执行行动1,因此操作命名“行动1”与物理节点qb一起存储。如图11c所示,物理节点qc可以执行行动2,因此操作命名“行动2”与物理节点qc一起存储。如图11c所示,物理节点qe可以执行行动3和行动4,因此操作命名“行动3”和“行动4”与物理节点qe一起存储。

行动ii):存储一个或更多个操作调用,每个操作调用由表示操作的操作命名(行动1;行动2)的组合确定,识别要在其上操作的分组或信号的至少一个边(j54;j54)以及由sdn编译器的一个用户定义的应执行所述操作的逻辑节点(nb;ne),如图11h所示。

行动iii):解释了一个第一个操作调用是由表示一个操作的一个操作命名(“行动1”),识别应该执行于所述操作的一个分组或信号的至少一个边(j54)以及应该执行所述操作的一个逻辑节点(nb)的一个组合确定的:创建一个指令执行由物理节点qb对一个分组或信号的一个附加操作,其为所述存储的操作之一,命名为“行动1”if已经定义了一个操作调用是由操作命名(“行动1”),至少一个边(j54)和逻辑节点(nb)的一个组合确定的and一个递归-通路(j54)包含一个级联其由从一个或更多个所述物理节点里之一(qb)到所述第一个操作调用的所述逻辑节点之一(nb)在深度增加的一个或更多个第一个深度-映射(j7)和所述第一个操作调用的所述逻辑节点之一(nb)到一个或更多个所述物理节点里之一(qb)在深度减少的一个或更多个第二个深度-映射(j8)所组成and所述操作调用的至少一个边(j54)被包含在所述一个物理节点(qb)的物理拓扑-映射(j1)或物理层-映射的一组传入边-关系(j1/j24/j54)里and所述操作调用的至少一个边(j54)被包含在所述一个物理节点(qb)的物理拓扑-映射(j2)或物理层-映射的一组传出边-关系(j2/j53/j54)里and所述第一个操作调用的所述附加操作命名(“行动1”)与所述物理节点(qb)之一被一起存储,因此以上声明为true

行动iii):解释了一个第二个操作调用是由表示一个操作的一个操作命名(“行动3”),识别应该执行于所述操作的一个分组或信号的至少一个边(j54)以及应该执行所述操作的一个逻辑节点(ne)的一个组合确定的:创建一个指令执行由物理节点qe对一个分组或信号的一个附加操作,其为所述存储的操作之一,命名为“行动3”if已经定义了一个操作调用是由操作命名(“行动3”),至少一个边(j54)和逻辑节点(ne)的一个组合确定的and一个递归-通路(j54)包含一个级联其由从一个或更多个所述物理节点里之一(qe)到所述第一个操作调用的所述逻辑节点之一(ne)在深度增加的一个或更多个第一个深度-映射(j13)和所述第一个操作调用的所述逻辑节点之一(ne)到一个或更多个所述物理节点里之一(qe)在深度减少的一个或更多个第二个深度-映射(j14)所组成and所述操作调用的至少一个边(j54)被包含在所述一个物理节点(qe)的物理拓扑-映射(j4)或物理层-映射的一组传入边-关系(j4/j53/j54)里and所述操作调用的至少一个边(j54)被包含在所述一个物理节点(qe)的物理拓扑-映射(j5)或物理层-映射的一组传出边-关系(j5/j28/j54)里and所述第一个操作调用的所述附加操作命名(“行动3”)与所述物理节点(qe)之一被一起存储,因此以上声明为true。

我们使用交换-标识符从命名为j54的拓扑-通路的递归-通路创建转发指令,在图11i所示。图11i示出了作为示例但不限于用于命名为j1至j5和j54的边的交换-标识符。边j1至j5的交换-标识符表示数据链路层的物理附着点(poa),执行媒体访问控制(mac)。命名为j54的边的交换标识符是“源na,目的地nf”,使用命名为j54的拓扑-通路的源节点na的命名作为源,并使用命名为拓扑-通路的目标节点nf的命名j54为目的地。

命名为j54的拓扑-通路的递归-通路包含以下信息,用于所述递归-通路里的每个物理节点,即物理节点qa,qb,qc,qd,qe和qf:

-一个输入端口,

-一个输出端口,

-一组传入边-关系,

-一组传出边-关系,

注意,以上输入端口,输出端口,一组传入边-关系,所述一组传入边-关系的交换-标识符,一组传出边-关系,所述一组传出边-关系的交换-标识符以及执行物理节点qa,qb,qc,qd,qe和qf的转发项的结果的附加操作,在图11j的第一列至第五列所示。图11j的第六列示出了要执行的附加操作。

一个请求的-通路的递归-通路里的一个在以下方法称为节点的物理分组交换节点的转发表项,是通过执行以下方法,包括以下动作计算的:

i.如果递归-通路不包含一个传入拓扑-映射或一个传入层-映射用于所述物理分组-交换节点,以及所述物理分组-交换节点是经过一个或更多个深度-映射被映射到递归-通路的一个源网络,则为在所述递归-通路的物理分组交换节点的每个传出拓扑-映射和每个传出层-映射创建转发项指令所述物理分组交换节点,创建一个分组带有分组开销包包含传出拓扑-映射或传出层-映射的一组传出边-关系的交换标识符和出于一个输出端口发送所述分组,所述输出端口是所述物理分组交换节点和传出拓扑-映射或传出层-映射之间的附着点(poa),

ii.否则,如果所述节点的递归-通路不包含一个传出拓扑-映射或一个传出层-映射,并且所述节点是通过一个或更多个深度-映射被映射到递归-通路的一个目的网络,则为每个传入拓扑-映射和所述递归-通路里所述节点的每个传入层-映射创建一个转发项指示所述节点,根据传入拓扑-映射或传入层-映射的一组传入边-关系的交换-标识符在一个输入端口接收一个分组,所述输入端口是所述物理分组-交换节点和传入拓扑-映射或传入层-映射之间的附着点(poa)

iii.否则,如果所述节点的递归-通路确实包含一个传入拓扑-映射或一个传入层-映射和所述节点的递归-通路确实包含一个传出拓扑-映射或一个传出层-映射,则为每个传出拓扑-映射和所述递归-通路里所述节点的每个传出层-映射创建一个转发项指示所述节点在一个输入端口接收一个传入分组,所述输入端口是所述节点与递归-通路指定的所述传入拓扑-映射或所述传入层-映射之间的一个附着点(poa),所述分组是根据其含有的所述传入拓扑-映射的一组传入边-关系或所述传入层-映射的交换-标识符,以及根据传出拓扑-映射或传出层-映射的一组传出边-关系的交换-标识符修改所述分组,并且出于一个输出端口发送所述分组,所述输出端口是所述节点与所述传出拓扑-映射或所述传出层-映射之间的一个附着点(poa)。

通过执行包括以下行动的以下方法来计算一个请求的-通路的递归-通路里的物理非-分组-交换节点的转发项:

i.如果所述节点的递归-通路不包含一个传入拓扑-映射或一个传入层-映射,并且所述物理非-分组-交换节点是通过一个或更多个深度-映射被映射到递归-通路的一个源网络,从而为每个传出拓扑-映射和所述递归-通路里所述节点的每个传出层-映射创建一个指令指示所述物理非-分组-交换节点,根据所述传出拓扑-映射或所述输传层-映射的一组传出边-关系的交换-标识符来创建一个信号,并且出于一个输出端口发送所述信号,所述输出端口是所述物理非-分组交换节点和传出拓扑-映射或传出层-映射之间的附着点(poa),

ii.否则,如果所述节点的递归-通路不包含一个传出拓扑-映射或一个传出层-映射,并且所述物理非分组-交换节是通过一个或更多个深度-映射被映射到递归-通路的一个目的网络,从而为每个传入拓扑-映射和所述递归-通路里所述节点的每个传入层-映射创建一个指令指示所述物理非-分组-交换节点,根据传入拓扑-映射或传入层-映射的一组传入边-关系的交换标识符在一个输入端口接收一个信号,所述输入端口是所述非-物理分组交换节点和传入拓扑-映射或传入层-映射之间的附着点(poa),

iii.否则,如果所述物理非-分组-交换节点的递归-通路确实包含一个传入拓扑-映射或一个传入层-映射和所述物理非-分组-交换节点的递归-通路确实包含一个传出拓扑-映射或一个传出层-映射,从而为每个传出拓扑-映射和所述递归-通路里所述节点的每个传出层-映射创建一个指令指示所述物理非-分组-交换节点在一个输入端口接收一个传入信号,所述输入端口是所述节点与递归-通路指定的所述传入拓扑-映射或所述传入层-映射之间的一个附着点(poa),所述信号是根据入拓扑-映射或传入层-映射的一组传入边-关系的交换标识符,以及根据传出拓扑-映射或传出层-映射的一组传入边-关系的交换标识符修改所述信号,并且出于一个输出端口发送所述信号,所述输出端口是所述节点与所述传出拓扑-映射或所述传出层-映射之间的一个附着点(poa)。

如本领域技术人员将理解的,在物理分组-交换节点的情况下的上述行动iii)并且在物理非-分组-交换节点的情况下的上述行动iii),一个信号可能被交换,多路复用或解多路复用,取决于传入边的类型和传出边的类型的组合,如下:

-if一个节点的传入边是一个拓扑-映射and所述节点的传出边是一个拓扑-映射,执行一个交换操作,

-if一个节点的传入边是一个在层次里增加的层-映射and所述节点的一个传出边是一个在层次里减少的层-映射,执行一个交换操作,

-if一个节点的传入边是一个层-映射and所述节点的传出边是一个拓扑-映射,执行一个多路复用操作,

-if一个节点的传入边是一个在层次里减少的层-映射and所述节点的一个传出边是一个在层次里减少的层-映射,执行一个多路复用操作,

-if一个节点的传入边是一个拓扑-映射and所述节点的一个传出边是一个在层次里增加的层-映射,执行一个解多路复用操作,

-if一个节点的一个传入边是一个在层次里增加的层-映射and所述节点的一个传出边是一个在层次里增加的层-映射,执行一个解多路复用操作,

如本领域技术人员将理解的,一个信号可以在主机节点里被发送或接收,这取决于传入边的类型和传出边的类型的组合如下:

在以上行动i)执行一个发送操作取决于传入边的类型和传出边的类型的组合,如下所示:

-if一个节点没有传入边和所述节点的传出边是一个拓扑-映射或一个在层次里减少的层-映射,执行一个发送操作,

在以上行动ii)执行一个接收操作之后,取决于传入边的类型和传出边的类型的组合如下:

-if一个节点的传入边是一个拓扑-映射或一个层-映射在层次里增加和所述节点没有传出边,执行一个接收操作,

我们现在考虑一个包含多层次的一个例子。图12a示出了通过物理链路互连的表示一个第五个计算设备的物理节点pa和pg,表示一个第六个分组转发系统的一个物理节点pb,表示一个第七个分组转发系统的一个物理节点pc,表示一个第八分组转发系统的一个物理节点pd,表示一个第九个分组转发系统的物理节点pe和表示一个第六个计算设备的物理节点pf和ph。图12a还示出了附着点(poa)p201至p214。图12b示出了在(d=0,n=0,h=0)的物理节点pa,pb,pc,pd,pe,pf和在,(d=0,n=1,h=0)的物理节点pg和ph。图12b还示出了在(d=1,n=0,h=0)的逻辑节点ha,hb,he,hf和在(d=1,n=1,h=0)的逻辑节点hg和hh。图12b还示出了命名为r1至r5,r16,r17,r18和r24的拓扑-映射,命名为r6至r15的深度-映射,命名为r20,r21,r22和r23的层-映射以及命名为r19和r25的拓扑-通路,表示为一个图里的有向边。图12b还示出了节点pb可能执行命名为“行动5”的一个操作,节点pc可能执行命名为“行动6”的一个操作,节点pe可能执行命名为“行动7”和“行动8”的操作。

图12c示出了根据图6a的表示法命名为r1至r5的物理拓扑-映射,命名为r20和r21的层-映射以及命名为r6至r15的深度-映射。图12d示出了根据图6c的表示法命名为r16,r17,r18和r24的拓扑-映射,命名为r22和r23的层-映射,以及命名为r19和r25的拓扑-通路。命名为r1到r5的拓扑-映射表示一个单个方向的物理链路。使用第一个方法计算一个拓扑-映射的命名为r16,r17和r18的拓扑-映射,使用图6c的表示法,如图12b和12d所示。

使用第一个方法计算一个计算层-映射的命名为r22的层-映射,使用第二个方法计算一个计算层-映射的命名为r23的层-映射.。使用第二个方法计算一个拓扑-映射的命名为r24的拓扑-映射,以计算拓扑-映射,如图12b和12d所示。命名为r19的拓扑-通路被计算为一个级联其由命名为r16,r17和r18的拓扑-映射所组成。命名为r25的拓扑-通路包括命名为r24的拓扑-映射,如图12b和12d所示。我们计算请求的拓扑-通路r25的递归-通路,如上所述。使用图12d所示的关系,我们递归地计算所述递归-通路和一组边-关系包括每个边的嵌套的边-关系。结果的命名为r25的拓扑-通路的递归-通路在图12e示出。

我们由操作命名’行动5'表示一个第三个操作,并且由操作命名’行动7'表示一个第四个操作。我们将一个第三个操作调用定义为以下组合:

-一个操作命名“行动5”表示一个操作

-一个命名为r19的边,表示要在其上执行所述操作的分组,

-一个逻辑节点hb表示要执行所述操作的位置,

我们将一个第四个操作调用定义为以下组合:

-一个操作命名“行动7”表示一个操作

-一个命名为r25的边,表示要在其上执行所述操作的分组,

-一个逻辑节点he表示要执行所述操作的位置,

第三个和第四个操作调用在图12f示出。

以上所述的方法的上述行动i)至iii)使用第二个示例说明

行动i):如图12b所示,物理节点pb可能执行行动5,因此操作命名“行动5”与物理节点pb一起存储。如图12b所示,物理节点pc可能执行行动6,因此操作命名“行动6”与物理节点pc一起存储。如图12b所示,物理节点pe可能执行行动7和行动8,因此操作命名“行动7”和“行动8”与物理节点pe一起存储。

行动ii):存储一个或更多个操作调用,每个操作调用由表示一个操作的操作命名(行动5;行动7),至少一个边(r19;r25)和逻辑节点(hb;he)的组合确定的,其中所述操作应该由一个sdn编译器的一个用户定义,如图12f所示。

行动iii):为所述第三个操作解释:

创建一个指令执行由所述物理节点之一(pb)对一个分组或信号的一个附加操作,其为所述存储的操作之一,if已经定义了一个操作调用是由一个操作命名(‘行动5’),至少一个边(r19)和一个逻辑节点(hb)的一个组合确定的and一个递归-通路(r25)包含一个级联其由从所述物理节点所述之一(pb)到所述一个操作调用的所述逻辑节点之一(hb)的一个或更多个在深度增加的第一个深度-映射(r8)所组成和一个级联其由从所述一个操作调用的所述逻辑节点所述之一(hb)到所述物理节点所述之一(pb)的一个或更多个在深度减少的第二个深度-映射(r9)所组成,and所述一个操作调用的所述至少一个边(r19)包含在所述物理节点所述之一(pb)的一个物理拓扑-映射(r1)或物理层-映射的一组传入边-关系(r1/r16/r19/r24/r25)里and所述一个操作调用的所述至少一个边(r19)包含在所述物理节点所述之一(pb)的一个物理拓扑-映射(r2)或物理层-映射的一组传出边-关系(r2/r17/r19/r24/r25)里and所述操作调用的附加操作命名(‘行动5’)与所述物理节点所述之一(pb)被一起存储。因此以上声明是true。

行动iii):为所述第四个操作解释:

创建一个指令执行由所述物理节点之一(pe)对一个分组或信号的一个附加操作,其为所述存储的操作之一,if已经定义了一个操作调用是由一个操作命名(‘行动7’),至少一个边(r25)和一个逻辑节点(he)的一个组合确定的and一个递归-通路(r25)包含一个级联其由从所述物理节点所述之一(pe)到所述一个操作调用的所述逻辑节点之一(he)的一个或更多个在深度增加的第一个深度-映射(r10)所组成和一个级联其由从所述一个操作调用的所述逻辑节点所述之一(he)到所述物理节点所述之一(pe)的一个或更多个在深度减少的第二个深度-映射(r11)所组成,and所述一个操作调用的所述至少一个边(r25)包含在所述物理节点所述之一(pe)的一个物理拓扑-映射(r4)或物理层-映射的一组传入边-关系(r4/r17/r19/r24/r25)里and所述一个操作调用的所述至少一个边(r25)包含在所述物理节点所述之一(pe)的一个物理拓扑-映射(r5)或物理层-映射的一组传出边-关系(r5/r18/r19/r24/r25)里and所述操作调用的附加操作命名(‘行动7’)与所述物理节点所述之一(pe)被一起存储。因此以上声明是true。

在这实例里,但不限于命名为pa,pb,pc,pd,pe,pf的物理节点具有物理数据链路层(osi第2层)媒体访问控制(mac)和网络层(osilayer3)功能。在这实例里,但不限于,命名为pg和ph的物理节点具有传输层(osi层4)和应用层(osi层7)功能。以及考虑在(d=1,n=0,h=0)的节点表示在网络层(osi层3)的逻辑节点。并考虑在(d=1,n=1,h=0)的节点表示传输层(osi层4)和应用层组合(osi层7)的逻辑节点。图12g示出了但不限于命名为r1至r5,r19和r25的边的交换-标识符。边r1的交换-标识符是“源p201,目的地p202”,在(d=0,n=0,h=0),在数据链路层表示物理附着点(poa),执行媒体访问控制(mac)。如本领域技术人员将理解的,在一个实施里一个以太网mac地址可以用为附着点(poa),而不是在这示例里使用的示例性附着点(poa)p201和p202。边r2到r5的交换-标识符也在数据链路层表示物理附着点(poa),执行媒体访问控制(mac)。在(d=1,n=0,h=0)我们使用一个ipv6源地址的3元组,ipv6目的地址和ipv6流标签,提供一个ipv6流分类。我们使用一个ipv6地址表示逻辑节点ha的附着点(poa),为一个接口和命名为r16的拓扑-映射,值为“1:2:3:4:11:11:11:10”。我们使用一个ipv6地址表示逻辑节点hf的附着点(poa),为一个接口和命名为r18的拓扑-映射,值为'1:2:3:5:11:11:11:13”。边r19的交换-标识符为“源1:2:3:4:11:11:11:10,目的地1:2:3:5:11:11:11:13,flow-label100如图12g所示。注意,在ipv6地址源和目标的表示里,前导零已被省略。ipv6流标签使用值“100”。或者,如pct/ep2014/055640(第245页)里所述,在ipv6地址内,ipv6地址的接口标识符可以用于识别逻辑节点,而地址的其余部分,包含不是节点的网络,可以通过ipv6全局路由前缀(globalroutingprefix)和/或子网标识符地址的子网表示。

为了允许移动性,一般而言,一个第一个物理节点和一个第二个物理节点之间的一个第一个拓扑-映射被删除以及一个第二个物理节点被删除了,所述第二个物理节点和一个第三个物理节点之间的一个第二个拓扑-映射被创建了,导致所述第二个物理节点的移动性。例如,一个节点作为其ipv6地址可用一个ipv6接口标识符标识节点和一个特殊的值表示“未指定”作为ipv6的全局路由前缀(globalroutingprefix)或子网标识符(subnetidentifier)。换句话说,地址唯一指定节点,而不是节点在于的网络。因此,高层次的协议,例如但不限于,tcp以及应用程序不被节点迁移到另一个网络的情况下手影响。另外,如在pct/ep2014/055640(250页)里描述,一个ipv6地址可用于识别一个节点和一个ipv6地址可用于识别不是一个节点的一个网络,允许了移动性。在(d=1,n=1,h=0)我们使用了一个协议的3元组(即一个传输标识符),一个源端口和一个目的端口。边r25的交换-标识符是“tcp,源端口80,目的端口80'的3元组表示的”传输控制协议“和众所周知的http使用的端口80,作为源和目标,的组合。另外,'protocol=6'是用来替代“tcp”,表示tcp协议。

注意,边除了边r1至r5,r19和r25,其它没有分配一个交换-标识符。

如图12h所示,命名为r25的拓扑-通路的递归-通路为每个在所述递归-通路的物理节点,其为物理节点pa,pb,pc,pd,pe,pf,pg和ph包括了以下信息:

‐一个输入端口,

‐一个输出端口,

‐一组传入边-关系,

‐一组传出边-关系。

注意,以上输入端口,输出端口,一组传入边-关系以及一组传出边-关系是包含在命名为r1到r5的拓扑-映射以及命名为r20和r21的层-映射里的信息。

通过确定一个相关的一组传入和/或一组传出边-关系,如上所述,一组传入和/或一组传出边-关系里的边数量可以被减少。(参照pct/ep2014/055640,197页)。上述输入端口,输出端口,一组传入边-关系,一组传出边-关系,和一组传入边-关系的交换-标识符和一组传出边-关系的交换-的标识符的组合的结果是物理节点的转发项。以上所述的方法可能用于计算物理分组-交换节点的转发项。以上所述的方法可能用于计算物理非-分组-交换节点的转发项。

我们提出在另一选择方法里创建转发项,其中,递归计算的和存储的嵌套的边-关系的数量减少了。

pct/ep2014/055640(175页)描述了一个用于计算一个拓扑-通路-映射的第二个方法,,包括以下行动(稍微修改的措词):

计算与存储从在(d,n,h1)的一个第一个网络到在(d,n,h1)的一个第二个网络的拓扑-映射为一个级联其由从所述第一个网络到在(d,n-y,h2)的一个第三个网络的第一个层-映射,从所述第三个网络到在(d,n-y,h2)的一个第四个网络的一个拓扑-通路和从第四个网络到所述第二个网络的一个第二个层-映射所组成,其中y大于零和小于或等于n-n_min(d),n_min(d)作为在特定的深度d的一个最底层以及n_min(d)是=>0,所述拓扑-通路是一个或更多个第二个拓扑-映射的一个级联,

可选地存储所述拓扑-映射的边-关系包括一个第一个边-关系(r22/r24)其为第一个层-映射与所述第一个拓扑-映射之间的一个关系,一个或更多个第二个边-关系(r19/r24)其为在所述拓扑-通路里的所述一个或更多个第二个拓扑-映射里的一个与所述第一个拓扑-映射的一个关系或一个第二个边-关系其为所述拓扑-通路与所述第一个拓扑-映射之间的一个关系以及一个或更多个第四个边-关系其为一个或更多个第二个拓扑-映射里的一个与所述拓扑-通路之间的一个关系,以及一个第三个边-关系(r23/r24)其为第二个层-映射与所述第一个拓扑-映射之间的一个关系。

注意,在以上的描述里所述第二个方法为计算一个拓扑-映射使用了一个拓扑-通路而不是一个拓扑-级别-通路,以帮助解释。所描述的方法也可以应用于当第二个方法使用一个拓扑-级别-通路计算一个拓扑-映射。

如本领域技术人员将理解的,典型地不同的层次使用不同的识别符和转发或交换是基于所述层的所述标识符来执行的。因此,我们执行以下操作,如图12h所示:

a)在一个请求的-通路(r25)的递归-通路的计算之后,从所有一组边-关系(r1/r16/r19/r24/r25;r2/r17/r19/r24/r25;r3/r17/r19/r24/r25;r4/r18/r19/r24/r25;r5/r18/r19/r24/r25)包含使用第二个计算拓扑-映射的方法计算的所述第二个边-关系(r19/r24)删除所述第二边-关系(r19/r24),以及任何跟随的边关系(r24/r25),但是当要为所述物理节点之一(pe)创建执行一个附加操作的一个指令时保留一个或更多个边(r25),根据一个定义的操作调用如由一个操作命名(行动7),至少一个边(r25)和逻辑节点(he)的一个组合识别的,

b)在一个请求的-通路(r25)的递归-通路的计算之后,从所述递归-通路里的所有物理节点(pa)的所有在层次减少的传入层-映射(r20)的一组传入边-关系(r20/r22/r24/r25)删除使用第二个计算拓扑-映射的方法计算的所述第一个边-关系(r22/r24)以及任何跟随的边关系(r24/r25),但当要为所述物理节点之一(pe)创建执行一个附加操作的一个指令时保留一个或更多个边,根据一个定义的操作调用如由一个操作命名,至少一个边和一个逻辑节点的一个组合识别的,

c)在请求的-通路(r25)的递归-通路的计算之后,从所述递归-通路里的所有物理节点(pa)的所有在层次增加的传出层-映射(r21)的一组传出边-关系(r21/r23/r24/r25)删除使用第二个计算拓扑-映射的方法计算的所述第三个边-关系(r23/r24)以及任何跟随的边关系(r24/r25),但当要为所述物理节点之一(pe)创建执行一个附加操作的一个指令时保留一个或更多个边,根据一个定义的操作调用如由一个操作命名,至少一个边和一个逻辑节点的一个组合识别的。

注意,在图12h里,为了要为物理节点之一(pe)创建执行一个附加操作的一个指令根据一个定义的操作调用根据由一个操作命名(行动7),至少一个边(r25),和一个逻辑节点(pe)的一个组合识别的,边r25被保留在所述物理节点的一组传入边-关系和一组传出边-关系里。

以上输入端口,输出端口,一组传入边-关系以及一组传出边-关系如图12h所示和图12g所示的交换-标识符的组合导致物理节点pa,pb,pc,pd,pe,pf,pg和ph的转发项,如图12i的第二列至第六列所示。图12i的第一列示出了一个设备。

所述转发项包括一个输入端口,一个输出端口,一组传入边-关系的交换-标识符和一组传出边-关系的交换-标识符,以及要在边上执行的一个操作,如图12i的第七列所示。在括号之间示出了要执行所述操作的边。在图12i里,一个边的交换-标识符在每个边之后在括号之间示出。在图12i里,'源'缩写为'src','目的'缩写为'dst'。注意,在第六个分组转发系统里,在网络层(osi第3层)转发一个分组是基于命名为r19的拓扑-通路的交换标识符,为“源1:2:3:4:11:11:11:10,目的1:2:3:5:11:11:11:13,流-标签100”,并且执行命名为“行动5”的操作于一个传入分组基于命名为r19的拓扑路径的交换-标识符,为‘源1:2:3:4:11:11:11:10,目的1:2:3:5:11:11:11:13,流-标签100’。注意,在第九个分组转发系统里,在网络层(osi第3层)转发一个分组是基于命名为r19的拓扑-通路的交换标识符,为“源1:2:3:4:11:11:11:10,目的1:2:3:5:11:11:11:13,流-标签100”,并且执行命名为“行动7”的操作于一个传入分组基于命名为r25的拓扑路径的交换-标识符,为‘源1:2:3:4:11:11:11:10,目的1:2:3:5:11:11:11:13,流-标签100’。

注意,在不会定义所述第四个操作调用的情况下,物理节点pe将基于边r24和r25的交换-标识符执行mac,并且将基于边r19的交换-标识符,而不是在边r25的交换-标识符转发一个分组。

注意,当另外已经创建了一个请求的拓扑-通路r19时,物理节点pe将具有如图12i所示的一个转发指令,并且还具有包括边r24和r25的交换-标识符的转发指令,在数据链路上执行mac层,以及边r19的交换标识符,在网络层上执行分组转发。

对接收的一个分组执行的所述附加操作可能包括监视分组的包头,修改所述分组的包头,记录所述分组的包头,缓冲所述分组的包头,监视分组有效载荷,修改所述分组有效载荷,记录所述分组有效载荷,缓冲所述分组有效载荷和缓冲分组和/或阻止分组。所描述的方法可以用于例如但不限于实施通常在于所谓的中间匣子里的功能。

如pct/ep2014/055640(126和245页)里所述,当使用虚拟资源,例如但不限于虚拟机或容器时,上述方法提供了网络功能虚拟化(nfv),其中一个虚拟节点可以执行可选地操作,例如但不限于在将分组转发到其一个或更多个输出端口之前监视和/或记录和/或缓冲和/或修改传入分组的包头和/或有效载荷,或阻止传入分组。注意,如上所述,诸如一个虚拟机的虚拟节点在方法里被表示为物理节点(参照pct/ep2014/055640186页)。注意,在上述描述里,在主机节点的情况下还参考“转发项”,用作物理设备的指令的一个单个术语。如本领域技术人员将理解的,一个主机节点不转发,而仅发送和接收分组或信号。

如上所述,拓扑-通路是拓扑-映射的一个级联(参照pct/ep2014/055640174页)。一个第一个拓扑-通路可以包括第二个拓扑-通路,创建第一个拓扑-通路和第二个拓扑-通路的一个嵌套。图63dpct/ep2014/05564(在253页和254页里描述)示出了用于具有一个第四个边的命名的一个第四个边的表示法,第四个边是一个第四个边的类型,并且包括平行的一个第一个级联和一个第二个级联。该表示法也在图13a里示出。“&”符号表示一个级联的开始,所述级联在括号“()”之间示出了,与一个或更多个其它级联并行。图13a里的一系列点表示任意数量的级联等于或高于二。“&”符号的使用不限于公开的pct/ep2014/055640里的图63c的示例,而是可以一般使用。因此,拓扑-通路可以包括两个或更多个并行级联,每个所述并行级联是在(d,n,h)的零个或更多个拓扑-映射和在(d,n,h)的零个或更多个拓扑-通路的级联,所述拓扑-映射的数量和所述拓扑-通路的数量使得它们的和是至少一。作为示例,但不限于图13b示出了命名为k21至k29的逻辑节点ma,mb,mc,md,me,mf,mg和mh,拓扑-映射。如图13b里命名为k31的拓扑-通路被映射到拓扑-映射k21至k25和k28,如k21/k31,k22/k31,k23/k31,k24/k31,k25/k31,k28/k31所示。

图13c示出了根据图6c的表示法命名为k31的拓扑-通路。在图13c里,“&”符号表示一个级联的一个开始,所述级联在括号“()”之间示出,其平行于如上所述的一个或更多个其它级联。使用“(a+b)/c”等于“a/c+b/c”,其中a,b,c为边圆(参照pct/ep2014/055640214页),图13d示出了命名为k31的拓扑-通路可以用同等的更短的表示法写成。

如上所述,我们用操作命名表示操作。每个操作命名表示一个操作。

我们将操作调用定义为以下的一个组合:

-表示操作的一个操作命名,

-至少一个边,

-表示要执行所述操作的位置的一个节点,

在一个源节点里,可以在一个发送操作之前执行一个附加操作。在目的地节点里,可以在一个接收操作之后执行一个附加操作。

注意,一个逻辑网络里的所述至少一个边可以是拓扑-映射,层-映射,拓扑-通路,级别-通路或拓扑-级别-通路。

注意,所述逻辑网络里的所述至少一个边可以是一组传入边-关系里的边,被称为一个传入边,一组传出边-关系里的边,被称为一个传出边,或者一组传入边-关系和一组传出边-关系里的边。在后一种情况下,所述至少一个边通过一个逻辑节点并被称为一个横越边。

图13f示出了操作调用的示例包括表示一个操作的一个操作命名,至少一个边,表示要执行所述操作的位置的一个节点。如图13b所示,在节点ma,一组传入边-关系包含命名为k31的拓扑-通路。如图13b所示,在节点mb和mc,一组传入边-关系和一组传出边-关系包含命名为k31的拓扑-通路。如图13b所示,在节点md,一组传入边-关系包含命名为k23的拓扑-映射。如图13b所示,在节点me,一组传入边-关系包含命名为k31的拓扑-通路。如图13b所示,在节点mg,一组传出边-关系包含命名为k28的拓扑-映射。如图13b所示,在节点mh,一组传入边-关系包含命名为k28的拓扑-映射和命名为k31的拓扑-通路,根据边-关系k28/k31。

如上所述,在逻辑网络里指定一个操作调用,为以下的一个组合:

-表示操作的一个操作命名,

-逻辑网络里的至少一个边,表示应在其上执行所述操作的分组或信号,

-逻辑网络里的一个逻辑节点,其表示要执行所述操作的位置。

图13f还示出了所述至少一个边是否是一个传入边,一个传出边或一个横越边。注意,该信息不是所述操作调用的一部分,因为该信息是已知的基于定义的拓扑-映射,层-映射和拓扑-通路。

pct/ep2014/055640里描述的sdn编译器方法现在通过以下操作进行扩展:

i)存储一个或更多个操作命名,以及存储一个或更多个操作调用每个是由一个操作命名,至少一个边和表示要执行所述操作的位置的一个逻辑节点的一个组合标识的,

ii)创建执行一个附加操作的一个指令,其为所述存储的由所述物理节点对一个分组或信号的操作之一,if已经定义了一个操作调用是由一个操作命名,至少一个边和所述逻辑节点所述之一的一个组合确定的,and一个递归-通路包含一个级联其由从所述物理节点所述之一到所述逻辑节点所述之一的一个或更多个在深度增加的第二个深度-映射所组成和/或一个级联其由从所述逻辑节点所述之一到所述物理节点所述之一的一个或更多个在深度减少的第一个深度-映射所组成,and所述至少一个边包含在所述递归-通路里的所述物理节点所述之一的一个传入物理拓扑-映射或物理层-映射的一组传入边-关系里和或一个传出物理拓扑-映射或物理层-映射的一组传出边-关系里。

可选地,我们执行以下操作:

iii)存储可以执行一个或更多个操作的那些物理节点的一个或更多个操作命名,每个操作命名表示一个操作,

iv)在以上行动ii)的附加条件:and所述附加操作命名与所述物理节点之一被一起存储,

上述方法通过一个示例而示出,但不限于,如图15a至15i所示。图15a示出了通过物理链路互连的表示一个第三个计算设备的物理节点qa,表示一个第二个分组转发系统的物理节点qb,表示一个第三个分组转发系统的物理节点qc,表示一个第四个分组转发系统的物理节点qd,表示一个第五个分组转发系统的物理节点qe,表示一个第四计算设备的物理节点qf,表示一个第六个分组转发系统的物理节点qg和表示一个第五个计算设备的物理节点qh。

图15b示出了物理节点qa,qb,qc,qd,qe,qf,qg,qh和逻辑节点ma,mb,mc,md,me,mf,mg,mh,深度-映射k41至k58和拓扑-映射j1至j5和k6至k10。

图15c示出了按照图6a的表示法命命名为j1至j5和k6至k10的物理拓扑-映射。命名为j1至j5和k6至k10的拓扑-映射表示一个单个方向的物理链路。

图15d示出了根据图6a的表示法命名为k41至k58的深度-映射。图15e示出了根据图6c的表示法命名为k21至k29的拓扑-映射。使用计算拓扑-映射第一个方法计算命名为k21至k29的拓扑-映射。注意,命名为k21的拓扑-映射的源节点为逻辑节点ma,命名为k21的拓扑-映射的目标节点为逻辑节点mb,逻辑节点ma和逻辑节点mb是通过深度-映射映射到物理节点qa。

在图15e示出了“&”符号表示级联的一个开始,所述级联在括号“()”之间是与一个或更多个其它级联平行(参照pct/ep2014/055640253页)。注意,逻辑节点mh被映射到物理节点qf和qh。因此,命名为k28的拓扑-映射包括如图15e所示的并行级联。

我们计算请求的拓扑-通路k31的递归-通路,如上所述。使用图15e所示的关系,我们递归地计算所述递归-通路和一组边-关系包括每个边的嵌套的边-关系,如图15f所示。

图15g示出了从命名为k31的请求的拓扑-通路计算出的递归-通路里的物理节点qa,qb,qc,qd,qe,qf,qg,qh和逻辑节点ma,mb,mc,md,me,mg,mh的一个输入端口,一个输出端口,一组传入边-关系,一组传出边-关系如根据图15f所示的递归-通路。注意,在图15g里示出了括号()和符号&按照图15f所示的递归-通路,以表示并行级联的开始和结束。

图15g还示出了逻辑节点ma,mb,mc,md,me,mg,mh的由一个操作命名表示的附加操作,如根据图13f所示的操作调用。

我们应用上述行动i)和ii):

i)存储一个或更多个操作命名,存储一个或更多个操作调用每个操作调用是由一个操作命名,至少一个边和表示要执行所述操作的位置的一个逻辑节点的一个组合确定的(([‘f1’:k27:mf];[‘f2’:k31:mb];[‘f3’:k31:mc];[‘f4’:k23:md];[‘f5’:k31:me];[‘f6’:k28:mg];[‘f7’:k28/k31:mh])

ii)创建一个指令执行一个附加操作,为所述存储的由所述物理节点(-;qa;qb;qd;qe;qg;qf,qh)之一对一个分组或信号的操作之一if已经定义了一个操作调用是由一个操作命名(f1;f2;f3;f4;f5;f6;f7),至少一个边(k27;k31;k31;k23;k31;k28;k28/k31)和所述逻辑节点(ma;mb;mc;md;me;mg;mh)之一的一个组合确定的and一个递归-通路(k31)包含一个级联其由从一个或更多个所述物理节点(-;qa;qb;qd;qe;-;qf,qh)里所述之一到所述逻辑节点所述之一(mf;mb;mc;md;me;-;mh)在深度增加的一个或更多个第一个深度-映射(-;k42;k44;k46;k48;-;k52,k53)和/或所述逻辑节点(mf;mb;mc;-;-;mg;-)所述之一到一个或更多个所述物理节点(-;qa;qb;-;-;qg;-)里所述之一在深度减少的一个或更多个第一个深度-映射(-;k43;k45;-;-;k51;-)所组成and所述操作调用的至少一个边(k27;k31;k31;k23;k31;k28;k28/k31)被包含在所述递归-通路(k31)里所述一个物理节点(-;qa;qb;qd;qe;qg;qf,qh)的一个传入物理拓扑-映射(-;-;j1;j3;j4;-;j5,k9)或物理层-映射的一组传入边-关系里和/或一个传出物理拓扑-映射(-;j1;j2,k6;-;-;k8;-)或物理层-映射的一组传出边-关系里,

我们考虑物理节点qa能够执行命名为f1和f2的附加操作。我们考虑物理节点qb,qd,qe,qf,qg,qh能够分别执行命名为f3,f4,f5,f7,f6,f7的附加操作。

我们应用上述可选地操作iii)和iv):

iii)存储那些物理节点(qa;qb;qd;qe;qf;qg;qh)的一个或更多个操作命名其可以执行一个或更多个操作,每个操作命名(f1,f2;f3;f4;f5;f7;f6;f7)表示一个操作,

iv)在以上行动ii)附加条件:and所述附加操作命名(f1;f2;f3;f4;f5;f6;f7)与所述物理节点(qa;qa;qb;qd;qe;qg;qf,qh)所述之一被一起存储。

如以上所述,一个请求的拓扑-通路的递归-通路包含在d=0的每个节点的以下信息,h=h_min是一个物理节点,如图15h所示,用于命名为k31请求的拓扑-通路的递归-通路:

-作为物理或虚拟节点与一个拓扑-映射或一个层-映射之间的附着点(poa)的一个输入端口,例外是在递归-通路的第一个节点不具有一个输入端口因为分组或信号是由在递归-通路的第一个节点创建的

-作为物理或虚拟节点与拓扑-映射或一个层-映射之间的附着点(poa)的一个输出端口,例外是在递归-通路的最后一个节点不具有一个输出端口因为分组或信号是被在递归-通路的最后一个节点接收的

-在输入拓扑-映射的一组输入边-关系或层-映射,例外是在递归-通路的第一个节点其不具有输入拓扑-映射或一个层-映射

-在传出拓扑-映射的一组传出边-关系或层-映射,例外是在递归-通路的最后一个节点其不具有传出拓扑-映射或一个层-映射

图15h示出了从命名为k31请求的拓扑-通路计算出的递归-通路里的物理节点qa,qb,qc,qd,qe,qf,qg,qh的一个输入端口,一个输出端口,一组传入边-关系,一组传出边-关系。按照上述方法,分别在物理节点qa,qb,qd,qe,qf,qg,qh里执行的操作命名f2,f3,f4,f5,f7,f6,f7表示的附加操作也分别示于15h。

上述输入端口,输出端口,一组传入边-关系,一组传出边-关系,交换-标识符和执行的附加操作的组合的结果在物理节点的转发项,也称为转发指令。通过如上所述确定一个相关的一组传入和/或一组传出边-关系可以减少一组传入和/或一组传出边-关系里的边数量。递归-通路里的每个物理节点的转发项包括一个输入端口,一个输出端口,一组传入边-关系的交换-标识符,一组传出边-关系的交换-标识符和要执行的附加操作。以上转发项是直接或间接的发送到递归-通路里的物理节点,如一个例子但不限于,通过一个sdn控制器。

注意,当所述至少一个边是传入边或横越边时,行动ii)是:

‐创建一个指令执行由所述物理节点之一对一个分组或信号的一个附加操作,其为所述存储的操作之一if已经定义了一个操作调用是由一个操作命名,所述至少一个为传入边或横越边的边和所述逻辑节点所述之一的一个组合确定的和一个递归-通路包含一个级联其由从所述物理节点所述之一到所述逻辑节点之一在深度增加的一个或更多个第二个深度-映射所组成和and物理拓扑-映射或物理层-映射的一组传入边-关系里,

作为一个行动ii)的另一选择,可以执行以下行动v):

v)创建一个指令执行一个附加操作,为所述存储的由所述物理节点对一个分组或信号的操作之一,if已经定义了一个操作调用是由一个操作命名,所述至少一个边和所述逻辑节点所述之一的一个组合确定的and一个递归-通路包含从所述物理节点所述之一到所述逻辑节点所述之一在深度增加的一个或更多个第二个深度-映射和/或从所述逻辑节点所述之一到所述物理节点所述之一在深度减少的一个第一个深度-映射所组成and所述至少一个边包含在所述递归-通路里的所述逻辑节点所述之一的所述第二个深度-映射的一组传入边-关系里和/或所述第一个深度-映射的一组传出边-关系里。

作为示例,但不限于,我们将上述行动v)应用于图15b所示的示例网络:

创建一个指令执行一个附加操作,为所述存储的由所述物理节点(-;qa;qb;qd;qe;qg;qf,qh)之一对一个分组或信号的操作之一,if已经定义了一个操作调用是由一个操作命名(f1;f2;f3;f4;f5;f6;f7),,所述至少一个边(k27;k31;k31;k23;k31;k28;k28/k31)和所述逻辑节点(mf;mb;mc;md;me;mg;mh)所述之一的一个组合确定的and一个递归-通路(k31)从所述物理节点(-;qa;qb;qd;qe;-;qf,qh)所述之一到所述逻辑节点(mf;mb;mc;md;me;-;mh)所述之一在深度增加的一个或更多个第二个深度-映射(-;k42;k44;k46;k48;-;k52,k53)和/或从所述逻辑节点(mf;mb;mc;-;-;mg;-)所述之一到所述物理节点(-;qa;qb;-;-;qg;-)所述之一在深度减少的一个第一个深度-映射(-;k43;k45;-;-;k51;-)and所述至少一个边(k27;k31;k31;k23;k31;k28;k28/k31)包含在所述递归-通路(k31)里的所述逻辑节点(mf;mb;mc;md;me;mg;mh)所述之一的所述第二个深度-映射(-;k42;k44;k46;k48;-;k52,k53)的一组传入边-关系里和/或所述第一个深度-映射(-;k43;k45;-;-;k51;-)的一组传出边-关系里。

图15g示出了从命名为k31的请求的拓扑-通路计算出的在递归-通路里的物理节点qa,qb,qc,qd,qe,qf,qg,qh和逻辑节点ma,mb,mc,md,me,mg,mh的一个输入端口,一个输出端口,一组传入边-关系,一组传出边-关系,以及用于逻辑节点mf,mb,mc,md,me,mg,mh的附加操作,由操作命名表示。图15g示出了应用于图15b里所示的示例网络的上述行动v)。例如,图15g的第四行示出了逻辑节点mb,从物理节点qa到逻辑节点mb在深度增加的一个第二个深度-映射k42,从逻辑节点mb到物理节点qa在深度减少的一个第一深度-映射k43,和一个操作命名f2。所述至少一个边k31包含在所述递归-通路k31里的所述逻辑节点所述之一mb的一个所述第二个深度-映射k42的一组传入边-关系k42/k21/k31里和在所述第一个深度-映射k43的一组传出边-关系k43/k22/k31里。

注意,在物理节点qb里,从输出端口p433输出命名为k23*的传出数据,从输出端口p441输出命名为k25*的传出数据。可选地,也许可以使用本地状态信息来确定要使用的输出端口。例如但不限于,在物理节点qb处于第一状态的情况下,可以从输出端口p433输出命名为k23*的传出数据。例如但不限于,在物理节点qb处于第二状态的情况下,可以从输出端口p441输出命名为k25*的传出数据。例如但不限于,在物理输出端口p433处于第三状态的情况下,可以从输出端口p433输出命名为k23*的传出数据。例如但不限于,在物理输出端口p441处于第四状态的情况下,可以从输出端口p441输出命名为k25*的传出数据。可以使用物理节点,输入端口或输出端口的本地状态信息来执行保护交换。如本领域技术人员将理解的,可以通过在物理节点之间本地传送物理链路和/或物理节点故障而不是依赖于sdn编译器来实现故障检测时间的减少和适当的保护交换时间计算新的转发表项。可以基于本地通信来更新物理节点,输入端口或输出端口的状态。作为示例,但不限于双向转发检测(bfd)可以在两个物理节点之间用于检测单向链路故障。

注意,一个拓扑-通路本身是一个有向图。作为示例,但不限于,命名为k31的拓扑-通路本身是一个有向图,如图13e所示。图13e示出了逻辑节点ma,mb,mc,md,me,mg,mh和命名为k31的拓扑-通路。与图13b相比,在图13e里,未示出命名为k21至k29的拓扑-映射。此外,一个拓扑-通路指定通过的拓扑-映射的顺序,从而指定通过的节点的顺序。作为示例,但不限于,如图13c和13d所示,命名为k31的拓扑-通路的定义指定在拓扑-映射k22之前通过拓扑-映射k21,在拓扑-映射k22之前通过拓扑-映射k23和在拓扑-映射k22之前通过拓扑-映射k25。注意,命名为k31的拓扑-通路导致从逻辑源节点ma到逻辑目的节点me和mh的多播。

从一个或更多个节点开始的一个拓扑-通路,通过一个或更多个节点,在一个或更多个节点结束,在那里至少一个操作调用被定义,导致顺序或并行地执行一个或更多个操作调用,并且可以是视为包括一个或更多个操作调用的程序。

所述操作调用和拓扑-通路由一个sdn编译器的一个用户定义,从而向一个sdn编译器的所述用户提供一个逻辑网络的可编程性。所述拓扑-通路可以是一个请求的拓扑-通路。作为示例,但不限于,所请求的拓扑-通路k31可以被认为是包括图13f所示的操作调用的程序。

注意,如上所述,一个第一个拓扑-通路可以包括一个第二个拓扑-通路,创建一个嵌套的第一个拓扑-通路和第二个拓扑-通路,因此创建由所述第一个拓扑-通路表示的一个第一个程序和由所述第一个拓扑-通路表示的一个第二个程序的一个嵌套。

一个附加操作的一个示例是一个传递功能。在分组交换网络里,所述传送功能将一个传入分组有效载荷传送到一个传出分组有效载荷。分组有效载荷包含数据。当所述分组沿着从源节点到目的地节点的拓扑-通路运行时,所述数据是在运行,因此所述传递功能是对运行的数据执行的。在非-分组-交换网络里,所述传送功能将传入信号传送到输出信号。信号包含数据。当所述信号沿着从至少一个源节点到至少一个目的地节点的拓扑-通路运行时,所述数据是在运行,因此所述传递功能是对运行的数据执行的。传递功能的一个例子,但不限于此,是在计算设备的软件里执行的过程。传递功能的示例但不限于以软件,计算机代码,在硬件执行的过程,一个物理过程改变一个传入信号或数字信号处理。

如本领域技术人员将理解的,一个网络包括节点在其对在运行的数据执行了一个传递功能类似于一个数据流架构。在数据流架构里,操作的执行完全基于操作的输入参数的可用性或存在。相比之下,在冯·诺依曼(vonneumann)结构里,执行操作取决于程序计数器。在分组交换网络里,操作的所述一个或更多个输入参数是一个或更多个分组。在非分组交换网络里,指令的所述一个或更多个输入参数是一个信号。

我们考虑由以上所述操作由命名f1到f7表示的附加操作是传递功能。图13g示出了操作调用,其包括表示操作的操作命名,至少一个边,表示将执行所述操作的位置的一个节点。图13g还示出了操作命名和数据,输入数据和所述操作的传出数据之间的关系。

我们使用一个节点命名来表示静止的-数据,并通过所述节点命名后的一个星号(*)参照所述静止的-数据。我们认为静止的-数据是任何数据被存储在特定位置。一个例子,但不限于,静止的-数据是本地存储在硬盘驱动器上的文件。我们认为运动的-数据是从一个第一个位置移动到一个第二个位置的数据。作为运动的-数据的示例,但不限于是一个视频流。作为示例,但不限于,节点命名可以是逻辑存储器或逻辑内容的逻辑标识符,如下面将更详细地解释的。我们使用拓扑-映射或层-映射命名来表示运动的-数据,并通过所述拓扑-映射命名或所述层-映射命名后跟星号(*)来参照所述运动的-数据。作为示例,但不限于,如图13g的第二行所示,我们使用节点命名mf来表示静止的-数据,并且通过所述节点命名后的星号来参考所述静止的-数据,(*)mf*。作为示例,但不限于,如图13g的第二行所示,我们使用拓扑-映射k27来表示运动的-数据,并且通过所述拓扑-映射后是星号来参考所述运动的-数据,(*)k27*。

图13g的第五列标签为“操作命名和数据的关系”描述传入数据,传出数据和一个操作命名之间的关系使用的表示法:

传出数据=操作命名(传入数据)

作为示例,但不限于,如图13g的第二行所示,在逻辑节点mf处使用命名为f1的操作将静止的-数据mf*传送到运动的-数据k27*。作为示例,但不限于,如图13g的第三行所示,使用命名为f2的操作在逻辑节点mb将运动的-数据k21*传送到运动的-数据k22*。作为示例而不限于,如图13g的第四行所示,运动的-数据k22*在逻辑节点mc使用命名为的操作f3传送到运动的-数据k23*和运动的-数据k25*。作为示例而不限于,如图13g的第五行所示,使用在逻辑节点md命名为f4的操作将运动的-数据k23*传送到运动的-数据k24*。作为示例而不限于,如图13g的第六行所示,运动的-数据k24*被传送到逻辑节点me的静止的-数据me*。作为实例,但不限于,如图13g的第七行所示,使用操作命名f6在逻辑节点mg将运动的-数据k25*传送到运动的-数据k28*。作为示例而不限于,如图13g的第八行所示,运动的-数据k28*被传送到逻辑节点mh处静止的-数据mh*

注意,由一个sdn编译器的一个用户指定的一个拓扑-通路和一个或更多个操作调用确定了操作命名,输入数据和输出数据之间的关系,以及因此可以生成。作为示例,但不限于,图13c和13d所示的命名为k31的拓扑-通路和图13f所示的命名为f1至f7的操作调用确定了图13g所示的操作命名和数据之间的关系。作为一个例子,但不限于,图13c里的“k21/k31+k22/k31”表示命名为k31的拓扑-通路包含一个级联其由命名为k21的一个拓扑-映射和命名为k22的一个拓扑-映射所组成。根据命名为k21和k22的拓扑-映射的定义,命名为k21和k22的拓扑-映射在逻辑节点mb互连,在图15e所示,以及图15d所示的深度-映射k42和k43。因此,逻辑节点mb的操作命名和数据之间的关系为k22*=f2(k21*),如图13g所示。作为示例,但不限于,图13c里的“k22/k31+(&(k23/k31+...)&(k25/k31+...))”表示命名为k31的拓扑-通路包含一个级联其由命名为k22和k23和k25的并行拓扑-映射所组成。根据图15e所示的命名为k22,k23和k25拓扑-映射,以及在图15d所示深度-映射k44和k45的定义,命名为k22,k23和k25的拓扑-映射在逻辑节点mc互连。

因此,如图13g所示,在逻辑节点mc的操作命名和数据之间的关系是(k23*,k25*)=f3(k22*)。操作命名,输入数据和和输出数据之间的关系可以从一个请求的拓扑-通路的递归-通路和一个或更多个指定的操作调用里生成。

注意,多个拓扑-通路可由一个sdn编译器的一个用户在一个包含逻辑节点和拓扑-映射的逻辑网络里定义,因此多个程序,每个程序由一个拓扑-通路表示,可以定义一个逻辑网络。图14a示出了逻辑节点ma,mb,mc,md,me,mf,mg和mh,命名为k21至k29的拓扑-映射。我们考虑一个命名为k32的拓扑-通路,映射到拓扑-映射k21至k26,如图14a里的k21/k31,k22/k31,k23/k31,k24/k31,k25/k31,k26/k31所示。图14b示出了根据图6c的表示法命名为k32的拓扑-通路。在图13c里,“&”符号表示级联的开始,所述级联在括号“()”之间示出了,其平行于如上所述的一个或更多个其它级联。使用“(a+b)/c”等于“a/c+b/c”,其中a,b,c是边(参照pct/ep2014/055640第214页),命名为k32的拓扑-通路可以用同等的较短的表示法写成,如图14c所示。

图14d示出了操作调用包括表示操作的一个操作命名,至少一个边,表示要执行所述操作的位置的一个节点的示例。在图14d里,所有边(k32)都被认为是横向边。图14d还示出了操作命名和传入和传出数据之间的关系。作为示例而不限于,如图14d的第三行所示,运动的-数据k23*和运动的-数据k26*在逻辑节点md使用命名为f9的操作传送到运动的-数据k24*。注意,命名为f9的附加操作的操作命名与传入和传出数据之间的关系为“k24*=f9(k23*,k26*)”,如图14d所示,因此命名为f9的附加操作对传入数据k23*和k26*,这可以被认为是所述附加操作的参数。通常,附加操作可能具有任意数量的参数,由传入拓扑-映射或层-映射表示。通常,额外的操作可以具有任意数量的结果,由传出拓扑-映射或层-映射表示。作为示例,但不限于操作命名与命名为f8的附加操作的输入和传出数据之间的关系是“(k23*,k25*)=f8(k22*)”,如图14d所示,因此附加操作命名为f8有两个结果:k23*和k25*。

创建多个逻辑拓扑-通路,每个拓扑-通路表示一个程序,这允许多个程序的有效实施。作为示例,但不限于,我们认为逻辑节点ma是存储的逻辑标识符,例如但不限于视频内容。通常,可能需要用所述内容执行多个活动,例如:将所述视频内容分发给最终用户,将所述视频内容分发到视频分发者,将所述视频内容分发到内容分发网络(cdn)里的高速缓存,以各种帧格式制作所述视频内容的副本,以一种或多种语言对所述视频内容进行字幕翻译。所述多个活动里的每一个可以由拓扑-通路描述。使用单个逻辑网络,在包括逻辑节点ma,mb,mc,md,me,mf,mg,mh的图13b所示的该示例里,允许一个sdn编译器的一个用户对于所述视频内容使用相同的逻辑命名,在这个例子里是逻辑节点ma。如本领域技术人员将理解的,或者,可以为每个程序创建一个单独的逻辑网络。

注意,一组传入边-关系可以同时包含数据和控制。作为示例,但不限于,逻辑节点mc的一组传入边-关系是k44/k22/k31,如图15g所示。命名为k22的拓扑-映射表示数据,即运行的数据k22*。命名为k31的拓扑-通路与操作命名f4相关,根据图13f所示的操作调用,因此命名为k31的拓扑-通路确定或控制要执行的附加操作。作为示例,但不限于,如图15h所示,物理节点qb的一组传入边-关系是j1/k22/k31。再次,命名为k22的拓扑-映射表示数据,即运行的数据k22*。命名为k31的拓扑-通路与操作命名f4相关,根据图13f所示的操作调用,因此命名为k31的拓扑-通路确定或控制要执行的附加操作。

pct/ep2014/055640(权利要求1,行动f)描述了从所述递归-通路创建所述递归-通路里的物理节点的转发表项。用于指令具有期望的转发行为的分组转发设备的当前领先协议是openflow,但是本发明不限于或绑定到openflow协议,而是通用的,并且可以与提供对分组转发设备的转发表(多个)的编程访问。转发表(多个)包含与传入分组和输入端口的信息的匹配信息,为分组转发提供期望的输出端口(多个)(参照pct/ep2014/0556401页)。

另个选择,可以由一个sdn编译器为一个或更多个物理节点生成代码。任何传统的编译器也许可以用来编译所述代码。所述编译的代码可以部署在所述每个物理节点。作为示例,但不限于,如上所述的图15h所示的信息用于生成物理节点qa,qb,qc,qd,qe,qf,qg和qh的代码。我们考虑一个支持消息-传递(message-passing)和模式-匹配(pattern-matching)的编程语言。

我们使用表示法“p!{x,y}“发送一个消息,也称为分组,包括一个元组{x,y},x是一组传出边-关系,y是从输出端口p输出的数据。

我们使用表示法“receive{q,v,_w}->f”与一个元组{q,v}进行模式-匹配,q是一个输入端口,v是一组传入边-关系,_w是输入数据,以及f为操作命名。下划线符号“_”用作通配符号。

我们使用y=f(w)来表示具有输入数据w和输出数据y的操作命名f的附加操作。代码也许可以为所述附加操作生成,这在本例里未示出。

使用输入端口(q),输出端口(p),一组传入边-关系(v),一组传入边-关系(x),网络操作(发送,接收,交换),附加操作(f),传入数据(_w),传出数据(y)图15h里所示,导致产生伪码图16里所示的。图16示出了从命名为k31请求的拓扑-通路计算的递归-通路里的物理节点qa,qb,qc,qd,qe,qf,qg,qh要执行的伪代码。图16所示的代码实例使用由附着点(poa)表示的端口,向其发送分组并从其接收分组。或者,由拓扑-映射表示的信道可以用于向其发送分组并从其接收分组。

上述代码生成方法的优点是物理节点或虚拟节点不被在其可以执行的附加操作所约束,导致增加的网络可编程性。作为示例,但不限于,可以为虚拟机或容器生成特定代码,所述虚拟机或容器可以部署在特定的物理节点。

在以上示例里,生成代码是为了发送消息,接收消息和执行附加操作。另外,为了增加实施的绩效,在三进制可内容寻址存储器(tcam)里的模式-匹配可以用于发送消息和接收消息,同时生成用于执行附加操作的代码。可以直接或间接(使用一个sdn控制器)使用标准化协议(例如但不限于openflow)在一个sdn编译器和虚拟或物理节点之间交换用于发送消息和接收消息的指令。

如本领域技术人员将理解的,支持模式-匹配(pattern-matching)的编程语言也许可以用于生成所述代码。注意,图16所示的上述伪码使用边的命名。如本领域技术人员将理解的,也许可以使用所述边的一个交换标识符代替。

非预先公布的现有技术ep14185828.2描述了以最佳方式对物理资源进行逻辑计算,存储和网络编译的方法,从而基于逻辑计算,存储和网络的要求来选择物理资源。非预先公开的现有技术ep14185828.2(87页,权利要求16)描述了一个逻辑节点的一个要求也许可以是一个附加操作。

非预先公布的现有技术ep14185828.2(45页)描述了如何扩展pct/ep2014/055640里描述的sdn编译器方法,通过一个sdn编译器基于由一个sdn编译器的一个用户指定的逻辑节点,逻辑-拓扑-映射,和可选地逻辑层-映射的要求,相关在不同深度的节点。所述扩展允许一个sdn编译器的一个用户指定逻辑节点,逻辑节点的要求,逻辑拓扑-映射和逻辑拓扑-映射的要求,以及可选地的逻辑层-映射和逻辑层-映射的要求并且使所述sdn编译器确定物理资源,包括物理节点和物理链路,针对其可以编译所述逻辑规范,从而确定逻辑节点和物理节点之间的关系,以深度映射,物理拓扑-通路,和可选地的物理层-映射为表示。

作为一个例子,但不限于,一个sdn编译器的一个用户可以指定一个表示为逻辑计算的一个第一个逻辑节点和一个表示为逻辑计算的一个第二个逻辑节点以及从所述第一个逻辑节点到所述第二个逻辑节点的一个拓扑-映射,以及节点,在一个或更多个低层次的拓扑-映射和层-映射并使所述sdn编译器确定物理资源,针对其可一被编译所述逻辑规范,从而确定逻辑节点和物理节点之间的关系,以深度-映射,物理拓扑-通路,以及可选地的物理层-映射为表示。

要做到这一点,我们定义“已知物理节点”和“未知物理节点”。在网络模型,逻辑节点可通过深度-映射来映射到“已知”和/或“未知”物理节点。“已知物理节点”是“物理节点”,是现有的或要在在网络里设置的(虚拟)的节点和其物理节点命名被存储在一个或更多个,可以直接或间接地由编译器访问的数据库.以下,如果内容不需要“已知”的标签将不总被使用。术语“未知物理节点”是用来定义一个被逻辑节点可以通过深度-映射映射到的并且可以由一个网络的物理节点其命名被存储在所述(多个)数据库里更换的虚构物理节点。如将在以下更详细地解释,这种未知物理节点可以有利地被使用在云计算里建造网络模型的一个方法里。

另外,我们定义“已知物理拓扑-通路”和“未知物理拓扑-通路”。“已知物理拓扑-通路”是“物理拓扑-通路”,它是网络里现有的或任然要设置的两个物理节点之间的拓扑-通路,其物理拓扑-通路的命名被存储在一个或更多个数据库,可以直接或间接被编译器访问。以下,如内容不需要“已知”的标签将不总是被使用。术语“未知物理拓扑-通路”是用来定义任两个“未知物理节点”之间或者一个“未知物理节点”和一个“已知物理节点”之间,两者任一,的一个虚构物理拓扑-通路。这样一个“未知物理拓扑-通路”是可以由网络的一个物理拓扑-通路,物理拓扑-通路命名被存储在所述(多个)数据库里而更换的。如将在以下更详细地解释,这种未知物理层-映射可以有利地被使用在建造网络模型的一个方法里。

另外,我们定义“已知物理层-映射”和“未知物理层-映射”。“已知物理层-映射”是“物理层-映射”,它是网络里现有的或任然要设置的两个物理节点之间的层-映射,其物理层-映射的命名被存储在一个或更多个数据库,可以直接或间接被编译器访问。以下,如内容不需要“已知”的标签将不总是被使用。术语“未知物理层-映射”用于定义两个“未知物理节点之间或者一个未知物理节点”和一个“已知物理节点之间的一个虚构的物理层-映射。这种一个“未知物理层“映射是(还)没有连接于一个物理层-映射为其物理层-映射命名被存储在所述(多个)数据库。这种未知物理层-映射可以有利地用在建造网络模型的方法里使用,如将在以下更详细地说明。

据观察,为了提高效率起见,除了以上所定义的术语“物理节点”,“已知物理节点”,以及“未知物理节点”,使用术语“已知/未知物理节点”。这后一个术语指一组包含所有已知和未知物理节点和此组每个成员既可以是一个已知或一个未知物理节点。“已知/未知物理节点命名”是这些“已知/未知物理节点”的命名。

同样地,为了提高效率起见,除了以上所定义的术语“物理拓扑-通路”,“已知物理拓扑-通路”,以及“未知物理拓扑-通路“,使用术语“已知/未知物理拓扑-通路”。这后一个术语指一组包含所有已知和未知物理拓扑-通路和此组每个成员既可以是一个已知或一个未知物理拓扑-通路。“已知/未知物理拓扑-通路命名”是这些“已知/未知物理拓扑-通路“的命名。

非-预先-发布的现有技术ep14185828.2(47页)描述了执行的以下动作:

a)为每个通过一个或更多个深度-映射没有映射到一个物理节点的逻辑节点,创建至少一个未知物理节点以及存储所述未知物理节点的一个未知物理节点命名。这个行动是相关与非-预先-发布的现有技术ep14185828.2的权利要求1)的行动b).

b)为每个通过一个或更多个深度-映射没有映射到一个物理节点的逻辑节点,创建从所述没有映射到一个未知物理节点的逻辑节点到一个已知物理节点的一个深度-映射,以及创建从所述未知物理节点到所述没有映射到一个未知物理节点的逻辑节点的一个深度-映射,所述深度-映射是基于有向图的表示。这个行动是相关与非-预先-发布的现有技术ep14185828.2的权利要求1)的行动c).

c)创建和存储,从一个第一个逻辑节点到一个第二个逻辑节点的一个或更多个逻辑拓扑-映射,每个逻辑拓扑-映射为一个有向图的表示,被计算为一个级联其由从第一个逻辑节点到一个第一个已知/未知物理节点的一个第一个深度-映射,从第一个已知/未知物理节点到一个第二个已知/未知物理节点的一个已知/未知物理拓扑-通路和从第二个已知/未知物理节点到第二个逻辑节点的一个第二个深度-映射所组成,所述已知物理拓扑-通路是一个或更多个物理拓扑-映射的一个级联,未知所述物理拓扑-通路被创建并存储了。注意,所述一个或更多个逻辑拓扑-通路-映射是使用第一个方法来计算拓扑-映射,这个行动相关与非-预先-发布的现有技术ep14185828.2的权利要求1)的行动d).

d)通过执行一个搜索包括使每个未知物理拓扑-通路匹配与一组合适的物理拓扑-通路之一,以及使每个未知物理节点匹配与一组的合适的物理节点之一,为每个未知物理节点确定在整体网络里的一个合适的物理节点和为每个未知物理拓扑-通路确定在整体网络里的一个合适的物理拓扑-通路,以及按照所述搜索结果更换和存储每个未知物理拓扑-通路与所述一组合适的物理拓扑-通路所述之一,所述合适的物理拓扑-通路所述之一是一个或更多个物理拓扑-映射的一个级联,和更换每个未知物理节点与所述一组合适的物理节点所述之一。在这里,“物理节点”和“物理拓扑-通路”是分别可供使用的实体。它们可以是已存在或待按需建立:例如,一个节点可以由一个尚不存在的,但必要时可以被sdn编译器(或其它部件)请求设置的虚拟机来实施。这个行动相关与非-预先-发布的现有技术ep14185828.2的权利要求1)的行动e)。

我们应用上述方法于图13b所示的逻辑网络。我们的目标是通过一个sdn编译器基于由一个sdn编译器的一个用户指定逻辑节点,逻辑-拓扑-映射,操作调用和可选地的逻辑层-映射的要求,确定深度-映射,相关的逻辑节点ma,mb,mc,md,me,mf,mg,mh和表示物理资源的适当的物理节点。

图17a示出了行动a),b)和c)。图17a示出在(d=1,n=0,h=0)的逻辑节点ma,mb,mc,md,me,mf,mg,mh,在at(d=0,n=0,h=0)的未知物理节点?x1,?x2,?x3,?x4,?x5,?x6,?x7,?x8,?x9,命名为k21至k29的拓扑-映射,命名为l51至l68的深度-映射,以及命名为?l71至?l80未知物理拓扑-通路,表示为一个图里的有向边。在图17a里,问号表示未知的物理节点和未知的物理拓扑-通路。所述逻辑节点ma,mb,mc,md,me,mf,mg,mh也示于图13b里。我们应用行动a),b)和c):

a)为每个通过一个或更多个深度-映射没有映射到一个物理节点的逻辑节点(ma;mb;mc;md;me;mf;mg;mh),创建至少一个未知物理节点(?x1;?x2;?x3;?x4;?x5;?x6;?x7;?x8,?x9)以及存储所述未知物理节点的一个未知物理节点命名。注意,逻辑节点mh被映射到未知的物理节点?x8和?x9。作为示例,但不限于,一个sdn编译器的一个用户可能已经指定了不能由单个物理节点实现的逻辑节点mh的一个可用性要求,但需要多个物理节点(?x8,?x9)。作为示例,但不限于,一个sdn编译器的一个用户可能已经指定了不能由单个物理节点实现的逻辑节点mh的容量要求,但需要多个物理节点(?x8,?x9)。

b)每个通过一个或更多个深度-映射没有映射到一个物理节点的逻辑节点(ma;mb;mc;md;me;mf;mg;mh),创建从没有映射到一个已知物理节点的所述逻辑节点(ma;mb;mc;md;me;mf;mg;mh)到所述未知物理节点的一个深度-映射(l52;l54;l56;l58;l60;l62;l64;l66,l68),和存储所述未知物理节点(?x1;?x2;?x3;?x4;?x5;?x6;?x7;?x8,?x9)到所述逻辑节点(ma;mb;mc;md;me;mf;mg;mh)未映射到已知的物理节点的深度映射(l51;l53;l55;l57;l59;l61;l63;l65,l67),所述深度映射基于一个有向图的表示。图17b根据图6a的表示法示出了名为l51至l68的深度映射。

c)创建和存储一个或多个逻辑拓扑映射(k21;k22;k23;k24;k25;k26;k27;k28;k29),根据图6c的表示法如图17c所示,从一个第一个逻辑节点(ma;mb;mc;md;mc;mg;mf;mg;mg)到一个第二个逻辑节点(mb;mc;md;me;mg;md;mg;mh;mc)的每个逻辑拓扑映射(k21;k22;k23;k24;k25;k26;k27;k28;k29)为一个有向图的表示,被计算为一个级联其由从一个第一个逻辑节点(ma;mb;mc;md;mc;mg;mf;mg;mg)到一个第一个已知/未知物理节点

(?x1;?x2;?x3;?x4;?x3;?x7;?x6;?x7,?x7)的一个第一个深度-映射(l52;l54;l56;l58;l56;l64;l62;l64;l64),从一个第一个已知/未知物理节点(?x1;?x2;?x3;?x4;?x3;?x7;?x6;?x7;?x7)到一个第二个已知/未知物理节点(?x2;?x3;?x4;?x5;?x7;?x4;?x7;?x8,?x8;?x3)的一个已知/未知物理拓扑-通路(?l71;?l72;?l73;?l74;?l75;?l76;?l77;?l78,?l79;?l80),和从第二个已知/未知物理节点(?x2;?x3;?x4;?x5;?x7;?x4;?x7;?x8,?x8;?x3)到第二个逻辑节点(mb;mc;md;me;mg;md;mg;mh;mc)的一个第二个深度-映射(l53;l55;l57;l59;l63;l57;l63;l65,l67;l55)所组成,所述已知物理拓扑-通路是一个或更多个物理拓扑-映射的一个级联,所述未知物理拓扑-通路(?l71;?l72;?l73;?l74;?l75;?l76;?l77;?l78,?l79;?l80)被创建和存储。注意,命名为k21至k29的所述一个或更多个逻辑拓扑映射是使用第一个方法计算拓扑-映射计算的,

如图17d和17e所示,我们现在确定拓扑-映射k21至k29的物理实体,这将在行动d)的搜索里被使用。图17d的步骤1)示出了根据图17c命名为k21的拓扑-映射。在图17d的步骤2)里,图17d的步骤1)里的命名为l52和l53的深度-映射的值已被图17b所示的l52和l53的深度-映射的定义所更换。注意,命名为k21的拓扑-映射包括命名为ma和mb的逻辑节点,命名为l52和l53的深度-映射,零物理节点,命名为“?x1”和“?x2”的两个未知物理节点,命名为?l71的一个未知物理拓扑-通路,零物理拓扑-映射和零物理附着点(poa)。图17e在第二至第九行里示出了命名为k22至k29的拓扑-映射,使用了与上述对命名为k21的拓扑映射相同的方法。

根据上述行动d),我们为每个未知物理节点确定合适的物理节点,并通过执行搜索,包括将每个未知物理拓扑-通路与一组合适的物理拓扑-通路里的一个匹配,并且将每个未知物理节点与一组合适的物理节点里的一个匹配为每个未知物理拓扑-通路确定的合适的物理拓扑-通路。如图17f和17g所示,我们使用未知物理节点与命名为k21的拓扑-映射的未知物理拓扑-通路,为“?x1-?l71[拓扑-通路]/k21->?x2”,之间的关系作为一个第一个搜索声明,我们使用未知物理节点与命名为k21的拓扑-映射的未知物理拓扑-通路,为“?x1-?l71[拓扑-通路]/k21->?x2”,之间的关系作为一个第一个搜索声明。类似地,我们分别从未知物理节点与未知物理拓扑-通路的拓扑-映射(k22;k23;k24;k25;k26;k27;k28;k29)之间的关系,创建一个第二个,第三个,第四个,第五个,第六个,第七个,第八个和第九个搜索声明,如图17f的行2至9所示。如图17g所示,我们创建了包括所述第一个到第九个搜索声明和逻辑and的一个第十个搜索声明。所述第十个搜索声明用于所述搜索。

注意,所述第十个搜索声明包括通过所述第一个搜索声明至所述第九个搜索声明的“逻辑and”,因为所述搜索的目的是为每个未知物理节点确定一个物理节点和为每个未知物理拓扑拓扑-通路确定的一个物理拓扑拓扑-通路,根据由sdn编译器的用户定义的逻辑节点和逻辑拓扑-映射。注意,所述搜索声明包括物理实体包括节点和拓扑-通路其包括拓扑-映射为一个单个方向的链路(包括无线链路)和其与多个递归-通路的关系,在这示例里为未知物理节点(?x1;?x2;?x3;?x4;?x5;?x6;?x7;?x8;?x9)和命名为(?l71;?l72;?l73;?l74;?l75;?l76;?l77;?l78;?l79;?l80)的未知物理拓扑-通路。所述搜索是对一个物理网络包括包括通过物理拓扑-映射互联的物理节点的布局执行的,所述物理拓扑-映射是基于一个有向图的表示,如下所述。

pct/ep2014/055640(230页)描述了计算一个拓扑-映射的第一个方法,计算一个拓扑-映射的第二个方法,计算一个拓扑-映射的第三个方法,计算一个拓扑-映射的第四个方法,计算一个拓扑-映射的第五个方法,计算一个层-映射的第一个方法,计算一个层-映射的第二个方法,计算一个拓扑-通路的方法,计算一个级别-通路的方法,和计算一个拓扑-级别-通路的方法,使用于创建或重新计算一个映射或一个拓扑-通路,级别-通路或拓扑-级别-通路,可以由一个图数据库的一个查询被实现。如上所述的附加要求可以包括在这样的查询。作为一个例子,但不限于,所述上述第三个搜索声明可以由一个图数据库的一个查询被实现

非-预先-公开的现有技术ep14185828.2(第52页)描述了在所述搜索里,可以考虑可选地要求。作为可选,在以上行动c所述逻辑拓扑-映射的要求可能被存储。可选地,在行动d)每个所述逻辑拓扑-映射的所述要求可能被复制到用于计算所述未知逻辑拓扑-映射的所述未知物理拓扑-通路,以及每个所述未知物理拓扑-通路的所述要求可能匹配与在所述搜索里的一个物理拓扑-通路的属性,所述物理拓扑-通路的所述属性是通过物理拓扑-映射的属性,从其计算所述物理拓扑-通路,确定的。

图17h示出了命名为k21至k29的一个逻辑拓扑-映射的要求如何与命名为?l71至?l80的一个未知物理拓扑-通路的要求相关,这根据边-关系(?l71/k21;?l72/k22;?l73/k23;?l74/k24;?l75/k25;?l76/k26;?l77/k27;?l78/k28;?l79/k28;?l80/k29),如图17c所示。可选地,在行动b)可能存储上述一个或更多个逻辑节点的要求。可选地,在权利要求1)的行动d),每个所述逻辑节点的所述要求可能通过一个或更多个深度-映射被复制到未知物理节点通过一个或更多个深度映射映射到所述逻辑节点,和每个所述未知物理节点的所述要求可能与所述搜索里的所述物理节点的属性匹配。可选地,在权利要求1)的行动d),每个所述逻辑节点的所述要求可以通过一个或多个深度映射被复制到映射到所述逻辑节点的所述未知物理节点,并且每个所述未知物理节点的所述要求可能与所述搜索中的所述物理节点的属性匹配。

图17i示出了逻辑节点(ma;mb;mc;md;me;mf;mg;mh)的要求如何与命名为(?x1;?x2;?x3;?x4;?x5;?x6;?x7;?x8,?x9)的物理节点的要求相关,根据命名为(l51,l52;l53,l54;l55,l56;l57,l58;l59,l60;l61,l62;l63,l64;l65,l66;l67,l68)深度-映射,如图17b所示。图17i还示出了在逻辑节点(mf;mb;mc;md;me;mg;mh)的一个操作命名(f1;f2;f3,f8;f4,f9;f5;f6,f10;f7)的要求,如何根据图13f和14d成为命名为

(?x1;?x2;?x3;?x4;?x5;?x7;?x8,?x9)的未知物理节点的一个要求。

我们现在考虑一个物理网络布局对其执行了所述搜索,所述物理网络布局包括可供使用的节点和链接。我们考虑物理网络包括物理节点qa,qb,qc,qd,qe,qf,qg,qh以及命名为j1至k10的物理拓扑-映射如图15a和15b所示和以上所述。

我们执行如图17g所示的上述第十个搜索声明对图15b所示的物理网络布局的搜索关系,并且包括图17i所示的操作命名要求。如图17i所示以及在以上行动d)描写的逻辑节点(ma;mb;mc;md;me;mg;mh)的要求被分别复制到命名为(?x1;?x2;?x3;?x4;?x5;?x7;?x8,?x9)的未知物理节点。包含要求的搜索声明是用伪代码编写的:

match(?x1-?l71[拓扑-通路]->?x2)

andmatch(?x2-?l72[拓扑-通路]->?x3)

andmatch(?x3-?l73[拓扑-通路]->?x4)

andmatch(?x4-?l74[拓扑-通路]->?x5)

andmatch(?x3-?l75[拓扑-通路]->?x7)

andmatch(?x7-?l76[拓扑-通路]->?x4)

andmatch(?x6-?l77[拓扑-通路]->?x7)

andmatch(&(?x7-?l78[拓扑-通路]->?x8)&(?x7-?l79[拓扑-通路]->?x9))

andmatch(?x7-?l80[拓扑-通路]->?x3)

where操作-命名?x1等于“f1”

and操作-命名?x2等于“f2”

and操作-命名?x3等于“f3”

and操作-命名?x3等于“f8”

and操作-命名?x4等于“f2”

and操作-命名?x4等于“f9”

and操作-命名?x5等于“f5”

and操作-命名?x7等于“f6”

and操作-命名?x7等于“f10”

and操作-命名?x8等于“f7”

and操作-命名?x9等于“f7”

return?x1,?x2,?x3,?x4,?x5,?x6,?x7,?x8,?x9,?l71,?l72,?l73,?l74,?l75,?l76,?l77,?l78,?l79,?l80

根据以上可选地行动v),可以执行一个或更多个操作的一个或更多个操作命名在存储物理节点(qa;qb;qd;qe;qf;qg;qh),每个操作命名命名(f1,f2;f3;f4;f5;f7;f6;f7)表示一个操作。上述搜索声明将返回一个数目的匹配包括图18a和18b所示的匹配。图18a示出了未知的物理节点(?x1;?x2;?x3;?x4;?x5;?x6;?x7;?x8;?x9)如何与物理节点(qa;qa;qb;qd;qe;qa;qg;qf;qh)匹配。图18b示出了命名为(?l71;?l72;?l73;?l74;?l75;?l76;?l77;?l78;?l79;?l80)的未知物理拓扑-通路通路如何与一个物理拓扑-通路(l71;l72;l73;l74;l75;l76;l77;l78;l79;l80)匹配,根据图6c的表示法。

注意,在本示例里,我们不考虑命名为k21的逻辑拓扑-映射的任何要求,因此“/k21”已从搜索声明(?x1-?l71[拓扑-通路]/k21->?x2)里被省略,缩减了声明为(?x1-?l71[拓扑-通路]->?x2)。类似地,我们不考虑任何命名为k22,k23,k24,k25,k26,k27,k28,k29的逻辑拓扑-映射的任何要求因此“/k22”,“/k23”,“/k24”,“/k25”,“/k26”,“/k27”,“/k28”,“/k29”从图17f所示的搜索声明里被省略。

行动d)对于上述的例子是:

通过执行一个搜索包括使每个未知物理拓扑-通路(?l71;?l72;?l73;?l74;?l75;?l76;?l77;?l78;?l79;?l80)匹配与一组合适的物理拓扑-通路之一(l71;l72;l73;l74;l75;l76;l77;l78;l79;l80),以及每个未知物理节点(?x1;?x2;?x3;?x4;?x5;?x6;?x7;?x8;?x9)匹配与一组的合适的物理节点之一(qa;qa;qb;qd;qe;qa;qg;qf;qh),为每个未知物理节点(?x1;?x2;?x3;?x4;?x5;?x6;?x7;?x8;?x9)确定在整体网络里的一个合适的物理节点(qa;qa;qb;qd;qe;qa;qg;qf;qh)和为每个未知物理拓扑-通路(?l71;?l72;?l73;?l74;?l75;?l76;?l77;?l78;?l79;?l80)确定在整体网络里的一个合适的物理拓扑-通路(l71;l72;l73;l74;l75;l76;l77;l78;l79;l80),以及按照所述搜索结果更换和存储每个未知物理拓扑-通路(?l71;?l72;?l73;?l74;?l75;?l76;?l77;?l78;?l79;?l80)与所述一组合适的物理拓扑-通路所述之一(l71;l72;l73;l74;l75;l76;l77;l78;l79;l80),所述一组合适的物理拓扑-通路所述之一(l71;l72;l73;l74;l75;l76;l77;l78;l79;l80)是一个或更多个物理拓扑-映射(l71;l72;l73;l74;l75;l76;l77;(&l78&l79);l80),的一个级联,和更换每个未知物理拓节点(?x1;?x2;?x3;?x4;?x5;?x6;?x7;?x8;?x9)与所述一组合适的物理节点所述之一(qa;qa;qb;qd;qe;qa;qg;qf;qh)。

图18c按照图6a的表示法示出了所产生的命名为l51至l68的深度-映射。图18d按照图6c的表示法示出了拓扑-映射k21至k29。作为示例,但不限于,我们创建命名为k31的一个请求的拓扑-通路,如图13c和13d所定义。图18e示出了命名为k31的拓扑-通路的递归-通路。注意,图18e所示的递归-通路与图15f所示的递归-通路相同,除了用于表示深度-映射的命名,符合图15d和图18c里定义的深度-映射之间的差异,以及在图18e里添加了命名为l71至l75,l78,l79的拓扑-通路。以上所述的方法可使用于计算请求的拓扑-通路k31的转发指令。

在上述示例里,在一个逻辑节点和一个物理节点之间没有指定深度-映射。如本领域技术人员将理解的,一个sdn编译器的一个用户可能指定一个逻辑节点和一个物理节点之间的一个或更多个深度-映射,其将导致可能包括使用在行动d)的搜索里的所述物理节点的一个搜索声明。

注意,如果由一个sdn编译器为一个或更多个物理节点生成代码,如上所述和图16所示,则如图17i所示,以上操作命名的要求将与未知物理节点一起存储,改变要求的编译代码可以在未知的物理节点执行。作为示例,但不限于此,这将以伪代码编写的上述搜索声明更改为:

match(?x1-?l71[拓扑-通路]->?x2)

andmatch(?x2-?l72[拓扑-通路]->?x3)

andmatch(?x3-?l73[拓扑-通路]->?x4)

andmatch(?x4-?l74[拓扑-通路]->?x5)

andmatch(?x3-?l75[拓扑-通路]->?x7)

andmatch(?x7-?l76[拓扑-通路]->?x4)

andmatch(?x6-?l77[拓扑-通路]->?x7)

andmatch(&(?x7-?l78[拓扑-通路]->?x8)&(?x7-?l79[拓扑-通路]->?x9))

andmatch(?x7-?l80[拓扑-通路]->?x3)

where操作-命名?x1等于“执行编译代码的能力”

and操作-命名?x2等于“执行编译代码的能力”

and操作-命名?x3等于“执行编译代码的能力”

and操作-命名?x3等于“执行编译代码的能力”

and操作-命名?x4等于“执行编译代码的能力”

and操作-命名?x4等于“执行编译代码的能力”

and操作-命名?x5等于“执行编译代码的能力”

and操作-命名?x7等于“执行编译代码的能力”

and操作-命名?x7等于“执行编译代码的能力”

and操作-命名?x8等于“执行编译代码的能力”

and操作-命名?x9等于“执行编译代码的能力”

return?x1,?x2,?x3,?x4,?x5,?x6,?x7,?x8,?x9,?l71,?l72,?l73,?l74,?l75,?l76,?l77,?l78,?l79,?l80

现在可以使用上述方法,基于一个sdn编译器的一个用户指定的要求和物理资源的特性来确定编译代码的最佳布局。

在目前it(信息技术)部署有一方面的联网,以及另一方面的存储和计算之间的松耦合。作为结果,网络对应用具有有限的可见性和应用对网络具有有限的可见性,导致it资源的次优性能。还有,网络运营商对应用具有有限的可见性以及他们的要求和应用程序开发人员对网络功能具有有限的可见性,导致次优的软件开发,以及应用程序和网络操作。pct/ep2014/055640描述了sdn编译器的方法。通过所述sdn编译器的方法用于一个整体网络,其中在一个最高层的一个逻辑节点表示逻辑存储或逻辑计算,并且其中一个请求的拓扑-级别-通路表示一个逻辑消息流,将创建网络,存储和计算之间的更紧密的耦合。注意,所述最高层是包括一个逻辑节点表示逻辑存储或逻辑计算,而不是(osi层7)'应用层“。

在pct/ep2014/055640里描述的方法被应用到一个整体网络其中一个最高层的一个逻辑节点表示逻辑存储或逻辑计算和其中一个请求的-拓扑-级别-通路表示一个逻辑消息流。这在图19示出。图19示出了网络ka,kb,kc,kd,la,lb,lc,ld和命名为l5,l14和l22的拓扑-映射,命名为l12,l13,l15,l16,l17和l18的深度-映射,命名为l7,l10,l19和l20的层-映射,命名为l11,l21和l23的拓扑-通路和边-关系。注意,除了以下词句,图19是与图5f相同。图19示出了表示一个逻辑消息流的一个命名为l23的拓扑-通路。

如本领域技术人员将理解的,一个逻辑消息流是创建于从一个第一个物理存储或计算资源的一个第一个逻辑抽象,到一个第二个物理存储或计算资源的一个第二个逻辑抽象。图19里的例子,但不限于,所述第一个物理存储或计算资源的所述第一个逻辑抽象是逻辑节点lc,所述第二个物理存储或计算资源的所述第二个逻辑抽象是逻辑节点ld,所述第一个物理存储或计算资源是物理节点kc,并且所述第二个物理存储或计算资源是物理节点kd。如本领域技术人员将理解的,通过所述消息流所交换的消息是由一个第一个逻辑节点表示的存储或计算创建的和由第二个逻辑节点表示的存储或计算采取行动的。由一个逻辑节点表示的存储或计算在一个消息行动的例子包括,但不限于,存储(部分)所述消息,回应所述消息,执行一个功能(计算)基于(部分)所述消息,并在本地存储计算结果,执行一个功能(计算)基于(部分)所述消息,并将计算结果发送到发送者,可选地的修改和转发(部分)所述消息时,执行一个功能(计算)基于(部分)所述消息,并将计算结果转发到不是该消息的发送者的另一个逻辑节点表示的存储或计算。

一个例子,但不限于,存储(部分)所述消息是一个restfulhttpput的方法[rest=代表传输状态],[http=hypertexttransferprotocol]。一个例子,但不限于,回应所述消息,是一个http的回应,回应于一个http请求。一个例子,但不限于,执行功能(计算)基于(部分)所述消息,并发送回所述的结果计算给发件人是一个soaprpc[soap=simpleobjectaccessprotocol],[rpc=remoteprocedurecall]。一个例子,但不限于,执行功能(计算)基于(部分)所述消息,并发送所述计算的结果到一个逻辑节点表示的存储或计算,所述逻辑节点不是所述消息的发送者是一个分布式计算。在图19里,命名为l23的拓扑-通路,表示一个逻辑消息-流,是一个请求的拓扑-通路导致了物理网络的转发指令,根据sdn编译方法的计算和存储资源,描写在pct/ep2014/055640。图19示出了是一个逻辑分组流的命名为l21的拓扑-通路。是一个逻辑消息流的命名为l23的拓扑-通路,被多路复用到命名为l21的一个逻辑分组流。一个消息-流是典型地被运载在分组流的分组的有效载荷里。图19示出了命名为l11的拓扑-通路是一个使用从物理节点ka到物理节点kb的方向的命名为l5的拓扑-映射表示的物理链路的一个物理分组流。

图20a至20h中给出了更详细的例子。应注意的是,将pct/ep2014/055640中描述的方法应用于其中最高层的逻辑节点表示逻辑存储或逻辑计算的一个整个网络,并且其中请求的拓扑-级别-通路表示逻辑消息流可以应用于任意的一个整体网络,并不限于所呈现的示例。我们考虑一个第一个物理设备,一个第二个物理设备和一个第三个物理设备。图20a示出了通过作为物理链路的拓扑-映射连接由物理节点ke表示的所述第一个物理设备,由物理节点kf表示的所述第二个物理设备和由物理节点kg表示的所述第三个物理设备。图20a还示出了p301到p304的附着点(poa)。

图20b示出了表示在(d=0,n=0,h=0)的所述第一个物理设备的物理节点ke,在(d=0,n=0,h=0)的表示所述第二个物理设备的所述物理节点kf,以及在(d=0,n=0,h=0)的表示所述第三个物理设备的所述物理节点kg,在(d=1,n=1,h=0)的逻辑节点fe,ff和fg,在(d=1,n=2,h=0)的逻辑节点fh和fj以及在(d=1,n=3,h=0)的逻辑节点fk和fl。作为示例,但不限于,第一个物理设备ke是一个客户端,第三个物理设备kg是一个服务器,第二个物理设备kf是一个分组转发设备,示出了一个典型的客户端-服务器架构。如本领域技术人员将理解的,在一个典型部署中,将存在比第一个物理设备ke,第二个物理设备kf和第三个物理设备kg之间的线性链网络拓扑更为复杂的拓扑,通常包括许多而不是一个分组转发设备的实例。图20b还示出了命名为q1,q3,q19,q20,q24,q28的深度-映射,命名为q5至q14,q16,q17,命名为q22,q23,q26,q27和q51至q54的层-映射,以及命名为q21,q25,q29的拓扑-通路,表示为一个图里的有向边。

如将被本领域的技术人员所理解的,由一个单个物理节点来表示一个物理设备,而不是由多个物理节点来表示一个物理设备可以是有益的,由于转移指令是通常被发送到一个物理设备的,而不是到所述物理设备的各个组件。当多个物理节点来表示一个物理设备,以及一个物理设备需要为它的整体转移指令用于所述物理设备,而不是为它的组件,多个转移指令将必须被sdn编译器相结合,如在pct/ep2014/055640(198页)里描述,需要在计算之一附加步骤。此外,当通过一个单个的物理节点表示一个物理设备时,减少了例如在但不限于数据库里所存储的物理节点的数量。通过多个物理节点表示一个物理设备允许sdn编译器的一个用户对物理系统的子组件进行控制,并且也许可以降低硬件复杂性,因为创建了用于各个组件的指令。可以使用以下方法将多个物理组件表示为一个单个的物理节点。图5b示出了物理节点ka,kb,kc和kd。我们认为物理节点ka和kc为一个第一个物理设备的物理组件。如图24a所示,我们重新命名物理组件ka和kc到kx。我们认为物理节点kb和kd成为一个第二个物理设备的物理组件。我们重新命名物理组件kb和kd到ky。我们现在减少在图24a里的命名为kx的两个物理节点成为命名为kx的一个单个物理节点在图24b所示,从而命名为l7的层里的层-映射和命名为l8的层里的层-映射现在成为从物理节点kx到物理节点kx的层-映射,并且也许可被省略(参照pct/ep2014/055640图33c和60b)。我们现在减少在图24a命名为ky的两个物理节点名成为命名为ky的单个物理节点,在图24b所示,从而命名为l9的层里的层-映射和命名为l10的层里的层-映射现在成为从物理节点ky到物理节点ky的层-映射并且也许可被省略。

我们在图20b里使用这个方法表示一个第一个物理设备的物理节点ke和表示一个第二个物理设备的物理节点kg。图20c示出了按照图6a的表示法命名为q1至q4的拓扑-映射,命名为q5到q18的深度-映射,以及命名为q51到q58的物理层-映射。q51至q54的物理层-映射如图20b所示。q55至q58的物理层-映射如图22a所示,将在以下描述。注意,q51值q58的物理层-映射的方向被存储。注意,q51至q58的物理层-映射里没有存储附着点(poa)命名,因为q51至q58的物理层-映射表示一个第一个物理设备内部的物理链路。从一个第一个节点到一个第一个节点的物理层-映射的附着点(poa)命名可能被存储。图20d根据图6c的表示法示出了拓扑-映射q19,q20,q24,q28,命名为q22,q23,q26,q27的层-映射和命名为q21,q25,q29的拓扑-通路。命名为q1的拓扑-映射是从节点ke到节点kf的方向的一个物理链路。命名为q3的拓扑-映射是从节点kf到节点kg的方向的一个物理链路。使用用于计算一个拓扑-映射的第一个方法计算的命名为q19和q20的拓扑-映射,如图20b所示,并且还使用图6c的符号示出了在图20d里。使用用于计算一个拓扑-映射的第二个方法计算的命名为q24和q28的拓扑-映射,如图20b和20d所示。pct/ep2014/055640(178页)使用用于计算一个拓扑-映射的第一个方法,第三个和第四个网络可以是在(d-x,n2,h)或在(d-x,n2-y,h)的相同网络。使用用于计算一个层-映射的一个第一个方法来计算的命名为q22的层-映射,和在同一个节点ke的第三个和第四个网络的层-映射为一个级联其由命名为q12的深度-映射,命名为q51的层-映射和命名为q5的深度-映射所组成。根据图6c的表示法,命名为q22的层-映射是“层-映射q22=q12/q22+q51/q22+q5/q22”,如图20b所示,并且也使用图6c的符号示出了在图20d里。使用用于计算一个层-映射的一个第一个方法来计算的命名为q26的层-映射,和在同一个节点ke的第三个和第四个网络的层-映射,为一个级联其由命名为q16的深度-映射,命名为q52的层-映射和命名为q11的深度-映射所组成。根据图6c的表示法,命名为q26的层-映射是“层-映射q26=q16/q26+q52/q26+q11/q26”,如图20b和20d所示。

使用用于计算一个层-映射的第二个方法来计算的命名为q23的层-映射,和在同一个节点kg的第三个和第四个网络的层-映射为一个级联其由命名为q10的深度-映射,命名为q53的层-映射和命名为q13的深度-映射所组成.根据图6c的表示法,命名为q23的层-映射是“层-映射q23=q10/q23+q53/q23+q13/q23”,如图20b和20d所示。使用用于计算一个层-映射的第二个方法来计算的命名为q27的层-映射,和在同一个节点kg的第三个和第四个网络的层-映射为一个级联其由命名为q14的深度-映射,命名为q54的层-映射和命名为q17的深度-映射所组成.根据图6c的表示法,命名为q27的层-映射是“层-映射q27=q14/q27+q54/q27+q17/q27’,如图20b和20d所示。命名为q21的拓扑-通路是作为一个级联其由命名为q19的拓扑-映射和命名为q20的拓扑-映射所组成计算的,如图20b和20d所示。命名为q25的拓扑-通路是作为命名为q24的拓扑-映射计算的,如图20b和20d所示。命名为q29的拓扑-通路是作为命名为q28的拓扑-映射计算的,如图20b和20d所示。

pct/ep2014/055640(197页)描述了如仅使用一组交换-标识符的一个子集,不必计算所有的嵌套的边-关系。

pct/ep2014/055640(175页)描述了一个用于计算一个拓扑-通路-映射的一个第二个方法,,包括以下行动(稍微修改的措词):

计算与存储从在在(d,n,h1)的一个第一个网络到在在(d,n,h1)的一个第二个网络的一个第一个拓扑-映射为一个级联其由从所述第一个网络到在(d,n-y,h2)的一个第三个网络的一个第一个层-映射,从所述第三个网络到在(d,n-y,h2)的一个第四个网络的一个拓扑-通路和从一个第四个网络到所述第二个网络的一个第二个层-映射所组成,其中y大于零和小于或等于n-n_min在(d),n_min在(d)作为在特定的深度d的一个最底层以及n_min在(d)是=>0,所述拓扑-通路是一个或更多个第二个拓扑-映射的一个级联,

可选地存储所述拓扑-映射的每个边-关系包括一个第一个边-关系其为第一个层-映射与所述第一个拓扑-映射之间的一个关系,一个或更多个第二个边-关系其为在所述拓扑-通路里的所述一个或更多个第二个拓扑-映射里之一与所述第一个拓扑-映射的一个关系或一个第二个边-关系其为所述拓扑-通路与所述第一个拓扑-映射之间的一个关系以及一个或更多个第四个边-关系其为一个或更多个第二个拓扑-映射之一与所述拓扑-通路之间的一个关系,以及一个第三个边-关系其为第二个层-映射与所述第一个拓扑-映射之间的一个关系,

注意,在以上的描述里所述第二个方法为计算一个拓扑-映射使用了一个拓扑-通路而不是一个拓扑-级别-通路,以帮助解释。所描述的方法也可以应用于当第二个方法计算一个拓扑-映射使用一个拓扑-级别-通路。

我们考虑命名为q29的一个请求的拓扑-通路是请求的拓扑-通路应为其创建转发项。使用上述方法,我们通过递归计算拓扑-通路q29的递归-通路,并使用图20d所示的关系递归地为每个边计算一组边-关系,包含嵌套的边-关系。

在该方法里,我们为请求的拓扑-通路q29从递归-通路转发表项计算。一个递归-通路包含在d=0的每个节点的以下信息,h=h_min是一个物理节点(参照pct/ep2014/055640192和193页):

-一个输入端口,作为物理或虚拟节点与拓扑-映射或一个层-映射之间的附着点(poa),除了在递归-通路之一第一个节点,其为没有一个输入端口因为分组或信号是递归-通路之一第一个节点创建的。

-一个输出端口,作为物理或虚拟节点与拓扑-映射或一个层-映射之间的附着点(poa),除了在递归-通路里的最后一个节点,其为没有一个输出端口因为分组或信号是递归-通路里的最后一个节点接收的。

此外,当为每个边的一组边-关系已被计算时,递归-通路还包括:

-在传入拓扑-映射的一组传入边-关系或层-映射除了在递归-通路的第一个节点其不具有一个传入拓扑-映射或一个层-映射

-在传出拓扑-映射的一组传出边-关系或层-映射除了在递归-通路的最后一个节点其不具有一个传出拓扑-映射或一个层-映射。

在这示例中,但不限于,表示一个第一个物理设备(客户端)的物理节点ke和表示一个第三个物理设备(服务器)的物理节点kg,具有物理数据链路层(osi第2层)媒体访问控制(mac)功能,网络层(osi第3层)分组发送和接收功能,传输层(osi第4层)和应用层(osi第7层)功能,并具有物理存储和/或计算资源。在这示例中,表示分组转发功能的第二个物理设备(客户端)的物理节点kf。具有物理数据链路层(osi第2层)媒体访问控制(mac)功能和网络层(osi第3层)分组转发功能。在这个例子中,但不限于,在(d=0,n=0,h=0)我们考虑一个物理数据链路层(osi第2层),在(d=1,n=2,h=0)一个逻辑网络层(osi3层),在(d=1,n=1,h=0)一个逻辑传输层(osi层4)和一个逻辑应用层(osi层7)和在(d=1,n=3,h=0)逻辑存储和/或计算资源。例如,但不限于逻辑存储和/或计算资源可以由统一资源标识符(uri),统一资源定位符(url)来标识。命名为q26和q27的层-映射可能例如但不限于表示一个套接。从源节点fk,表示逻辑存储或计算,到目的节点fl,表示逻辑存储或计算命名为q29的请求的拓扑-通路,表示一个消息-流。

图20e示出了作为示例但不限于命名为q1,q3,q21,q25和q29的边的交换-标识符。边q1的交换-标识符是“源p301,目的地p302”,在(d=0,n=0,h=0),表示在数据链路层的物理附着点(poa),执行媒体访问控制(mac)。在图20e中,“src”是指“源”,“dst”是指“目的地”。如本领域技术人员将理解的,在实现中,以太网mac地址可以用作附着点(poa),而不是在该示例中使用的附着点(poa)p301和p302。边q3的交换-标识符是“源p303,目的地p304”,在(d=0,n=0,h=0),表示在数据链路层的附着点(poa),执行mac。

在网络层(osi第3层),我们使用ipv6流标签的3元组,ipv6源地址和ipv6目的地址字段,提供ipv6流分类。pct/ep2014/055640(图52i,201和202页)描述了ipv4地址给逻辑节点和逻辑网络的分配。在本例中,我们以相同的方式为一个ipv6地址分配给逻辑节点。由于ip地址表示一个子网附着点(poa)和包括一个子网部分和一个附着点(poa)部分,我们分配子网-标识符给命名为q19的拓扑-映射,为一个例子但不限于值“1:2:3:4/64”并且我们分配子网-标识符给命名为q20的拓扑-映射,为一个例子,但不限于值“1:2:3:5/64”,如图20f所示。我们为逻辑节点fe和命名为q19的拓扑-映射之间的接口分配一个命名为“11:11:11:10”的附着点(poa),为逻辑节点ff和命名为q19的拓扑-映射之间的接口分配一个命名为“11:11:11:11”的附着点(poa),分配一个附着点(poa)命名为“11:11:11:12”到逻辑节点ff和命名为q20的拓扑-映射之间的接口,为逻辑节点fg和命名为q20的拓扑-映射之间的接口分配命名为“11:11:11:13”的附着点(poa),如图20f所示,结果在以下ipv6地址中:

-1:2:3:4:11:11:11:10,表示具有命名为q19的拓扑-映射的节点fe的命名为11:11:11:10的附着点(poa),

-1:2:3:4:11:11:11:11,表示具有命名为q19的拓扑-映射的节点ff的命名为11:11:11:11的附着点(poa),

-1:2:3:5:11:11:11:12,表示具有命名为q20的拓扑-映射的节点ff的命名为11:11:11:12的附着点(poa),

-1:2:3:5:11:11:11:13,表示具有命名为q20的拓扑-映射的节点fg的命名为11:11:11:13的附着点(poa),

边q17的交换-标识符为“源1:2:3:4:11:11:11:10,目的1:2:3:5:11:11:11:13,流-标签100”。注意,在源和目的ipv6地址的表示中,前导零已被省略。注意,源1:2:3:4:11:11:11:10是命名为q19的拓扑-映射和节点fe的接口的ipv6地址,作为命名为q21的拓扑-通路的源节点。注意,源1:2:3:5:11:11:11:13是命名为q20的拓扑-映射和节点fg的接口的ipv6地址,作为命名为q21的拓扑-通路的目的节点。值“100”用于ipv6流-标签。可更换地,如在pct/ep2014/055640(245页)中所述,在ipv6地址中的ipv6地址的接口标识符可用于识别逻辑节点,而该地址的剩余部分,包括不是节点的网络,可以通过ipv6的全局路由前缀(globalroutingprefix)的子网和/或子网标识符(subnetidentifier)的地址来表示。为了允许移动性,一个节点可以使用标识节点的ipv6接口标识符作为其ipv6地址,并将表示“未指定”的特殊值用作ipv6全局路由前缀(globalroutingprefix)或子网标识符(subnetidentifier)。换句话说,地址唯一指定节点,而不是节点在于的网络。因此,高层次的协议,例如但不限于,tcp以及应用程序不被节点迁移到另一个网络的情况下手影响。另外,如在pct/ep2014/055640(250页)中描述,一个ipv6地址可用于识别一个节点和一个ipv6地址可用于识别不是一个节点的一个网络,允许了移动性。

在在(d=1,n=2,h=0)我们使用了一个协议的3元组(即一个传输标识符),一个源端口和一个目的端口。边q25的交换-标识符是“tcp,源端口80,目的端口80'的3元组表示的”传输控制协议“和众所周知的http使用的端口80,作为源和目的,的组合。另外,'protocol=6'是用来替代“tcp”,表示tcp协议。边q29的交换-标识符是表示来自逻辑节点fk(作为具有逻辑名称uri-1的用户代理,作为统一资源标识符(uri))的逻辑节点fl的http请求的http请求1,作为原始服务器的逻辑名命名为uri-2,如图20g所示。注意,边沿q1,q3,q21,q25和q29之外的边没有分配交换-标识符。

通过确定一个相关的一组传入和/或传出边-关系,如上所述,一组传入和/或传出边-关系里的边数量可以被减少。(参照pct/ep2014/055640,197页)。以上输入端口,输出端口,一组传入边-关系以及一组传出边-关系和交换-标识符的组合如包含在,由命名为q29的请求拓扑-通路的一个递归-通路导致的物理节点ke,kf和kg的转发项,如图20h所示。所述转发项包含的导致条目,。所述转发条目包括一个输入端口,一个输出端口,一组传入边-关系的交换-标识符以及一组传出边-关系的交换-标识符。

通过执行上述方法计算了一个物理分组-交换节点的转发项。通过执行上述方法计算了物理非-分组-交换节点的转发项。

在图20h中,一个边的交换-标识符在括号之间示出。在图20h中,'源'缩写为'src','目的'缩写为'dst'。如本领域技术人员将理解的,命名为q1,q3,q21和q25的交换-标识符确定一个分组的包头,例如在该示例中由如图20h所示的物理设备ke创建的,而标识符为q29确定分组有效载荷,例如在本例中由物理设备ke创建,如图20h所示。注意,请求的拓扑-级别-通路可能是一个单个消息-流,例如在图20a至20h的示例中,一个单个http请求“http请求1”。更实际的,一个请求的拓扑-级别-通路可以是一组消息-流,诸如多个http请求。注意,在sdn编译器的用户定义,或请求,一个请求的拓扑-级别-通路表示的消息-流可以是一个人,例如,但不限于,软件开发人员,it架构师,it运营商。注意,sdn编译器的用户定义,或请求,一个请求的拓扑-级别-通路表示的消息-流可以是一个程序,诸如例如但不限于一个编译器或一个云编排系统。注意,在这个例子命名为q25拓扑-通路的交换-标识符是“tcp源端口80,目的端口80的3元组。如本领域技术人员将理解的,用于的所谓的端口80是“公知的tcp端口”,表示的http。除了使用公知的端口,可以使用公知的端口范围之外的一个端口的号码,由sdn编译器产生的指令包括在应用层标识符之间的关系(osi层7),在这个例子中“源端口80,目的端口80“和消息-流的识别符,在该实施例”的http请求1“。注意,代替应用程序和由公知的端口提供的应用程序层(osi层7)之间的松耦合,应用程序和应用层之间的更紧密的耦合是利用上述的方法产生的。

此外,当前的做法是使用公知的tcp端口80(http)用于许多应用,使得不可能基于应用层的标识符在这些应用之间进行区分。在多个应用使用相同的ipv4或ipv6地址和相同的公知的端口(例如公知的tcp端口80),这并不罕见,这是不可能根据分组的包头信息,在所述应用之间进行区分,导致在分组的有效载荷的检查更耗费资源。使用公知的端口范围外的端口号码允许对使用在基于ip的网络相同的ipv4或ipv6地址的应用的区别。注意,以上描述中提到了“转发项”也在主机节点的情况下,用作物理设备指令的单一术语。如本领域技术人员将理解的,一个主机节点不转发,而只发送和接收分组或信号。

注意,若边被给了一个可用于转发的命名,交换-标识符可以被省略,并且可以直接从所述边的命名创建转发表项。在一个实现中,典型的边使用了不同的命名空间而不是用于转发的命名空间存储。

pct/ep2014/055640(222页)描述了可以被认为是对一个用户的一个服务的一个请求的拓扑-通路,级别-通路或拓扑-级别-通路。一个例子,但不限于,所述用户的是一个人,一个组织,或一个应用程序。通常,所述服务的要求被存储在合同,作为所述用户和所述服务提供者之间的服务-级别-协议(sla)。当一个请求的拓扑-级别-通路,其包括通过定义的一个拓扑-通路和包括通过定义的一个级别-通路,是一个消息-流,作为sdn编译器一个sla可以在应用程序和所述服务的提供者之间创建。

pct/ep2014/055640(222页)描述了sdn编译器的方法使用边-关系用于确定任何变化对一组网络的影响,并将重新计算边以保持所请求的拓扑-级别-通路表示的服务。当所请求的拓扑-级别-通路是一个消息-流时,sla现在可以由sdn编译器保持。如描述在pct/ep2014/055640(153页)拓扑-通路特性的典型要求包括,但不限于,容量(吞吐量),延迟,抖动,分组丢失,可用性和分组序列保存,是用于一个消息流的重要特征。

pct/ep2014/055640(221页)描述了根据上述方法创建一个拓扑-映射,层-映射,拓扑-通路,级别-通路或拓扑-级别-通路时,可选的一个或更多个要求被考虑到创建所述拓扑-映射,层-映射,拓扑-通路,级别-通路或拓扑-级别-通路。如本领域技术人员将理解的,通过存储网络属性和边,通过使用该信息在创建拓扑-映射,层-映射,拓扑-通路,级别-通路或创建,通过具有在任何时间计算递归-通路的能力,通过具有集中存储此信息,可以创建比当前的网络实施更复杂的要求。当一个所请求的拓扑-级别-通路是一个消息流,创建所述拓扑-级别-通路时一个或更多个要求可被考虑。

通过以下方法描述上述行动:

基于一个逻辑网络模型,由一个编译器控制一个整体网络的方法,整体网络包括两个或更多个物理节点,按照物理网络布局,物理节点被物理链接互连,逻辑网络模型包括逻辑节点,每个逻辑节点由一个逻辑节点命名表示,每个逻辑节点命名用网络中的至少一个物理节点,一个在最高层的逻辑节点表示逻辑存储或逻辑计算,由编译器执行的方法,包括以下行动:

a)存储物理节点命名,每个物理节点命名是一个物理节点的一个独特的识别符,存储物理拓扑-映射,每个物理拓扑-映射是一个方向的一个物理链路,所述物理拓扑-映射是基于有向图的表示法,以及存储所述物理节点的附着点(poa)命名,一个有关的物理节点的每个附着点(poa)命名是在某个有关的物理节点与连接有关的物理节点与另一个物理节点的一个物理链路之间的附着点(poa)的一个独特的标识符。

b)存储所述逻辑节点的逻辑节点命名,每个逻辑节点命名是一个逻辑节点的一个独特的标识符,以及存储深度-映射,所述深度-映射至少定义逻辑节点如何映射到物理节点,所述深度-映射是基于一个有向图的表示法,

c)创建和存储一个或更多个第一个逻辑拓扑-映射,从一个第一个逻辑节点到一个第二个逻辑节点的每个第一个逻辑拓扑-映射是一个有向图的表示,被计算为一个级联其由从第一个逻辑节点到一个第一个物理节点的一个第一个深度-映射,从第一个物理节点到一个第二个物理节点的一个物理拓扑-通路以及从第二个物理节点到第二个逻辑节点的一个第二个深度-映射,所述物理拓扑-通路是一个或更多个物理拓扑-映射层的级联,

d)创建和存储一个或更多个第一个逻辑层-映射,每个第一个逻辑层-映射是由从一个第三个逻辑节点到一个第四个逻辑节点的一个有向图的表示的逻辑层-映射,可选地被计算为一个级联其由从第三个逻辑节点到一个第三个物理节点的一个第三个深度-映射,从所述第三个物理节点到一个第四个物理节点的一个第一个层-映射,以及从第四个物理节点到第四个逻辑节点的一个第四个深度-映射所组成。

e)创建和存储一个或更多个第二个逻辑拓扑-映射,每个第二个逻辑拓扑-映射是从一个第五个逻辑节点到一个第六个逻辑节点的一个有向图的表示,被计算为一个级联其由从第五个逻辑节点到一个第七个逻辑节点的一个第二个逻辑层-映射,从第七个逻辑节点到一个第八个逻辑节点的一个逻辑拓扑-通路以及从第八个逻辑节点到第六个逻辑节点的一个第三个逻辑层-映射所组成,所述逻辑拓扑-通路是一个或更多个第三个逻辑拓扑-映射的一个级联,

f)创建和存储作一个级联其由一个或更多个第四个逻辑拓扑-映射所组成,所述第四个逻辑拓扑-映射是从在一个最高层的一个第九个逻辑节点到在一个在最高层的一个第十个逻辑节点的拓扑-映射,所述请求拓扑-通路表示一个逻辑消息-流,

g)为所述请求的-拓扑-通路,通过递归计算并存储的一个递归-通路,其包括由所述逻辑节点命名所示的逻辑节点,深度-映射,由所述物理节点命名所示的物理节点,物理拓扑-映射,可选地物理拓扑-映射,由物理附着点(poa)命名所示的物理附着点,所述递归通路是基于一个有向图的表示,

h)为在递归-通路里的物理节点从所述递归通路创建转发表项,

i)发送所述转发表项,无论直接或间接地到在所述递归通路中的物理节点。

可选地,执行以下可能被行动:

-在行动c)为每个所述第一个逻辑拓扑-映射存储边-关系,包括作为第一个深度-映射和所述第一个逻辑拓扑-映射之间的一个关系的一个第一个边-关系,一个或更多个第二个边-关系,每个第二个边的关系是所述物理拓扑-通路中的所述一个或更多个物理拓扑-映射之一与所述第一个逻辑拓扑-映射之间的一个关系,或一个第二个边的关系是所述物理拓扑-通路与所述第一个逻辑拓扑-映射之间的一个关系和一个或更多个第四个边-关系,每个第四个边-关系是所述一个或更多个物理拓扑-映射之一与所述物理拓扑-通路之间的一个关系,和一个第三个边-关系是所述第二个深度-映射与所述第一个逻辑拓扑-映射之间的一个关系,

-在行动d)为每个所述第一个逻辑层-映射存储边-关系,包括作为第三个深度-映射与所述第一个逻辑层-映射之间的一个关系的一个第五个边-关系,作为所述第一个物理层-映射和所述第一个逻辑层-映射之间的一个关系的一个第六个边-关系,和作为第四个深度-映射和所述第一个逻辑层-映射之间的一个关系的一个第七个边-关系,

-在行动e)为每个所述第二个逻辑拓扑-映射存储边-关系,一个第八个边-关系是第二个逻辑层-映射和所述第二个逻辑拓扑-映射之间的一个关系,一个或更多个第九个边-关系,每个第九个边-关系是所述逻辑拓扑-通路与所述第二个逻辑拓扑-映射之间的一个关系和一个第十个边-关系是一个第三个逻辑层-映射与所述第二个逻辑拓扑-映射之间的一个关系,一个或更多个第十一个边-关系,每个第十一个边-关系是所述逻辑拓扑-通路中的所述一个或更多个第三个逻辑拓扑-映射之一与所述逻辑拓扑-通路之间的一个关系。

-在权利要求1的行动f)存储一个或更多个进一步的边-关系,每个进一步的有关的边-关系是相关于一个请求的-拓扑-通路里的逻辑拓扑-映射和所述请求的-拓扑-通路之间的关系,

可选地,可能以下行动被执行:

-在行动e)计算和存储嵌套的边-关系,

如本领域技术人员将理解的,以上的方法在面向服务架构(soa)中是有益的。soa的一个示例是基于soap的web服务。例如,我们考虑一个web服务简单对象访问协议(soap)请求,如图21a所示。图21a示出了逻辑节点fk,其是具有逻辑名uri-1的用户代理,以及逻辑节点fl,其是具有逻辑名uri-2的源服务器,命名为q28的拓扑-映射,命名为q29的拓扑-通路表示“http请求1'和命名为q42的拓扑-通路表示“soap请求a”。注意,命名为q42的表示“soap请求a”的拓扑-通路映射到命名为q29的拓扑-通路,表示“http请求1”,如本示例中,soap请求是通过http进行的。根据图6c的表示法,命名为q42的拓扑-通路为“拓扑-通路q42=q29/q42”。如本领域技术人员所知,作为替代,soap请求可以通过tcp进行。

一个soa的一个例子是基于rest的web服务。如一个例子,我们考虑一个web服务rest请求[rest=representationalstatetransferrest],如图21b所示。图21b示出了逻辑节点fk,它是具有逻辑名uri-1的用户代理,逻辑节点fl是逻辑名命名为uri-2的源服务器,命名为q28的拓扑-映射,命名为q29的拓扑-通路表示“rest请求b'。注意,当rest使用http时,命名为q29的拓扑-通路是请求的拓扑-通路。

作为示例,但不限于,我们现在考虑从节点fl到节点fk的“http请求1”的响应。图22a示出了物理节点ke,kf,kg和逻辑节点fe,ff,fg,fh,fj,fk和fl,并示出了命名为q2,q4,q30,q31,q35,q39的拓扑-映射,命名为q5的深度-映射q15,q18,命名为q33,q34,q37,q38和q55至q58的层-映射,以及命名为q32,q36,q40的拓扑-通路,表示为一个图里的有向边。

图22b示出了根据图6c的表示法的拓扑-映射q30,q31,q35,q39,命名为q33,q34,q37,q38的层-映射和命名为q32,q36,q40,q41的拓扑-通路。命名为q2的拓扑-映射是从节点kf到节点ke的方向的物理链路。命名为q4的拓扑-映射是从节点kg到节点kf的方向的物理链路。使用用于计算一个拓扑-映射的第一个方法计算了命名为q30和q31的拓扑-映射,如图22a所示,并且也使用图6c的表示法示出了在图22b中。使用用于计算一个拓扑-映射的第二个方法计算了命名为q35和q39的拓扑-映射,如图22a和22b所示。使用用于计算一个层-映射的第二个方法计算了命名为q33和q37的层-映射,在所述方法中的第三个和第四个网络为相同的节点ke,如上所述。使用用于计算一个层-映射的第二个方法计算了命名为q34和q38的层-映射,在所述方法中的第三个和第四个网络为相同的节点ke,如上所述。作为原服务器的逻辑节点fl对作为用户代理的逻辑节点fk的“http请求1”的响应是图22a所示的被命名为q40的请求的拓扑-通路。所请求的拓扑-通路q40的递归-通路和转发项可以按照上述对所请求的拓扑-通路q29的描述进行计算,不再进一步描述。

图22c示出了作为逻辑节点fl的用户代理(作为逻辑节点fk和原始服务器)之间的http一个互动,包括作为所请求的拓扑-通路q29的“http请求1”和作为请求的“http响应1”命名为q40的拓扑-通路。现在,我们现在可以通过创建一个所请求的拓扑-通路来表示包含http请求和http响应的http一个互动,该请求的拓扑-通路是包括作为http请求的拓扑-通路和作为http响应的拓扑-通路的http一个互动。对于示例,但不限于,如图22c所示,我们创建一个命名为q41的请求的拓扑-通路。根据图6c的表示法,命名为q41的拓扑-通路为“拓扑-通路q41=q29/q41+q40/q41”。注意,图22c中未示出了拓扑-通路q41,以保持图22c相对简单。所请求的拓扑-通路的递归-通路q41和转发项可以按照上面对所请求的拓扑-通路q29的描述来计算,不再进一步描述。

上述方法允许创建包括两个或更多个拓扑-通路的一个互动。如本领域技术人员将理解的,这种一个互动不限于包括http请求和http响应的一个互动,而是表示逻辑存储和/或逻辑计算的两个或更多个逻辑节点之间的任何一个互动。注意,在客户端-服务器架构中,一个互动是从客户端到服务器和从服务器到客户端的点到点的一个互动,导致一个第一个请求的拓扑-通路包括一个级联其由一个第二个拓扑-通路和一个第三个拓扑-通路所组成。注意,所描述的方法允许表示逻辑存储和/或计算的任意数量的逻辑节点之间的一个互动,所述逻辑节点是在任意拓扑通过拓扑-映射连接的,并且所述互动包括任意数量的拓扑-通路的一个级联。注意,替代地,从一个第一个逻辑节点到一个第二个逻辑节点的拓扑-映射可能表示一个请求,例如但不限于图22c所示的命名为q28的一个拓扑-映射的请求。注意,替代地,从所述第二个逻辑节点到所述第一个逻辑节点的拓扑-映射可能表示一个响应,例如但不限于图22c所示的命名为q39的拓扑-映射。当使用拓扑-映射来表示请求并表示响应时,表示一个互动的所请求的拓扑-通路包括拓扑-映射的一个级联。使用上述方法,现在可以通过有向图来表示基于-消息的分布式系统中的一个软件体系结构。

pct/ep2014/055640(177页)描述了用于计算拓扑-映射的第一个方法,第二个方法,第四个方法和第五个方法中使用的拓扑-级别-通路可以是一个拓扑-级别-通路,一个拓扑-通路或一个级别-通路,因为一个拓扑-级别-通路可以包括一个单个拓扑-通路,和拓扑-级别-通路可以包括一个单个级别-通路。pct/ep2014/055640(177页,图50g)描述了当创建拓扑-映射时,拓扑-映射的计算中使用的拓扑-级别-通路可以是明确创建的拓扑-级别-通路,也可以是拓扑-映射和级别-映射的一个级联。在图20b所示的示例中,命名为q25的拓扑-通路包括命名为q24的一个单个拓扑-映射。

为了提高方法的效率,可以省略命名为q25的拓扑-通路的创建,如图23a所示。图23a示出了在(d=0,n=0,h=0)的物理节点ke,表示一个第一个物理设备,在(d=0,n=0,h=0)的表示一个第二个物理设备的物理节点kf,在(d=0,n=0,h=0)的物理节点kg,表示一个第三个物理设备,逻辑在(d=1,n=1,h=0)上的节点fe,ff和fg,在(d=1,n=2,h=0)的逻辑节点fh和fj,以及在(d=1,n=3,h=0)的逻辑节点fk和fl。图23a还示出了命名为q1,q3,q19,q20,q24,q28,命名为q5到q14,q16,q17的深度-映射,命名为q22,q23,q26,q27和q51至q54的层-映射的拓扑-映射,以及命名为q21,q29的拓扑-通路,表示为一个图里的有向边。当省略命名为q25的拓扑-通路时,命名为q28的拓扑-映射计算为“拓扑-映射q28=q26/q28+q24/q28+q27/q28’”。图20h所示的是将一个交换-标识符'tcp,源端口80,目的端口80'分配给命名为q24的拓扑-映射,产生与物理节点ke,kf和kg相同的转发指令,而不是如图20e所示的是将一个交换-标识符'tcp,源端口80,目的端口80'分配给命名为q25的拓扑-通路。

或者,如果一个拓扑-通路包含一个单个拓扑-映射,则可以使用第一个计算一个拓扑-映射的方法直接创建一个拓扑-通路。在图20b和20d所示的示例中,命名为q25的拓扑-通路包括命名为q24的一个单个拓扑-映射。图23b示出了在(d=0,n=0,h=0)的物理节点ke,表示一个第一个物理设备,在(d=0,n=0,h=0)的一个物理节点kf,表示一个第二个物理设备的和在(d=0,n=0,h=0)的一个物理节点kg,表示一个第三个物理设备的,在(d=1,n=1,h=0)的逻辑节点fe,ff和fg,在(d=1,n=2,h=0)的逻辑节点fh和fj,以及在(d=1,n=3,h=0)的逻辑节点fk和fl。图23b还示出了命名为q1,q3,q19,q20的拓扑-映射,命名为q5至q14,q16,q17的深度-映射,命名为q22,q23,q26,q27和q51至q54的层-映射,以及命名为q21,q25,q29的拓扑-通路,表示为一个图里的有向边。

作为一个第一个示例,但不限于,如图23b所示,命名为q25的拓扑-通路可以被计算为“拓扑-通路q25=q22/q25+q21/q25+q23/q25”。作为一个第二个示例,但不限于,如图23b所示,命名为q29的拓扑-通路可以被计算为“拓扑-通路q29=q26/q29+q25/q29+q27/q29”。pct/ep2014/055640(175至177页)描述了计算一个拓扑-映射的一个第一个方法,计算一个拓扑-映射的一个第二个方法,计算一个拓扑-映射的一个第三个方法,计算一个拓扑-映射的一个第四个方法,以及计算一个拓扑-映射的一个第五个方法。如果拓扑-通路包含一个单个拓扑-映射,则计算一个拓扑-映射的第一个方法,计算一个拓扑-映射的第二个方法,计算一个拓扑-映射的第三个方法,计算一个拓扑-映射的第四个方法,计算一个拓扑-映射的第五个方法可以直接计算拓扑-通路:

用于直接计算拓扑-通路的一个第一个方法,包括以下操作:

计算和存储从在(d,n1,h)的一个第一个网络到在(d,n1,h)的一个第二个网络的一个拓扑-通路为一个级联其由从所述第一个网络到在(d-x,n2,h)的一个第三个网络的一个深度-映射,从所述第三个网络到在(d-x,n2,h)的一个第四个网络的一个拓扑-级别-通路和从所述第四个网络到所述第二个网络的一个深度-映射所组成,其中x是大于零和小于或等于d,其中n1也许等于n2。

直接计算拓扑-通路的一个第二个方法,包括以下行动:

计算和存储从在(d,n,h)的一个第一个网络到在(d,n,h)的一个第二个网络的一个拓扑-通路为一个级联其由从所述第一个网络到在(d,n-y,h)的一个第三个网络的一个层-映射,从所述第三个网络到在(d,n-y,h)的一个第四个网络的一个拓扑-级别-通路以及从所述第四个网络到所述第二个网络的一个层-映射所组成,其中y是大于零和小于或等于n-n_min在(d),n_min(d)是在特定深度d为一个最底层和n_min(d)为=>0。

如上所述的命名为q25和q29的拓扑-通路的计算是直接计算拓扑-通路的一个第二个方法的示例。

用于直接计算拓扑-通路的一个第三个方法,包括以下行动:

计算和存储从在(d,n,h)的一个第一个网络到在(d,n,h)的一个第二个网络的拓扑-通路为一个级联其由从第一个网络到在(d,n,h-z)一个第三个网络的一个或更多个在级别降低的级别-映射,从第三个网络到在(d,n,h-z)的一个第四个网络的拓扑-通路以及从第四个网络到第二个网络在级别增高的一个或更多个级别-映射所组成,其中z是大于零和小于或等于h-h_min,h_min是在深度d的和层n的最低级别。用于直接计算拓扑-通路的一个第四个方法,包括以下行动:

计算和存储从在(d,n,h)的一个第一个网络到在(d,n,h)的一个第二个网络的一个拓扑-通路为一个级联其由从所述第一个网络到在(d,n+y,h)的一个第三个网络的一个层-映射,从所述第三个网络到在(d,n+y,h)的一个第四个网络的一个拓扑-级别-通路以及从所述第四个网络到所述第二个网络的一个层-映射所组成,其中y是大于零和小于或等于n_max-n,n_max是在特定深度d为最高层。

用于直接计算拓扑-通路的一个第五个方法,包括以下行动:

计算和存储从在(d,n1,h)的一个第一个网络到在(d,n1,h)的一个第二个网络的一个拓扑-通路为一个级联其由从所述第一个网络到在(d+x,n2,h)的一个第三个网络的一个深度-映射,从所述第三个网络到在(d+x,n2,h)的一个第四个网络的一个拓扑-级别-通路和从所述第四个网络到所述第二个网络的一个深度-映射所组成,其中x并且小于或等于d_max-d,d_max为最高深度,

如本领域技术人员将理解的,也可以应用上述方法的组合减少边数目如图23a和23b的示例所示。

如本领域技术人员在图20a至20h所示的示例中所描述的并且如上所述,在使用公知的端口的情况下,例如但不限于公知的tcp端口80,其表示http,因为所述众所周知的端口已经提供了应用层的逻辑标识符与表示逻辑存储或逻辑计算的逻辑标识符之间的关系,所以不需要为表示物理存储或物理计算的物理节点创建转发指令。因此,在图20h所示的示例中,可以省略命名为“http请求1”的命名为q29的拓扑-通路的交换-标识符,导致图16f所示的物理节点ke和kg的转发项。或者,如果不需要为表示物理存储或物理计算的物理节点创建转发指令,但是需要创建表示逻辑存储或逻辑计算的逻辑节点,例如但不限于,创建一个请求从一个第一个逻辑节点表示逻辑存储或逻辑计算到一个第二个逻辑节点表示逻辑存储或逻辑计算,逻辑层-映射可以直接被创建,而不是使用第一个方法计算逻辑层-映射来计算层-映射或使用一个第二个方法来计算层-映射。

在过去十年中,处理器已经从单核向多核处理器发展,这已成为常见的硬件设计。此外,计算已经越来越多地分布在由网络连接的多个物理计算和存储资源上,例如但不限于数据中心内和数据中心之间。目前的挑战/问题是编程这些分布式网络物理和/或虚拟资源,分布在一个单个处理器,一个单个物理和/或虚拟计算系统(例如使用多个处理器的服务器),一个单个数据中心或更多个数据中心如本领域技术人员将理解的,所述挑战/问题构成以下,不详尽的列表,要求:

1)表达并发性的能力。我们将并发定义为程序或算法中的独立逻辑过程。

2)从并发编译到并行或分布式物理和/或虚拟资源的能力

3)在所述分布式物理资源和/或虚拟资源之间提供确保网络的能力

4)优化物理和/或虚拟资源的能力,所述物理和/或虚拟资源包括物理和/或虚拟节点以及物理和/或虚拟链路

5)适应变化的能力,所述变化是物理和/或虚拟资源或用户或程序规范的变化。

6)提供恢复的能力

7)扩大缩小的能力

最近,编程方法的兴趣在增长,其中程序表示为通过消息传递交换数据的逻辑过程。通常,每个逻辑过程都有专用的存储器,数据只能通过消息传递在逻辑过程之间共享,具有明显的优势,即在逻辑过程之间没有共享的可变状态。由于逻辑过程之间没有共享的可变状态,所以逻辑过程的行为是确定性的,并且每个逻辑过程可以针对并行或分发的多个物理和/或虚拟资源进行编译。从一个第一个节点到一个第二个节点的所述消息传递可以在从一个第一个节点到一个第二个节点的一个逻辑信道上执行。

在所述编程方法(上述1点)中自然地表达并发性,并且可以根据多个并行或分布式物理和/或虚拟资源(上述第2点)对程序或算法内的独立逻辑过程进行编译。

在每个逻辑过程至少有一个缓冲区的情况下,整个系统的操作是异步的。换句话说,过程不同步,可以独立运行。

当针对多个分布式物理和/或虚拟资源进行编译时,上述编程模型主要依赖物理和/或虚拟网络。目前,即使不是不可能,从所述物理和/或虚拟网络提供确保也是非常困难的,因为一方面网络,另一方面存储和计算之间存在松散的耦合。这个松散耦合的主要原因之一是网络的分布式控制。通过从网络的分布式控制转变为网络的集中式控制,根据pct/ep2014/055640中公开的sdn编译器方法,存储,计算,组网的集中式控制成为可能。pct/ep2014/055640(40页)中公开的sdn编译器方法提供了可能存储在一个服务级别协议(sla)中的所述网络确保。

上述编程模型也缺少其它网络结构,例如但不限于多路复用和解多路复用,确保交付顺序。

如上所述,从一个或更多个节点开始的拓扑-通路,横越一个或更多个节点,以一个或更多个节点结束,在其定义至少一个操作调用,导致一个或更多个操作调用串联或并行执行并且可以被认为是一个程序包括一个或更多个操作调用的。

所述操作调用和拓扑-通路由一个sdn编译器的一个用户定义,从而向sdn编译器的所述用户提供一个逻辑网络的可编程性。所述拓扑-通路可以是一个请求的拓扑-通路。

如pct/ep2014/055640中所公开的,我们使用逻辑网络来定义通过一个信道传递消息来交换数据的逻辑过程。我们通过一个逻辑节点lr表示一个逻辑过程。我们通过一个逻辑拓扑-映射来表示一个逻辑信道。我们用一个逻辑拓扑-通路表示程序,如上所述。我们通过物理节点来表示一个物理过程和物理处理器。我们通过一个拓扑-映射表示一个第一个物理过程与一个第二个物理过程的互连。我们通过一个拓扑-映射表示从所述一个第一个物理处理器到一个第二个物理处理器的互连,一个第一个物理节点表示的物理过程通过一个层-映射相关与一个第二个物理节点表示的物理处理器。表示一个物理过程的所述第一个物理节点的层次n1大于表示一个物理过程的所述第一个物理节点的层次n2。逻辑过程和物理过程通过深度-映射相关。注意,或者一个第一个物理节点表示的物理过程可能通过一个级别-映射相关与一个第二个物理节点。

作为示例,但不限于,图28a示出了通过一个逻辑节点lr表示的一个第一个逻辑过程和由一个逻辑节点ls表示的第二个逻辑过程。我们通过从逻辑节点lr到逻辑节点ls的命名为g4的逻辑拓扑-映射表示从所述第一个逻辑过程到所述第二个逻辑过程的一个逻辑信道。我们通过一个逻辑拓扑-通路表示一个程序,如上所述。我们通过物理节点kr表示一个第一个物理过程,并由物理节点ks表示一个第二个物理过程。我们通过一个第三个物理节点kp表示一个第一个物理处理器,在其部署了所述第一个物理过程。我们通过一个第四个物理节点kq表示一个第二个物理处理器,在其部署了所述第二个物理过程。我们通过拓扑-映射g7表示从所述物理节点kr表示的所述第一个物理过程到物理节点ks表示的所述第二个物理过程的一个互连。我们通过拓扑-映射g1表示从所述物理节点kp表示的所述第一个物理处理器到物理节点kq表示的所述第二个物理处理器的一个互连。物理节点kr,表示一个第一个物理过程与物理节点kp,表示一个第一个物理处理器的是通过层-映射相关的。物理节点kr是通过在层次减少的命名为g8的层-映射映射到物理节点kp。物理节点ks,表示一个第二个物理过程与物理节点kq,表示一个第二个物理处理器的是通过层-映射相关的。物理节点kq是通过在层次增加的命名为g9的层-映射映射到物理节点ks。逻辑过程和物理过程是通过深度-映射相关的。逻辑节点lr,表示一个第一个逻辑过程是通过在深度减少的命名为g5的一个深度-映射映射到物理节点ks,表示一个第二个物理过程。物理节点ks,表示一个第一个物理过程是通过在深度增加的命名为g6的一个深度-映射映射到逻辑节点ls,表示一个第一个逻辑过程。拓扑-映射g7被定义为“拓扑-映射g7=g8/g7+g1/g7+g9/g7”,根据图6c的表示法。拓扑-映射g4根据图6c的表示法定义为“拓扑-映射g4=g5/g4+g7/g4+g6/g4”,根据图6c的表示法。

或者,物理过程可能被省略,和可以通过深度-映射将逻辑过程映射到物理处理器.作为示例,但不限于,图28b示出了由一个逻辑节点lr表示的一个第一个逻辑过程和由一个逻辑节点ls表示的第二个逻辑过程。我们通过从逻辑节点lr到逻辑节点ls的命名为g4的逻辑拓扑-映射表示从所述第一个逻辑过程到所述第二个逻辑过程的一个逻辑信道。我们通过一个逻辑拓扑-通路表示一个程序,如上所述。我们通过一个第三个物理节点kp表示一个第一个物理处理器。我们通过一个第四个物理节点kq表示一个第二个物理处理器。我们通过拓扑-映射g1表示从所述物理节点kp表示的所述第一个物理处理器到物理节点kq表示的所述第二个物理处理器的一个互连。逻辑过程和物理处理器通过深度-映射相关的。逻辑节点lr,表示一个第一个逻辑过程是通过在深度减少的命名为g2的一个深度-映射映射到物理节点kp,表示一个第一个物理处理器。物理节点kq,表示一个第二个物理过程是通过在深度增加的命名为g3的一个深度-映射映射到逻辑节点ls,表示一个第二个逻辑过程。拓扑-映射g4被定义为“拓扑-映射g4=g2/g4+g1/g4+g3/g4”,根据图6c的表示法。

省略如上所述的物理过程具有减少存储的信息量和计算复杂度的优点。

如上所述,并且在非-预先-发布的现有技术ep14185828.2(45页)中描述,pct/ep2014/055640中公开的sdn编译器方法可能被扩展为通过一个sdn编译器基于一个sdn编译器的一个用户指定的逻辑节点,逻辑拓扑-映射和可选逻辑层-映射的要求,确定深度-映射,相关不同深度的节点。我们将此方法应用于用于定义通过消息传递交换数据的逻辑过程的一个逻辑网络,如上所述。现在,物理处理器上的逻辑过程的放置由一个sdn编译器确定的。

如上所述,并行性自然地被表达在所呈现的编程方法里,包括逻辑网络,至少一个逻辑拓扑-通路和附加操作,并且可以使用sdn编译器方法针对分布式或并行物理资源进行编译。

根据pct/ep2014/055640中公开的sdn编译器方法,一个sdn编译器监控物理节点。我们将此方法应用于一个逻辑网络,用于定义通过消息-传递交换数据的逻辑过程,如上所述。现在,物理处理器和可选的物理过程的监控由一个sdn编译器执行。在物理处理器发生故障的情况下,使用pct/ep2014/055640中公开的sdn编译器方法来确定新的物理处理器来执行该任务。在物理过程失败的情况下,pct/ep2014/055640中公开的sdn编译器方法可用于确定执行任务的一个新的物理过程。

上述方法为计算,存储和联网提供了一个单一的编译方法和编程方法。上述方法提供了网络确保和网络功能于存储和计算。

上述方法通过附加操作提供增强网络的功能。所述附加操作可能在一个功能性编程语言里实施。

如本领域技术人员将理解的,上述所提出的附加操作可以包括复杂的程序或应用,例如但不限于数据库或中间件(middleware)。

上述方法提供了优化物理资源的能力,所述物理资源包括物理节点和物理链路。上述方法提供了适应变化的能力,所述变化是物理资源或用户或程序规范的变化。上述方法提供恢复扩大或缩小的能力。

例如,我们使用如图13b所示的逻辑网络来定义通过消息-传递交换数据的逻辑过程ma,mb,mc,md,me,mf,mg,mh。我们用逻辑节点ma,mb,mc,md,me,mf,mg,mh表示逻辑过程。我们通过命名为k21至k29的逻辑拓扑-映射来表示在逻辑过程之间交换数据的通道。我们通过命名为k31的逻辑拓扑-通路来表示程序。我们定义如图14d所示的操作调用f1,f2,f3,f4,f5,f6,f7。命名为k31的拓扑-通路确定逻辑节点ma,mb,mc,md,me,mf,mg,mh之间的数据-依赖关系,如图13e所示。

我们现在应用上述方法,并且如图15a至15i所示,编译图13b所示的逻辑网络和图14d所示的操作调用为物理节点qa,qb,qc,qd,qe,qf,qg,qh。注意,物理节点qa,qb,qc,qd,qe,qf,qg,qh现在被认为是物理处理器。注意,物理过程没有被模型,如上面解释的图28b,以保持该示例相对简单。需要注意的是,即使对计算处理器进行编译,并且现在物理节点qa,qb,qc,qd,qe,qf,qg,qh的含义不同了,没有提供新图形。

如上所述,并且如图16所示,通过一个sdn编译器可能为在物理处理器上运行的一个或更多个物理过程生成代码。任何传统的编译器都可能用来编译代码。所述编译的代码可以部署在作为一个物理处理器的一个物理节点。

如上所述和图17a至17i和18a至18e所示代码可以由一个sdn编译器生成。所述代码可以由一个传统编译器执行,并且可以在为物理处理器的物理节点上进行部署。

上述方法可以应用于多层网络,包括在最高层的逻辑存储和逻辑计算

我们现在考虑一个整体逻辑网络的迁移。我们定义一个整体逻辑网络的一个迁移包括一组逻辑节点,所述整体逻辑网络是对一个第一组物理节点进行部署的,为编译所述整体逻辑网络至一个第二组物理节点并复制存储第一组的物理节点的输入和/或输出缓冲里的数据到所述第二组物理节点的输入和/或输出缓冲,从而继续所述整体逻辑网络的操作。

该方法在图25的流程图中示出了,包括步骤1)至7)。该方法通过图26a至26d和27a至27g所示的示例来说明。

图26a中示出了整体逻辑网络的示例。注意,除了在图26a中示出了缓冲内容b1至b16之外,图26a与上述图15b相同。一个sdn编译器的一个用户可能会请求一个迁移迁移一个整体逻辑网络。所述整体逻辑网络包括一组逻辑节点。或者,一个sdn编译器可能基于一些预先定义的规则来启动迁移,例如但不限于在一个物理网络中多次同时发生故障的情况下。

步骤1

确定已经为所述总体逻辑网络和一个第一组物理节点(qa;qb;qc;qd;qe;qf;qg;qh),在其部署了转发指令,创建了所述转发指令。

所述转发指令如图15h所示。在此示例中,命名为k31的请求拓扑-通路是唯一请求的拓扑-通路。通常,该方法可以应用于具有一个或更多个请求的拓扑-通路,请求的级别-通路或所请求的拓扑-级别-通路的整体逻辑网络。所述转发指令可能由sdn编译器存储,或者可能由sdn编译器计算。

步骤2

向一个第一组物理节点(qa;qb;qc;qd;qe;qf;qg;qh)发送指令以:

a)在一一个第一个时间t1阻止分组的转发活动

b)在一个第二个时间t2>=t1向sdn编译器发送与所述转发指令匹配的缓冲内容

c)删除所述转发指令

在步骤2a),指示所述第一组物理节点阻止分组转发。此操作包括传输主机节点以阻止发送分组。为了在物理节点之间同步此活动,时间t1包含在指令中。对于同步执行,所述物理节点必须被定时和同步。

在步骤2b),指示所述第一组物理节点在时间t2将与所述转发指令匹配的缓冲内容发送到sdn编译器。该活动可以由物理节点通过将一个或更多个输入缓冲的内容与所述转发指令进行模式匹配(pattern-matching)来执行。输出缓冲的内容可以从输出端口转发出去。可选地,输出缓冲的内容可以被发送到所述sdn编译器。

可选的时间差(t2-t1)用于允许输入缓冲从物理拓扑-映射,物理层-映射和可选地物理节点的输出缓冲接收任何内容。所述物理拓扑-映射和物理层-映射表示物理链路。如本领域技术人员将理解的,已知的物理链路的延迟时间可能被所述sdn编译器使用来计算(t2-t1)。

在步骤2c),所述第一组物理节点被指示删除所述转发指令。或者,步骤2c)可能被省略。通过不应用步骤2c)整体逻辑网络被编译为两组物理和/或虚拟资源,作为示例,但不限于用于测试目的。

步骤3

接收和存储从所述第一组物理节点(qa;qb;qc;qd;qe;qf;qg;qh)缓冲的内容。

图26b示出了从物理节点qa,qb,qc,qd,qe,qf,qg,qh发送到所述sdn编译器的缓冲内容b1至b16。注意,物理节点的每个缓冲由附着点(poa)和缓冲类型表示,所述缓冲类型是“输入缓冲”或“输出缓冲”。或者,可能命名每个缓冲。注意,如图26b的第四列所示,输入和输出缓冲的内容被考虑了。作为实例,但不限于,物理节点qb发送在于附着点(poa)p432的输入缓冲中的缓冲内容b2,发送在于附着点(poa)p433的输出缓冲中的缓冲内容b3,并发送驻留在输入端的缓冲内容b11缓冲在附着点(poa)p441。注意,所述物理节点可能可选地发送表示缓冲的附着点(poa)和从其发送所述缓冲内容的缓冲类型。

步骤4

将所述地一组物理节点的缓冲的内容映射到所述一组逻辑节点的缓冲,并且将所述缓冲内容与所述一组逻辑节点进行存储。

我们认为逻辑节点具有输入缓冲和可选的输出缓冲。我们的目标是确定从物理节点接收的每个缓冲内容的逻辑节点的缓冲。我们使用请求-通路的递归-通路(k31,如图26c所示),所述请求-通路是由从物理节点接收的分组确定的,确定逻辑节点的所述缓冲。我们使用附着点(poa)和和缓冲类型从其发送了缓冲内容,确定递归-通路中存储所述缓冲内容的位置。图26c示出了命名为k31的拓扑-通路的递归-通路,包括缓冲内容b1至b16使用附着点(poa)和缓冲类型表示发送所述缓冲内容的缓冲,以确定递归-通路中存储所述缓冲内容的位置。所述附着点(poa)和缓冲类型可能由所述物理节点发送。或者,一个物理节点的一个缓冲可能被命名,并且一个缓冲名称可能被所述物理节点发送。在所述附着点(poa)和缓冲类型不由所述物理节点发送的情况下,可以从分组的包头确定所述附着点(poa)。我们使用一个逻辑节点名称和一个逻辑拓扑-映射的组合来表示所述逻辑节点的缓冲。或者,可以为逻辑节点定义附着点(poa),并且所述附加点和缓冲类型(“输入缓冲”,“输出缓冲”)的组合可能用于表示所述逻辑节点的所述缓冲。或者,可能命名一个逻辑节点的一个缓冲。

在图26c中,缓冲内容b7分成了b7(1)和b7(2),b7(1)包含分组,其具有在所述分组的包头中的一组边-关系里命名为k24的拓扑-映射,和b7(2)包含分组,其具有在所述分组的包头中的一组边-关系里命名为k28的拓扑-映射.缓冲内容b8分成了b8(1)和b8(2),b8(1)包含分组,其具有在所述分组的包头中的一组边-关系里命名为k24的拓扑-映射,和b8(2)包含分组,其具有在所述分组的包头中的一组边-关系里命名为k28的拓扑-映射.

我们现在应用以下方法:

i)if所述缓冲内容(b1;b3;b7(1);b11;b13)属于一个物理节点(qa;qb;qd;qb;qg)的一个输出缓冲(p431;p433;p437;p441;p444),并且所述物理节点(qa;qb;qd;qb;qg)通过在所述递归-通路里在深度减少的一个深度-映射(k43;k45;k47;k45;k51)被映射到逻辑节点(mb;mc;md;mc;mg),则存储所述缓冲内容(b1;b3;b7(1);b11;b13),存储所述逻辑节点(mb;mc;md;mc;mg),存储通过一个边-关系(k43/k22;k45/k23;k47/k24;k45/k25;k51/k28)相关与所述在深度减少的深度-映射(k43;k45;k47;k45;k51)的一个拓扑-映射(k22;k23;k24;k25;k28)和存储所述缓冲类型。

ii)elseif所述缓冲内容(b2;b6;b8(1);b10;b12;b16)属于物理节点(qb;qd;qe;qf;qg;qh)的输入缓冲(p432;p436;p438;p440;p442;p446),并且所述物理节点(qb;qd;qe;qf;qg;qh)通过在深度增加的深度-映射(k44;k46;k48;k52;k49;k53)被映射到在所述递归-通路里的逻辑节点(mc;md;me;mh;mg;mh),存储所述缓冲内容(b2;b6;b8(1);b10;b12;b16),存储所述逻辑节点(mc;md;me;mh;mg;mh),存储通过边-关系(k44/k22;k46/k23;k48/k24;k52/k28;k49/k25;k53/k28)相关与所述在深度增加的深度-映射(k44;k46;k48;k52;k49;k53)的拓扑-映射(k22;k23;k24;k28;k25;k28)并存储所述缓冲类型。

iii)else存储属于一个物理节点(qc;qc;qd;qe;qe;qd;qe)的输入缓冲(p434;p438;p443)or输出缓冲(p435;p437;p439;p445)的所述缓冲内容(b4;b5;b7(2);b8(2);b9;b14;b15)与在所述递归-通路相对于所述递归运算器中的所述物理节点(qc;qc;qd;qe;qe;qd;qe)的下一个逻辑节点(md;md;mh;mh;mh;mh;mh)并且确定连接到所述下一逻辑节点(md;md;mh;mh;mh;mh;mh)在深度增加的深度-映射(k46;k46;k52;k52;k52;k52;k53),存储所述逻辑节点(md;md;mh;mh;mh;mh;mh),存储通过一个边-关系(k46/k23;k46/k23;k52/k28;k52/k28;k52/k28;k52/k28;k53/k28)相关与所述深度增加的深度-映射(k46;k46;k52;k52;k52;k52;k53)的一个拓扑-映射(k23;k23;k28;k28;k28;k28;k28)并将所述缓冲类型存储为“输入缓冲”。

图26d示出了所产生的缓冲内容b1至b16,逻辑节点,拓扑-映射和缓冲类型。

注意,在上述行动iii)中,未映射到逻辑节点的物理节点的缓冲内容存储在递归-通路中的下一个逻辑节点的一个输入缓冲处。

注意,逻辑节点和逻辑拓扑-映射之间的附着点(poa)没有被定义。因此,一个拓扑-映射(k22;k23;k24;k25;k28;k22;k23;k24;k28;k25;k28;k23;k23;k28;k28;k28;k28;k28)在上面的行动i),ii)和iii)被存储。所述逻辑节点(mb;mc;md;mc;mg;mc;md;me;mh;mg;mh;md;md;mh;mh;mh;mh;mh)和所述拓扑-映射(k22;k23;k24;k25;k28;k22;k23;k24;k28;k25;k28;k23;k23;k28;k28;k28;k28;k28)的组合确定所述逻辑节点的一个缓冲。或者,可能定义并存储逻辑附着点(poa)。

步骤5

通过应用sdn编译方法对一个第二组物理节点编译所述整体逻辑网络。

pct/ep2014/055640中公开的sdn编译器方法现在被应用,导致编译整体逻辑网络的一个第二组物理节点。上述方法通过示例来说明,但不限于,如图27a至27g所示。图27a示出了通过物理链路互连的表示一个第六个计算设备的一个物理节点ra,表示一个第七个分组转发系统的一个物理节点rb,表示一个第八个分组转发系统的一个物理节点rc,表示一个第九个分组转发系统的一个物理节点rd,物理节点re表示一个第七个计算设备,表示一个第十个分组转发系统的一个物理节点rf,表示一个第十个一分组转发系统的一个物理节点rg,以及表示一个第八个计算设备的一个物理节点rh。

图27b示出了物理节点ra,rb,rc,rd,re,rf,rg,rh和逻辑节点ma,mb,mc,md,me,mf,mg,mh,深度-映射和拓扑-映射。图27c示出了根据图6a的表示法命名为s1到s10的物理拓扑-映射。图27d示出了根据图6a的表示法命名为s21至s32的深度-映射。图27e根据图6c的表示法示出了命名为k21至k29的拓扑-映射。使用用于第一个方法计算一个拓扑-映射计算命名为k21至k29的拓扑-映射。我们计算请求的拓扑-通路k31的递归-通路,如上所述。使用图27e所示的关系,我们递归地计算所述递归-通路和一组边-关系,其包括每个边的嵌套的边-关系,如图27f所示。图27f还示出了根据图26d并且如上所述的缓冲内容b1至b16。

步骤6

从与所述一组逻辑节点存储的缓冲内容,确定所述第二组物理节点里的每个物理节点的缓冲的内容。

我们使用请求-通路(k31,如图27f所示)的递归-通路,所述请求-通路由存储在逻辑节点的每个分组确定,以确定所述第二组物理节点内的一个物理节点的所述缓冲。我们使用表示逻辑缓冲的一个逻辑节点和一个逻辑拓扑-映射的组合,如图26d所示,表示发送了所述缓冲内容的一个缓冲,以确定递归-通路中存储所述缓冲内容的位置。图27f示出了命名为k31的拓扑-通路的递归-通路,包括缓冲内容b1至b16,使用一个逻辑节点和一个逻辑拓扑-映射的组合,表示存储所述缓冲内容的逻辑缓冲,以确定用于存储所述缓冲内容的递归-通路里的位置。

我们现在应用以下方法:

iv)if所述缓冲内容(b1;b3;b7(1);b11;b13)属于一个逻辑节点(mb;mc;md;mc;mg)的输出缓冲,则所述逻辑节点(mb;mc;md;mc;mg)通过在所述递归-通路里的在深度减少的一个深度-映射(s23;s25;s27;s25;s31)被映射到物理节点(rb;rc;rd;rc;rg)存储所述缓冲内容(b1;b3;b7(1);b11;b13),存储所述物理节点(rb;rc;rd;rc;rg),存储一个附着点(poa)(p503;p505;p507;p509;p515)表示所述物理节点(rb;rc;rd;rc;rg)和一个拓扑-映射(s2;s3;s4;s5;s10)之间的一个附着点(poa),所述拓扑-映射在所述递归-通路里的所述在深度减少的深度-映射(s23;s25;s27;s25;s31)之后,并存储所述缓冲类型。

v)elseif属于逻辑节点(mc;md;md;md;mh;me;mh;mh;mh;mg;mh;mh;mh)的一个输入缓冲的所述缓冲内容(b2;b4;b5;b6;b7(2);b8(1);b8(2);b9;b10;b12;b14;b15;b16),和所述逻辑节点(mc;md;md;md;mh;me;mh;mh;mh;mg;mh;mh;mh)是通过所述递归通路中在深度增加的一个深度-映射(s24;s26;s26;s26;s32;s28;s32;s32;s32;s30;s32;s32;s32)映射到物理节点(rc;rd;rd;rd;rh;re;rh;rh;rh;rg;rh;rh;rh),存储所述缓冲内容(b2;b4;b5;b6;b7(2);b8(1);b8(2);b9;b10;b12;b14;b15;b16),存储所述物理节点(rc;rd;rd;rd;rh;re;rh;rh;rh;rg;rh;rh;rh),存储一个附着点(poa)(p504;p506;p506;p506;p516;p508;p516;p516;p516;p514;p516;p516;p516)表示所述物理节点(rc;rd;rd;rd;rh;re;rh;rh;rh;rg;rh;rh;rh)和一个拓扑-映射(s2;s3;s3;s3;s10;s4;s10;s10;s10;s8;s10;s10;s10)之间的一个附着点(poa),所述拓扑-映射在所述递归-通路里的所述在深度增加的深度-映射s24;s26;s26;s26;s32;s28;s32;s32;s32;s30;s32;s32;s32)之前并存储所述缓冲类型。图27g示出了所得到的缓冲内容b1至b16,一个物理节点,一个附着点(poa)和一个缓冲类型。

步骤7

向所述第二组物理节点的每个物理节点(rb;rc;rc;rd;rd;rd;rd;rh;re;rh;rh;rh;rc;rg;rg;rh;rh;rh)发送所述缓冲内容(b1;b2;b3;b4;b5;b6;b7(1);b7(2);b8(1);b8(2);b9;b10;b11;b12;b13;b14;b15;b16),附着点(poa)(p503;p504;p505;p506;p506;p506;p507;p516;p508;p516;p516;p516;p509;p514;p515;p516;p516;p516)和缓冲类型并发送一个指令,以在一个第三个时间t3>t2开始转发所述缓冲内容(b1;b2;b3;b4;b5;b6;b7(1);b7(2);b8(1);b8(2);b9;b10;b11;b12;b13;b14;b15;b16)。

为了在物理节点之间同步此行动,一个时间t3包括在指令中。对于同步执行,所述物理节点必须被定时和同步。

1)确定已经为所述总体逻辑网络和一个第一组物理节点,在其部署了转发指令,创建了所述转发指令,

2)向一个第一组物理节点发送指令以:

a)在一个第一个时间t1阻止分组的转发活动,

b)在一个第二个时间t2>=t1向所述编译器发送与所述转发指令匹配的缓冲内容,

c)删除所述转发指令,

3)接收和存储从所述第一组物理节点缓冲的内容,

4)将所述地一组物理节点的缓冲的内容映射到所述一组逻辑节点的缓冲,并且将所述缓冲内容与所述一组逻辑节点进行存储,

5)通过应用一个编译方法对一个第二组物理节点编译所述整体逻辑网络,

6)从与所述一组逻辑节点存储的缓冲内容,确定所述第二组物理节点里的每个物理节点的缓冲的内容,

7)所述第二组物理节点里的每个物理节点发送所述缓冲内容,附着点(poa)和缓冲类型,向所述第二组物理节点内的每个物理节点并向每个物理节点发送一个指令,以在一个第三个时间t3>t2开始转发所述缓冲的内容。

如本领域技术人员将理解的,上述方法可以用于通过省略步骤2a和步骤2c来复制网络。

如上所述,可能使用逻辑网络来定义通过消息传递交换数据的逻辑过程,并且一个逻辑拓扑-通路可能表示一个程序。使用上述方法,可以在所述程序从一个第一组物理节点到一个第二组物理节点的操作期间迁移表示为逻辑网络里的逻辑拓扑-通路的程序。如本领域技术人员将理解的,在所述迁移中,所述第一组物理节点内的一个物理节点不应该保持任何状态。作为示例,但不限于,在所述第一组物理节点上的维护的情况下,在所述程序的操作期间可能执行所述迁移。

据观察,本申请的内容,包括其权利要求,可以与ep14185828.2的教义(代理人文件p6053231ep)组合,其是未预先公布的,但已在2014年9月22日提交。

据观察,本申请的内容,包括其权利要求,可以与ep15158114.7的教义(代理人文件p6054909ep)组合,其是未预先公布的,但已在2015年3月6日提交。

在上述规范里,参考了许多不同种类的单元,如控制器,编译器,节点,虚拟机,网卡等(参照pct/ep2014/05564089页)。如本领域技术人员显而易见的,这样的单元的功能是由至少一个硬件和软件的处理单元上运行执行的。这样的硬件可以是任何已知类型的硬件(在现在和将来)的配置来执行所要求的权利的功能。图10示出了可以执行这样的功能的计算机布置的示意图。图10示出了一种“完全”的图象:这将是明显的是,一些组件(如打印机)可能不被用于许多本文档里指定的单元。

在图10里所示的布置包括用于实施算术运算的处理器1。

处理器1被连接到多个存储组件,包括硬盘5,只读存储器(rom)7,电可擦除可编程只读存储器(eeprom)9,和随机存取存储器(ram)11。不是所有这些存储器类型的一定需要提供。此外,这些存储器组件不需要物理位于接近的处理器1,但也可以在远程处理器1的位置。

处理器1还连接到单元,用于由用户输入指令,数据等,如键盘13和鼠标15。其它输入单元,诸如触摸屏,跟踪球和/或语音转换器,公知的本领域的技术人员的可以提供。

一个连接到处理器1的读取单元17被提供。读取单元17被布置为读取数据和可能写在数据载体上软盘19或cdrom21的数据。其它数据载体可以是磁带,dvd,蓝光光盘,紧凑型闪存(cf),安全数字(sd),microsd,minisd,极端数码(xd),和记忆棒(memorysticks)等已知为本领域技术人员。数据载体可能是由一个计算机程序产品提供,包括指令和数据布置将由处理器1读取,并且被读出后的数据,使处理器1执行按照本发明的一个方法。这样一个计算机程序产品可随后装载于存储器组件5,7,9,11。然而,这样的计算机程序产品可另外地,可经过电信网络27下载。

处理器1可被连接到一个打印机23在纸张上打印输出数据,以及一个示出了器3,例如,示出了器或lcd(液晶示出了器)屏幕,等离子示出了面板,有机发光二极管(oled)的有源矩阵oled(amoled)或本领域的技术人员已知任何其它类型的示出了器。处理器1可由i/o装置单元25连接到通信网络27,例如公共交换电话网(pstn),局域网(lan),广域网(wan),因特网(internet)等。处理器1可以被布置为通过网络27与其它通信布置通信。

处理器1可以被实施为独立系统,或作为多个并行操作的处理器每个布置为执行一个更大的计算机程序里的子任务,或者作为一个或更多个主处理器与若干子处理器。本发明的部分功甚至可能通过网络27与处理器1进行通信的远程处理器实施。

应当理解,这发明仅仅受所附权利要求及其技术同等的限制。在本文件及其权利要求里,动词“包括”及其变形是在其非限制性意义使用,意味着以下的单词项都包括在内,但不排除未特别提及的名目。另外,参照由不定冠词一个元素“一”或“一个”并不该元件的一个以上的存在时,除非上下文清楚地要求有且仅有的元素之一排除这种可能性。不定冠词“一”或“一个”因此通常是指“至少一个”。

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