计算;推算;计数设备的制造及其应用技术用于管理软件定义的广域网(sd-wan)中的多个软件版本的方法、系统和计算机可读介质1.优先权声明2.本技术要求2020年8月25日提交的序列号为17/002,762的美国专利申请和2020年4月13日提交的序列号为63/009,235的美国临时专利申请的权益,它们的公开内容通过引用整体并入本文。技术领域::3.这里描述的主题涉及sd-wan。更具体地,这里描述的主题涉及管理多个sd-wan软件版本。背景技术:::4.在sd-wan中,被称为sd-wan设备的网络节点通过广域网上的隧道(这里被称为管道)彼此通信。在一个示例性网络架构中,中央控制器定义sd-wan的单个配置,并确保sd-wan的各个元件被适当地配置以实现总体配置。控制器还管理sd-wan的软件更新。实现sd-wan特征需要sd-wan网络元件之间的智能协作。这种智能协作需要sd-wan网络元件执行兼容的sd-wan软件版本。sd-wan软件是在sd-wan设备上执行以实现sd-wan特征的软件。5.在一些sd-wan网络架构中,所有sd-wan设备都运行sd-wan软件的相同版本,并且当有新的sd-wan软件版本可用时,控制器强制所有sd-wan设备同时更新到新版本。使所有sd-wan设备执行相同的软件版本并同时更新到新的软件版本确保了sd-wan设备之间的兼容性。然而,强制所有sd-wan设备同时更新到sd-wan软件的新版本会导致在更新过程中网络不可用。因为sd-wan可以跨越所有时区,所以不存在不会导致某些用户的日间服务中断的网络范围sd-wan软件更新的方便时间。6.在一些sd-wan架构中,允许同一网络中的sd-wan网络元件执行不同的软件版本。然而,不同的版本通常是补丁版本,带有小的错误修复,而没有实质性的新特征。只允许不同的软件版本作为错误修复而没有实质性的新特征确保了实现不同软件版本的sd-wan网络元件之间的兼容性,但会减缓新特征的推出。在这样的架构中,将sd-wan更新到具有新特征的重大版本仍然需要同时更新所有sd-wan网络元件。7.在sd-wan和计算机网络行业中,网络协议兼容性通常通过定义已建立的特征集并仅使用该特征集来提供。例如,网际协议版本4(ipv4)具有已建立的特征集,例如报头字段格式,节点必须遵守该特征集才能彼此通信。只要所有节点都同意由ipv4定义的特征集,通信就是可能的。如果希望改变报头字段的大小,例如ipv4地址,则网络节点必须升级到与ipv4不兼容的新协议,例如ip版本6(ipv6)。8.希望允许sd-wan软件的不同版本同时存在于不同的sd-wan节点上,其中不同的sd-wan版本不仅包括错误修复,而且可能包括至少一些不兼容的特征。与允许不同软件版本存在于sd-wan设备上相关联的另一个问题是,由控制器控制的设备的配置与设备正在执行的软件级别绑定。需要控制器知道如何针对每个网络元件实现的每个软件级别创建配置是不可取的,尤其是当sd-wan设备可能运行比控制器更新的软件时。同样,如果每个sd-wan设备运行相同的软件版本,则配置sd-wan设备会更简单,因为控制器只需要创建绑定到单个软件版本的配置。然而,在sd-wan设备运行不同软件版本的网络中,需要一种用于降低为sd-wan设备创建配置时的控制器复杂度的机制。9.因此,鉴于这些和其他困难,存在对于用于管理不同的sd-wan软件版本的改进的方法、系统和计算机可读介质的需求。技术实现要素:10.这里描述的主题提供了一种方法,用于sd-wan控制器精确控制sd-wan中每个网络元件的软件版本,并且保证sd-wan的所有元件之间的兼容性。sd-wan控制器能够维护描述sd-wan并知道哪些软件版本支持sd-wan的哪些特征的单个配置。sd-wan控制器能够向用户呈现sd-wan的所有元件支持的配置选项,并且当一些网络元件正在运行不支持该特征的软件版本时,可以防止启用不能使用的特征。11.每个网络元件的低级别配置选项(这里被称为“注册表”)可以根据软件级别而变化,并且如上所述,强制sd-wan控制器知道如何为每个网络元件创建注册表是不可取的,尤其是当网络元件可能运行比控制器更新的软件时。为了避免这一困难,这里描述的主题定义了中间配置语言注册表,其在这里描述的示例中使用可扩展标记语言(xml)来实现,其定义了特定网络元件的配置,而不涉及低级别细节。sd-wan控制器创建中间配置语言配置注册表并将其分发给sd-wan网络元件。sd-wan网络元件使用中间语言配置注册表来配置sd-wan网络元件。然后,实现不同软件版本的sd-wan网络元件使用版本控制协议彼此协商,以实现兼容的sd-wan特征,例如通信协议消息格式和共享存储器参数。12.使用这里描述的主题,sd-wan控制器可以生成中间配置语言注册表集合,其可以对sd-wan网络中的任何软件版本起作用。这允许sd-wan控制器提供不受限制地升级网络中任何元件的软件的选项,即使软件升级添加了重要的新特征,并且对网络协议进行了更改,并且只能升级一部分网络元件。13.当sd-wan网络元件彼此形成连接(这里被称为管道)时,sd-wan网络元件使用版本控制协议来协商要使用的管道通信协议的细节。通过使用版本控制协议协商兼容特征集合,始终保证较新的软件可以在与较旧软件版本兼容的模式下运行管道通信协议,并且sd-wan控制器保证不会配置需要管道通信协议的较新模式的特征。14.与其他行业解决方案不同,这里描述的主题在降级软件时同样有效。如果在新软件中遇到错误的情况下需要回滚软件,这将非常有用。15.根据这里描述的主题的一个方面,提供了一种用于管理多个sd-wan软件版本的方法。该方法包括提供控制器,所述控制器定义sd-wan的总体配置,并且创建用于各个sd-wan设备实现总体配置中它们各自的部分的配置注册表。所述方法包括在所述控制器处并且以中间配置语言注册表格式,为执行sd-wan软件的第一版本的第一sd-wan设备生成第一配置注册表。所述方法还包括在所述控制器处并且以所述中间配置语言注册表格式,为执行与所述sd-wan软件的第一版本不同的所述sd-wan软件的第二版本的第二sd-wan设备生成第二配置注册表。所述方法还包括将第一配置注册表发送到第一sd-wan设备,并且将第二配置注册表发送到第二sd-wan设备。所述方法还包括在第一sd-wan设备处接收第一配置注册表,并且使用第一配置注册表来配置第一sd-wan设备。所述方法还包括在第二sd-wan设备处接收第二配置注册表,并且使用第二配置注册表来配置第二sd-wan设备。所述方法还包括在第一和第二sd-wan设备之间,协商可用于实现在第一和第二配置注册表中指定的配置的共同sd-wan特征。16.根据这里描述的主题的另一个方面,以中间配置语言生成第一和第二配置注册表包括以将属性名称分配给sd-wan配置元素的格式生成第一和第二配置注册表。17.根据这里描述的主题的另一个方面,使用第一和第二配置注册表来配置第一和第二sd-wan设备包括:识别第一和第二配置注册表中与第一和第二sd-wan设备用来提供sd-wan服务的配置元素相对应的属性的名称,读取所述属性的值,以及将所述值存储在由第一和第二sd-wan设备维护的配置数据库中的记录中。18.根据这里描述的主题的另一个方面,生成第一和第二配置注册表包括:接收第一和第二sd-wan设备支持的最高中间配置语言注册表版本作为输入,以及按所述最高支持的中间配置语言注册表版本生成第一和第二配置注册表。19.根据这里描述的主题的另一个方面,在第一和第二sd-wan设备之间进行协商包括:使用由第一和第二sd-wan设备实现的版本控制协议进行协商。20.根据这里描述的主题的另一个方面,使用所述版本控制协议进行协商包括:将版本控制协议检查消息从第一sd-wan设备发送到第二sd-wan设备,所述版本控制协议检查消息包括指示第一sd-wan设备支持的协议的最高版本的记录;在第二sd-wan设备处,接收所述版本控制协议检查消息,并且确定第二sd-wan设备是否支持在所述版本控制协议检查消息中的所述记录中标识的所述协议的版本;在第二sd-wan设备处,响应于确定第二sd-wan设备支持在所述版本控制协议检查消息中的所述记录中标识的所述协议的版本,发送指示对于在所述版本控制协议检查消息中指示的所述协议的版本的支持的版本控制协议ok消息;以及在第二sd-wan设备处,响应于确定第二sd-wan设备不支持在所述版本控制协议检查消息中的所述记录中标识的所述协议的版本,发送指示第二sd-wan设备支持的所述协议的最高版本的版本控制协议nokay消息,所述最高版本低于在所述版本控制协议检查消息中的所述记录中标识的所述协议的版本。21.根据这里描述的主题的另一个方面,使用所述版本控制协议协商的所述协议包括:定义用于通过第一和第二sd-wan设备之间的管道在第一和第二sd-wan设备之间承载业务的管道消息的格式的协议。22.根据这里描述的主题的另一个方面,使用所述版本控制协议协商的所述协议包括用于协商加密参数的加密协商方法,所述加密参数用于加密通过第一和第二sd-wan设备之间的管道传输的业务。23.根据这里描述的主题的另一个方面,使用所述版本控制协议协商的所述协议包括定义通过第一和第二sd-wan设备之间的管道在第一和第二sd-wan设备之间传输的控制消息的格式的协议。24.根据这里描述的主题的另一个方面,所述控制消息包括共享存储器管理消息。25.根据这里描述的主题的另一个方面,提供了一种用于管理多个软件定义的广域网(sd-wan)软件版本的系统。该系统包括:控制器,用于定义sd-wan的总体配置,并且创建用于各个sd-wan设备实现总体配置中它们各自的部分的配置注册表,其中所述控制器以中间配置语言生成第一和第二配置注册表,并且发送第一和第二配置注册表。该系统还包括:第一sd-wan设备,用于执行sd-wan软件的第一版本,接收第一配置注册表,并且使用第一配置注册表来配置第一sd-wan设备。该系统还包括:第二sd-wan设备,用于执行与所述sd-wan软件的第一版本不同的所述sd-wan软件的第二版本,接收第二配置注册表,并且使用第二配置注册表配置第二sd-wan设备。第一和第二sd-wan设备被配置为彼此协商可用于实现在第一和第二配置注册表中指定的配置的共同sd-wan特征。26.根据这里描述的主题的另一个方面,第一和第二sd-wan设备被配置为识别第一和第二配置注册表中与第一和第二sd-wan设备用来提供sd-wan服务的配置元素相对应的属性的名称,读取所述属性的值,并且将所述值存储在第一和第二sd-wan设备维护的配置数据库中的记录中。27.根据这里描述的主题的另一个方面,所述控制器被配置为接收第一和第二sd-wan设备支持的最高中间配置语言注册表版本作为输入,并且按所述最高支持的中间配置语言注册表版本生成第一和第二配置注册表。28.根据这里描述的主题的另一个方面,第一和第二sd-wan设备被配置为使用由第一和第二sd-wan设备实现的版本控制协议来彼此协商兼容的sd-wan特征。29.根据这里描述的主题的另一个方面,提供了一种存储有可执行指令的非瞬态计算机可读介质,所述可执行指令在由计算机的处理器执行时控制所述计算机执行如下步骤。所述步骤包括:提供控制器,所述控制器定义sd-wan的总体配置,并且创建用于各个sd-wan设备实现总体配置中它们各自的部分的配置注册表。所述步骤还包括:在所述控制器处并且以中间配置语言注册表格式,为执行sd-wan软件的第一版本的第一sd-wan设备生成第一配置注册表。所述步骤还包括:在所述控制器处并且以所述中间配置语言注册表格式,为执行与所述sd-wan软件的第一版本不同的所述sd-wan软件的第二版本的第二sd-wan设备生成第二配置注册表。所述步骤还包括:将第一配置注册表发送到第一sd-wan设备,并且将第二配置注册表发送到第二sd-wan设备。所述步骤还包括:在第一sd-wan设备处接收第一配置注册表,并且使用第一配置注册表来配置第一sd-wan设备。所述步骤还包括:在第二sd-wan设备处接收第二配置注册表,并且使用第二配置注册表来配置第二sd-wan设备。所述步骤还包括:在第一和第二sd-wan设备之间,协商可用于实现在第一和第二配置注册表中指定的配置的共同sd-wan特征。30.这里描述的主题可以以硬件、软件、固件或其任意组合来实现。因此,这里使用的术语“功能”、“节点”或“模块”指的是用于实现所描述的特征的硬件,其还可以包括软件和/或固件组件。在一个示例性实现中,这里描述的主题可以使用存储有计算机可执行指令的计算机可读介质来实现,计算机可执行指令当由计算机的处理器执行时控制计算机执行步骤。适用于实现这里描述的主题的示例性计算机可读介质包括非瞬态计算机可读介质,诸如盘存储器设备、芯片存储器设备、可编程逻辑设备和专用集成电路。此外,实现这里描述的主题的计算机可读介质可以位于单个设备或计算平台上,或者可以分布在多个设备或计算平台上。附图说明31.图1是示出示例性sd-wan网络架构的网络图;32.图2是示出配置注册表到执行不同软件版本的sd-wan网络元件的分发的网络图,其中配置注册表是中间配置语言格式;33.图3是示出sd-wan网络元件之间的特征协商的消息流程图,其中实现被协商的协议的较低版本的sd-wan发起针对该协议的版本检查;34.图4是示出sd-wan网络元件之间的特征协商的消息流程图,其中支持被协商的协议的较高版本的sd-wan网络元件发起针对该协议的版本检查;35.图5是示出sd-wan网络元件之间的特征协商的消息流程图,其中sd-wan网络元件各自支持被协商的协议的多个版本;36.图6是示出sd-wan网络元件之间的特征协商的消息流程图,其中sd-wan网络元件各自支持被协商的协议的多个版本,其中发起版本检查的sd-wan网络元件使用在两个版本之间但不被另一个sd-wan网络元件支持的中间版本;以及37.图7是示出用于管理多个sd-wan软件版本的示例性步骤的流程图。具体实施方式38.这里描述的主题包括用于管理执行sd-wan软件的不同版本的sd-wan网络元件的方法、系统和计算机可读介质。如上所述,sd-wan控制器生成中间配置语言注册表,并将注册表分发给sd-wan网络元件,其中的至少一些sd-wan网络元件执行sd-wan软件的不同版本。网络元件接收中间配置语言注册表,并且使用中间配置语言注册表配置sd-wan网络元件。然后,执行不同软件版本的sd-wan网络元件彼此协商以识别sd-wan特征的兼容集合。在描述中间配置语言及其在sd-wan中的使用的详细信息之前,将描述示例sd-wan架构。39.在示例架构中,sd-wan被称为自适应专有网络(apn)。sd-wan网络元件被称为apn设备(apna),并且apna通过隧道相互连接,这些隧道被称为管道。图1示出了这样的apn架构的示例。在图1中,该架构包括经由管道116、118、120、122、124和126彼此连接的多个apna100、102、104、106、108、110和112。管道是apn设备之间的连接。管道可用于跨越wan128在apna之间承载业务。控制器130通过将配置分发给apna100、102、104、106、108、110和112来控制apn的总体配置和操作。如果apna100、102、104、106、108、110和112正在执行不同的apn软件版本,则控制器130必须分发不会使apna100、102、104、106、108、110和112实现不兼容特征的配置。如上所述,控制器130通过经由一个或多个管道132向apna100、102、104、106、108、110和112分发中间配置语言注册表来处理这种配置。apna100、102、104、106、108、110和112使用中间配置语言注册表来配置apna100、102、104、106、108、110和112以实现sd-wan特征。apna100、102、104、106、108、110和112彼此协商以实现兼容的apn特征。40.图2是示出控制器130生成配置注册表并将其发送到执行apn软件的不同版本的apna106和108的示意图。在图2中,控制器130包括至少一个处理器200和存储器202。控制器130还包括配置管理器203,配置管理器203生成和分发用于配置apna106和108的配置注册表。配置注册表采用将在下面更详细地描述的中间配置语言注册表格式。配置管理器203包括配置编译器204,配置编译器204基于用户经由配置编辑器205选择的配置选项来生成配置注册表。配置编辑器205向用户呈现用于基于由apn设备执行的apn软件版本来配置apn设备的选项,使得仅生成兼容的配置并将其发送到apn设备。配置编辑器205将知道网络中的设备支持的最高共同注册表版本,并且在运行编译器并且向用户呈现可编辑的配置对象时应用该版本。41.在控制器130的先前实现中,编译器204生成注册表文件集合,该注册表文件集合包含表示配置选项及其值的数字,这些数字由每个apn设备的apn软件读取并用于填充配置数据库。以下是编译器204的先前实现作为输入接收的配置文件的一部分的示例:[0042][0043][0044]上面列出的配置示例将设备配置为用作具有特定型号并且使用特定的安全密钥的主控制器。编译器204的先前实现将上述配置示例转换成下面的逗号分隔值(csv)配置注册表,该配置注册表将被传送到设备。下面是名为main.reg的csv配置文件之一:[0045]13,0,0,0,0,0,3,0[0046]14,0,0,0,0,0,6,controller-vt800[0047]15,0,0,0,0,0,3,0[0048]16,0,0,0,0,0,6,controller[0049]20,0,0,0,0,0,6,vt800[0050]21,0,0,0,0,0,7,0[0051]23,0,0,0,0,0,3,0[0052]721,0,0,0,0,0,3,3[0053]722,0,0,0,0,0,3,0[0054]722,1,0,0,0,0,3,1[0055]722,2,0,0,0,0,3,2[0056]723,0,0,0,0,0,3,1[0057]723,1,0,0,0,0,3,0[0058]723,2,0,0,0,0,3,2[0059]下面是为以上配置示例生成的另一个csv文件。该文件名为sites.reg。[0060]724,0,0,0,0,0,6,client-01-vt800[0061]724,1,0,0,0,0,6,controller-vt800[0062]724,2,0,0,0,0,6,simple-install[0063]725,0,0,0,0,0,6,vt800[0064]725,1,0,0,0,0,6,vt800[0065]725,2,0,0,0,0,6,vt800[0066]726,0,0,0,0,0,6,appliance[0067]726,1,0,0,0,0,6,controller[0068]726,2,0,0,0,0,6,appliance[0069]727,0,0,0,0,0,7,0[0070]727,1,0,0,0,0,7,0[0071]727,2,0,0,0,0,7,0[0072]728,0,0,0,0,0,6,[0073]728,1,0,0,0,0,6,[0074]728,2,0,0,0,0,6,[0075]729,0,0,0,0,0,5,35d549d499c7eca0[0076]729,1,0,0,0,0,5,9f3c2777661d5643[0077]729,2,0,0,0,0,5,19dcd6d922db29ba[0078]731,0,0,0,0,0,7,0[0079]731,1,0,0,0,0,7,0[0080]731,2,0,0,0,0,7,0[0081]为了读取这些注册表,在每个apn设备上运行的apn软件必须知道每行的第一个数字是什么意思。例如,724来自apn软件代码中的以下#define语句。[0082]#definet2system_config$site_table_packed0i$name724[0083]id号724特定于由apn设备执行的apn软件的版本和编译器版本。例如,如果id号是使用编译器版本7.3生成的,则apn软件版本8.0将无法读取该id号,因为不能保证配置设置的id号的值在不同apn软件版本之间是相同的。[0084]为了使编译器204能够生成不同软件版本的注册表,如上所述,编译器204将接收网络中所有apn设备支持的最高注册表版本作为输入,并将以最高支持的中间配置语言注册表格式生成apn设备的中间配置语言注册表。使用前一段落中的示例,如果一个apn设备运行apn软件版本7.3并且支持中间配置语言注册表格式7.3,而另一个apn设备执行apn软件版本8.0并且支持中间配置语言注册表格式7.3和8.0,则编译器204将接收中间配置语言注册表版本7.3作为输入,并且将根据中间配置语言注册表格式7.3生成中间配置语言注册表。此外,在中间配置语言注册表格式中,不是将每个配置项与可能在软件版本之间改变的id号相关联,如下面将详细描述的,而是通过名称来识别配置项,并且对于跨apn软件版本使用的配置项,名称将保持不变。如果配置项是通过软件发布(softwarerelease)添加的,则该项将获得新名称。执行不同软件版本的apn设备可以具有不同的特征,并且可以针对所支持apn特征的共同集合彼此协商。[0085]在图2中,apna106和108各自包括至少一个处理器206和存储器208。apna106和108还包括配置生成器210,用于使用从控制器130从中间配置语言接收的配置注册表来配置apna106和108。在一个示例中,配置生成器210可以生成用从配置注册表中的字段中读取的配置数据填充配置数据库211的脚本。在这里描述的示例性实现中,用于创建从控制器130接收的配置注册表的语言是xml,并且配置生成器210读取xml属性的名称和值,并且使用这些值来填充配置数据库211中的相应记录。一旦配置数据被填充到配置数据库211中,apn软件212就读取数据库211中的配置并且在存储器208中创建相应的系统配置。apn软件212使用存储器208中的系统配置来实现apn特征,例如建立和维护管道、在管道上传输业务以及定时同步。[0086]apna106和108中的每一个还包括用于与网络中的其他apna协商兼容特征的特征协商器214。特征协商器214可以利用版本控制协议来协商兼容特征。下面将描述版本控制协议的示例性使用。[0087]如上所述,这里描述的主题使apna能够执行apn软件的不同版本。在所示出的示例中,apna106执行apn软件212的版本1.0,并且apna108执行apn软件212的版本1.1。[0088]中间配置语言不需要控制器130知道每个apna的底层细节。用于创建注册表的中间配置语言的版本将是网络中所有apna支持的最高版本。在一个示例中,为注册表设置的版本号与网络支持的最低apn软件版本相同。在所示出的示例中,apna106使用apn软件版本1.0,并且apna108使用apn软件版本1.1。由于apn软件版本1.0是网络中节点支持的最低软件版本,因此将使用中间配置语言的版本1.0创建配置注册表。[0089]以下是用于创建中间配置注册表的中间配置语言的示例规范:[0090]《configurationregistry_version="2.0.0.0.0"config_editor_release="r9_0_0_0_0_ga_09010219"compiler_release="r9_0_0_0_0_ga_09010219"》[0091]《tablename="table1"registry="main"count=1》[0092]《row》[0093]《fieldname="field1"value="abcd"registry="main"/》[0094]《fieldname="field2"value="0"registry="main"/》[0095]《fieldname="field3"value="1234"registry="others"/》[0096]《/row》[0097]《/table》[0098]《tablename="table2"registry="route"count=2》[0099]《row》[0100]《fieldname="field1"value="abcd"registry="route"/》[0101]《fieldname="field2"value="0"registry="route"/》[0102]《fieldname="field3"value="1234"registry="route"/》[0103]《/row》[0104]《row》[0105]《fieldname="field1"value="abcd"registry="route"/》[0106]《fieldname="field2"value="0"registry="route"/》[0107]《fieldname="field3"value="1234"registry="route"/》[0108]《/row》[0109]《/table》[0110]《registry》[0111]《regname="main"version="b543dcb88cc9c68ea7998735fe380740"/》[0112]《regname="interface"version="9fc98bf34b6c44e5bc07a917e6f6f186"/》[0113]《regname="route"version="ab13fc354b9d1ce28e8bdd307f17f60d"/》[0114]《regname="rules"version="a4c8de9b89c9dd02f34aa69b7c3d5f6a"/》[0115]《regname="class"version="c81d8cf22e1ccb110f50a45180a1a11c"/》[0116]《regname="sites"version="f01c19081d804949a98de85225b3a062"/》[0117]《regname="wanlinks"version="b4084a33e5095c7aeae92a8444a426a5"/》[0118]《regname="others"version="06207c5014b0b77e053ae486443170b4"/》[0119]《regname="defaults"version="d2d31bd9ea608f846c9b7e27b9dbdcd8"/》[0120]《regname="dynamic_route_filter"version="f45d3e57283c5c9bbaf2e238bab122e6"/》[0121]《regname="firewall"version="727cf33fd7287eaa2b73899c1d4d029f"[0122]《/registry》《/configuration》[0123]下面示出的表1示出了上面示例配置注册表中的字段的定义。[0124][0125][0126]表1:中间配置语言注册表字段定义[0127]在上面定义的中间配置语言注册表格式中,sd-wan配置元素被分配了名称,而不是随软件发布变化的id号。例如,可以为wan链路的配置元素分配字段名称wan_link,并且可以为管道的配置元素分配字段名称conduit。这些字段名称对应于apn软件用来配置apn设备以实现相应特征的配置元素。在每个设备上执行的apn软件只需要知道如何读取中间配置语言注册表格式的属性和值。不再要求apn软件能够读取由逗号分隔值与对应于配置元素的id号组成的注册表文件。[0128]如上所述,一旦每个apn设备从控制器130接收到其配置注册表,则自动生成的脚本读取配置注册表xml文件,将配置插入配置数据库211,并且向apn软件130通知配置数据已被写入配置数据库211。从xml文件读取配置数据可以包括读取上述指定的xml属性的值,并将属性的值写入配置数据库211中的相应记录中。[0129]对于apn软件启动情况,apn软件212将等到接收到该通知为止,以继续从配置数据库211读取。对于配置更新情况,自动生成的脚本还将向apn软件212通知注册表改变的类型,使得apn软件212知道如何从配置数据库211数据库读取那些新的改变以及需要执行的配置更新的类型。对于配置更新,因为apn软件212和从配置注册表填充值的脚本两者都在向配置数据库211写入,所以必须协调写入,使得apn软件212和脚本不会破坏彼此的数据。[0130]如上所述,当apn设备从控制器130接收其配置时,apn设备使用版本控制协议彼此协商兼容的apn特征。该协议在本文中被称为tvp,其代表talari版本控制协议。[0131]为了支持多个sd-wan或apn软件版本,添加了新的tvp记录类型,以协商要使用的不同apn消息版本。如果接收到未知的tvp记录类型,它将被忽略,并且接收apna将使用默认apn消息的版本。tvp的当前版本使用每条记录的类型、长度、值(tlv),使得新记录很容易被忽略,未知记录很容易被忽略。[0132]apn节点可以使用tvp协商兼容消息格式的一种消息类型是用于在位于不同站点的apn设备之间建立和维护管道的消息。管道是在站点之间承载加密业务的隧道,并且可以跨越多个wan链路。管道业务被封装在信封中,信封具有包括序列号和时间戳的报头。此信封允许测量丢包、延迟和抖动,使得业务可以被定向到通过网络的最佳路径上,并且允许缓解网络故障。定义管道消息的消息格式的协议被称为trp,其代表talari可靠协议。[0133]trp版本记录可以用作支持多个软件版本所需的tvp扩展的示例。对于apn(sd-wan)软件的第一多版本发布,将不需要trp版本记录。对于将来的版本,如果需要更改trp报头,则将创建新的记录。下面的场景示出了使用tvp在不同apn站点之间协商trp版本的不同用例。[0134]场景1和图3示出了当只知道单个trp版本的站点1发起trp版本检查时,使用tvp协商trp记录格式。[0135]·场景1:站点1运行apn软件版本8.3.0.0.0,并且trp版本为8.3.0.0.0。站点2运行apn软件版本8.4.0.0.0并且支持trp版本8.3.0.0.0和8.4.0.0.0。在图2的消息流程图的第一行中,站点1向站点2发送tvp检查。第1行中的tvp检查不包括trp记录,因为站点1仅知道单个trp版本。当站点2接收到tvp检查时,它知道站点1只能使用trp8.3.0.0.0,因此站点2使用trp版本8.3.0.0.0与站点1通信。行2中的tvpok不包括trp版本记录。[0136]场景2和图4示出了当支持多个trp版本的站点2发起tvp版本检查时,使用tvp协商trp版本。[0137]·场景2:在场景2中,站点1和站点2具有与场景1相同的apn软件版本和trp版本。然而,在场景2中,站点2首先向站点1发送tvp检查消息。由于站点2支持多个trp版本,因此如果站点2首先发送tvp检查,则站点2将在tvp检查消息中包括其最高支持的trp版本记录,即8.4.0.0.0。当站点1接收到tvp检查消息时,站点2将忽略未知的tvp记录。因此,站点2将向站点1发送tvpok消息,而没有trp版本记录。在接收到tvpok消息而没有trp版本记录后,站点2将确定它需要使用trp版本8.3.0.0.0与站点1通信。[0138]场景3和图5示出了当一个站点支持两个trp版本而另一个站点支持三个trp版本时,使用tvp协商trp版本。[0139]·场景3:站点1运行apn软件版本8.4.0.0.0,并且支持trp版本8.3.0.0.0和8.4.0.0.0。站点2执行apn软件版本8.5.0.0.0,并且支持trp版本8.3.0.0.0、8.4.0.0.0和8.5.0.0.0。在图5中,站点2向站点1发送第一tvp检查消息。tvp检查消息包括trp版本记录8.5.0.0.0。站点1不支持trp版本8.5.0.0.0,因此站点1使用trp版本8.4.0.0.0(站点1支持的下一个最高trp版本)回复tvpnokay消息。站点2能够支持trp版本8.4.0.0.0,因此站点2使用trp版本8.4.0.0.0发送另一条tvp检查消息,并且从站点1接收tvpok。在图5中的消息流之后,站点1和站点2可以使用trp版本8.4.0.0.0交换隧道管理消息。[0140]场景4和图6示出了当一个站点支持两个trp版本而另一个站点支持三个trp版本时,使用tvp协商trp版本。[0141]·场景4:站点1运行apn软件版本8.4.0.3.0,并且支持trp版本8.3.0.0.0、8.4.0.0.0和8.4.0.3.0。站点2运行apn软件8.5.0.0.0,并且支持trp版本8.3.0.0.0、8.4.0.0.0和8.5.0.0.0。在图6所示的示例中,站点1首先向站点2发送tvp检查消息。tvp检查消息包括trp版本记录8.4.0.3.0。站点2不支持trp版本8.4.3.0,因此站点2使用trp版本8.4.0.0.0回复tvpnokay,这是站点2支持的最高trp版本,其低于从站点1接收到的trp版本。站点1能够支持trp版本8.4.0.0.0,因此站点1使用trp版本8.4.0.0.0发送另一条tvp检查消息,并且从站点2接收tvpok。在图6所示的消息流之后,站点1和站点2可以使用trp版本8.4.0.0.0来管理站点1和站点2之间的隧道并通过这些隧道进行通信。[0142]在图3-6中,tvp用于协商位于不同站点的apn设备之间隧道化协议消息的版本。在另一示例中,tvp可用于协商位于不同站点的apn设备所使用的隧道加密协商方法。为了使用tvp来执行这样的协商,用于加密协商方法的新的tvp记录被添加到tvp协议。在执行加密协商之前,位于不同站点的apn设备可以利用从自控制器接收的配置文件中获得的默认加密协商方法。加密协商方法的协商可以以与图3-6中的trp版本的协商相同的方式来执行。也就是说,一个站点将向另一个站点发送带有加密协商记录的tvp检查消息,该加密协商记录指定发送站点支持的加密协商方法的最高版本。如果接收站点支持加密协商方法,则接收站点将用包括加密协商记录的tvpok消息进行响应,该加密协商记录指示对于发送站点支持的加密协商方法版本的支持。如果接收站点不支持加密协商方法,则接收站点使用接收站点支持的最高加密协商方法版本进行响应,该版本低于从发送站点接收的tvp检查报文中的加密协商方法。一旦两个站点就加密协商方法达成一致,就可以使用该加密协商方法来协商两个站点之间的隧道加密参数。[0143]一旦在两个站点之间建立了管道,两个站点就通过隧道交换控制消息。这种控制消息的示例包括心跳消息、nag消息、sack/snak、消息、时间同步消息、网络重启消息和共享存储器管理消息。心跳消息是通过管道发送的消息,用于维护和确定管道的状态。时间同步消息用于使apn设备的时钟与控制器维护的中央时钟同步。sack或选择性确认消息用于确认特定数据的接收。snak或选择性否定确认消息用于发信号通知尚未接收到的数据。nag消息也可用于指示尚未接收到的数据。与trp版本和加密协商方法一样,可以使用图3-6所示的消息流,使用tvp协议来协商这些类型的控制消息的版本,例外是tvp协议将承载指示发送站点支持的控制消息类型和控制消息版本的记录。[0144]使用共享存储器管理消息作为示例,位于不同站点的apn可以使用共享存储器相互通信。为了使用共享存储器进行通信,使用这里被称为apn存储器协议或apnmem的协议来交换消息。apnmem协议具有定义特征的版本,并且apnmem如果需要将字段改变为apnmem消息,则可以添加新的apnmem类型。图3-6所示的tvp协商过程可用于协商要在管道两端之间使用的apnmem类型。apnmem将使用特定于apn版本的打包/解包功能,以在共享存储器信息和apnmem消息之间进行转换。受影响的apnmem消息将提供回调功能以注销旧的apnmem类型并且注册新的apnmem类型。如果tvp协商新的apnmem消息类型,则将调用此功能。[0145]除了上述控制协议版本和消息类型之外,还可以使用图3-6所示的消息流,利用添加到tvp协议的适当记录来协商以下消息类型和对应的协议特征,以识别正在协商的协议类型和管道的每一端的apna支持的协议的当前版本:[0146]·racp-代表冗余设备配置协议——当两个设备在冗余配置中为站点提供服务时使用的高可用性(ha)协议。这两个设备传送状态并且协商哪个设备应处于活动状态并且代表站点。[0147]·tap-代表talari应用协议。tap协议用于通过管道在站点之间承载用户数据。[0148]·动态管道/云连接-这些消息用于触发基于业务流动态创建管道。[0149]·带宽测试-用于测试管道带宽的消息[0150]·路径mtu-路径mtu是路径上支持的最大消息传输单元大小。[0151]·traceroute-traceroute是一种路径发现协议,用于发现业务源和目的地之间的跳。[0152]·报头压缩-定义管道消息中使用的报头压缩方法。[0153]·动态路由共享-动态路由共享消息允许apna交换从网络动态了解的路由信息,例如,通过开放最短路径优先(ospf)或边界网关协议(bgp)。[0154]图7是示出用于管理sd-wan中的多个软件版本的示例性过程的流程图。参照图7,在步骤700中,该过程包括提供控制器,该控制器定义sd-wan的总体配置,并且创建用于各个sd-wan设备实现总体配置中它们各自的部分的配置注册表。例如,给定由网络中的apna执行的软件版本,控制器130可以向用户呈现有效的apn配置选项。控制器130可以根据用户选择的配置,以中间配置语言格式为每个apna生成配置注册表。[0155]在步骤702中,该过程还包括在控制器处并且以中间配置语言注册表格式,为执行sd-wan软件的第一版本的第一sd-wan设备生成第一配置注册表。如上所述,在一个示例中,中间配置语言是xml,其中配置元素被分配属性名称,该属性名称被赋予对应的值。属性名称在软件发布版本中是通用的,使得生成中间配置语言配置注册表的编译器不需要以特定于每个设备的低级别细节的格式生成注册表。该编译器被提供中间配置语言注册表版本(其为网络中所有apn设备支持的最高版本)作为输入,并且以该版本为所配置的每个sd-wan设备生成中间配置语言注册表。应当注意,提供给不同设备的配置将是不同的,例如,由于每个设备的网络连接不同。然而,每个设备将能够读取它从控制器接收的中间配置语言注册表。[0156]在步骤704中,该过程还包括在控制器处并且以中间配置语言注册表格式,为执行与sd-wan软件的第一版本不同的sd-wan软件的第二版本的第二sd-wan设备生成第二配置注册表。即使第一和第二sd-wan设备执行不同的软件版本,但它们将各自接收到它们两者都理解的最高版本的中间配置语言的配置注册表。这样的系统假设apn软件的较高版本可以读取中间配置语言的较低版本,这是因为中间配置语言使用配置对象的名称,而不是随软件发布而改变的id号。[0157]在步骤706中,该过程还包括将第一配置注册表发送到第一sd-wan设备,并且将第二配置注册表发送到第二sd-wan设备。例如,控制器130可以将配置注册表发送到正被配置的sd-wan设备。[0158]在步骤708中,该过程还包括在第一sd-wan设备处接收第一配置注册表,并且使用第一配置注册表来配置第一sd-wan设备。在步骤710中,该过程还包括在第二sd-wan设备处接收第二配置注册表,并且使用第二配置注册表来配置第二sd-wan设备。使用配置注册表来配置第一和第二sd-wan设备可以包括识别第一和第二配置注册表中与第一和第二sd-wan设备用来提供sd-wan服务的配置元素相对应的xml属性的名称,读取xml属性值,以及将这些值存储在配置数据库211中的记录中。在第一和第二sd-wan设备上执行的sd-wan软件使用存储在它们各自的配置数据库211中的配置来将系统配置写入存储器208。sd-wan软件使用系统配置来实现sd-wan特征,例如建立和维护管道、在管道上传输业务、执行定时同步以及与其他sd-wan设备协商sd-wan特征。[0159]在步骤712中,该过程还包括在第一和第二sd-wan设备之间,协商可用于实现第一和第二配置注册表中指定的配置的共同特征。例如,sd-wan设备可以协商sd-wan特征,诸如管道消息格式、加密协商方法、控制消息协议版本等。协商可以使用版本控制协议和图3-6所示的示例性消息收发来发生。[0160]应当理解,在不脱离当前公开的主题的范围的情况下,可以改变当前公开主题的各种细节。此外,以上描述仅用于说明目的,而不是为了限制目的。当前第1页12当前第1页12
图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
用于管理软件定义的广域网(SD-WAN)中的多个软件版本的方法、系统和计算机可读介质与流程 专利技术说明
作者:admin
2022-11-26 14:35:34
761
关键词:
计算;推算;计数设备的制造及其应用技术
专利技术