在软件定义的网络中发现ip多播组成员的制作方法

文档序号:7995066阅读:123来源:国知局
在软件定义的网络中发现ip多播组成员的制作方法【专利摘要】提供了在软件定义的网络中发现多播组成员的方法。将多播组成员查询消息仅发送到网络中的所选的网络设备。所述网络设备将所述多播组成员查询消息转发至被连接到所述网络设备的主机计算机系统,以及响应于组成员查询消息识别出来自所述主机计算机系统的多播组成员请求。【专利说明】在软件定义的网络中发现IP多播组成员【
背景技术
】[0001]多播技术正被日益青睐于用以在网络上提供丰富的内容。多播是用于将数据从单个源(例如,服务器)传送到网络上的多个接收器(例如,个人计算机)的机制。多播分组(packet)被沿网络中的适当路径向下复制以创建可能的最有效路由机制。发送器被要求仅将数据分组发送一次,即使分组需要被递送到多个接收器。【专利附图】【附图说明】[0002]为了更好地理解方案,现在将参照随附附图单纯以示例的方式描述实施例,在附图中:图1是根据示例的多播系统的示意性框图。[0003]图2是根据示例的图1的OpenFlow(开放流)控制器系统的示意性框图。[0004]图3示出根据示例的方法的流程图。[0005]图4示出根据示例的在软件定义的网络中发现多播组成员(membership)的方法的流程图。[0006]图5是根据示例的被托管在计算机系统上的OpenFlow控制器系统的示意性框图。【具体实施方式】[0007]多播技术被组织使用以在网络上发送数据(尤其是,多媒体内容)。通过使用分发树经网络转发多播分组。网络在网络的每个节点(例如,路由器或交换机(switch))处复制数据分组以使得数据(或消息)通过网络的每个节点(链路)仅被发送一次。当接收器加入多播组时,针对该组构建多播分发树。一旦数据分组被发送器发送到多播组,其到达已加入该组的所有接收器。另外,多播分发不要求源知道已加入多播组的接收器。这使得机制(分发)在把同样的信息共享于许多接收器当中方面极其高效,由此以成本有效的方式改进网络利用。[0008]在软件定义的网络(SDN)架构中,在与网络设备分离的软件中实现控制平面,并且在网络设备中实现数据平面。OpenFlow是领先的SDN架构。在OpenFlow网络中,通过由管理用于该网络的控制平面的OpenFlow控制器填充的流表(flowtable)条目来控制在网络设备上的数据转发。在其接口上接收分组的网络设备查找其流表以检查需要对接收到的帧采取的动作。启用OpenFlow的(OpenFlowenabled)网络设备默认地创建默认流表条目,以把不匹配表中的任何特定流条目的所有分组发送到OpenFlow控制器。OpenFlow控制器以这种方式变为知悉在设备上进入的所有新的网络业务(traffic),并且规划出与接收器网络设备上的新业务模式对应的流表条目以用于该流的随后的分组转发。[0009]当多播应用在OpenFlow网络上运行时,对加入因特网协议(IP)多播组感兴趣的主机发出多播组成员请求。当将不存在匹配该业务模式的流表条目时,启用OpenFlow的设备将默认地向OpenFlow控制器发送这些请求以用于进一步处理。如果由于一些原因该请求分组在控制器能够看到它之前被丢失或掉落,则主机典型地不重新发送请求。在传统的层2网络中,借助选取特定交换机作为查询器(该查询器周期地发出组成员查询分组)来解决该问题。然而,由查询器发出的查询充满(flood)整个网络由此浪费网络带宽。[0010]提出了用于在不使整个网络充满查询分组的情况下发现计算机网络(例如,集中式网络或SDN架构,诸如OpenFlow)中的多播组成员的高效的方案。在实现方式中,OpenFlow控制器仅向网络设备和接口的子集广播成员查询消息。[0011]图1是根据示例的多播系统的示意性框图。[0012]多播系统100包括:多播源系统110;网络设备112、114、116、118、120、122、124;OpenFlow控制器系统126;以及主机计算机系统128、130、132。[0013]OpenFlow控制器系统126通过网络(其可以是有线的或无线的)连接至网络设备112、114、116、118、120、122、124、多播源系统110和主机计算机系统128、130、132。网络可以是公共网络(诸如因特网)或者私有网络(诸如内联网)。在图1中以示例而不是限制的方式图示网络设备112、114、116、118、120、122、124的数目。在多播系统100中部署的网络设备的数目在其它实现方式中可能变化。类似地,在其它实现方式中可能存在附加的多播源系统、OpenFlow控制器系统和主机计算机系统。[0014]多播源系统110是主管多播内容的计算系统(例如,计算机服务器、台式计算机等)。多播内容可以包括数据、图像、音频、视频、多媒体和其它类似内容。多播内容可以通过网络设备112、114、116、118、120、122、124与主机计算机系统128、130、132(还已知为多播订户)共享。[0015]网络设备112、114、116、118、120、122、124可以是但不限制于网络交换机、虚拟交换机或路由器(例如,边缘路由器、订户边缘路由器、提供者间边际路由器或核心路由器)。在实现方式中,网络设备112、114、116、118、120、122、124是启用OpenFlow的设备。网络设备112、114、116、118、120、122、124把多播数据从多播源传递到最终用户系统或设备(多播接收器)。[0016]OpenFlow控制器系统126是支持OpenFlow的计算系统(例如,个人计算机、计算机服务器等)。OpenFlow是给予通过网络对网络交换机或路由器的转发平面的访问的开放标准通信协议。其提供开放协议以规划网络设备(诸如路由器)中的流表,由此控制数据分组在网络中被路由的方式。通过OpenFlow,网络设备的数据和控制逻辑被分离,并且控制逻辑被移至外部控制器,诸如OpenFlow控制器系统126。OpenFlow控制器系统126维护所有网络规则并且向网络设备112、114、116、118、120、122、124分发适当的指令。其实质上将网络智能中心化,同时网络通过启用OpenFlow的网络设备维护分布式转发平面。在图2中图示了OpenFlow控制器系统126的组件并且在以下被描述。[0017]主机计算机系统128、130、132可以是台式计算机、笔记本计算机、平板计算机、计算机服务器、移动电话、个人数字助理(PDA)等。主机计算机系统128、130、132可以包括用于从多播源系统110接收多播数据的客户端或多播应用。在本公开的上下文中,术语“主机计算机系统”还可以包括对多播组感兴趣的网络设备。[0018]多播技术仅允许已经预订了内容服务器的特定内容数据流的可信的(authentic)主机(或用户)计算机系统来接收内容。主机系统通过加入特定的多播组来表明它们接收来自内容服务器的特定数据的意愿。一旦用户系统加入特定组,就针对该组创建多播分发树。从多播源系统110到接收器设备的数据流可以由多播协议管理。被用于管理多播系统(诸如图1的多播系统)中的数据流的一些最常见的协议可以包括但不限制于因特网组管理协议(IGMP)、协议无关多播PM以及距离矢量多播路由协议(DVMRP)。[0019]图2是根据示例的图1的OpenFlow控制器系统的示意性框图。[0020]OpenFlow控制器系统126可以包括和/或支持标准OpenFlow控制器组件。在实现方式中,OpenFlow控制器系统126包括主机检测模块202和多播模块204。[0021]主机检测模块202识别所有主机计算机系统以及它们的到网络设备的互连点。该信息被用于决定网络设备接口是边缘接口还是网络互连接口。主机检测模块202为了这一目的可以采用许多不同的方法。在实现方式中,主机检测模块202可以使用链路层发现协议(LLDP)以用于设备识别。LLDP是通常在如VOIP电话、视频摄像机和基于Linux的台式机的许多终端设备上实现的基于IEEE的L2协议。所有网络设备还支持LLDP。实现LLDP的设备将关于它们自身的信息片段(如IP地址、系统能力、MAC地址等)广告(advertise)给它们的对等设备。被广告的信息元素之一是系统能力TLV。利用该TLV,发送LLDP广告的设备可以向其对等设备通信关于其设备类型。换言之,设备可以向其对等设备通信其是否是有视频能力的设备、VOIP电话、摄像机支撑部、路由器或交换机等。[0022]当终端设备被连接到运行OpenFlow的网络设备(例如交换机)时,终端设备广告给网络设备的LLDP信息被默认的OpenFlow规则收集并被发送到OpenFlow控制器以用于处理。由控制器接收的该LLDP帧被传递至主机检测模块202,主机检测模块202对LLDP信息进行解析并基于能力位集合将连接到网络设备的设备分类为终端主机或者交换机。因此,如果设备将它自己广告为具有交换或路由能力,则它明显不是终端设备。但是如果没有设置这些位而是设置了如视频或语音通话的能力位,则它们指示该设备是终端设备。[0023]主机检测模块202以这种方式基于在每个设备的接口上接收的LLDP信息来针对每个网络设备创建边缘接口的列表(可以被称为“边缘接口列表”)以及网络互连接口的列表(可以被称为“网络设备互连接口列表”)。为了提供说明,在图1中,主机计算机系统128在接口LI上被连接到网络设备116,并且网络设备120在接口L2上被连接到网络设备116。在该情况下,在网络设备116上的接口LI被添加到边缘接口列表并且在网络设备116上的接口L2被添加到网络设备互连接口列表。[0024]OpenFlow控制器系统126的多播模块204接收多播组成员分组(“多播组成员请求”)并且识别网络设备以及对接收针对该组的多播业务感兴趣的其关联接口。多播模块204维护这些成员请求的数据库并且把网络设备在其上接收组成员分组的接口添加到可以被称为“多播订户接口列表”的列表中。图3提供多播模块204所遵循的用于把接口添加到“多播订户接口列表”的方法的流程图。在块302,启用OpenFlow的设备(诸如112、114、116、118、120、122或124)在接口上接收多播组成员分组。在块304,启用OpenFlow的设备把分组转发到OpenFlow控制器(诸如OpenFlow控制器系统126)。在块306,OpenFlow控制器的多播模块(诸如多播模块204)接收多播组成员分组。在块308,多播模块确定是否在网络互连接口上接收到多播组成员分组。如果确定在网络互连接口上接收到多播组成员分组,则多播模块从分组信息识别分组的发送器,并且在发送器的流表中添加流表条目以将查询分组(IGMP/MLD)匹配为输出动作LOCAL。方法然后继续到将接口添加到“多播订户接口列表”(块310)。另一方面,如果未在与网络互连的接口上接收到多播组成员分组,则多播模块将接口添加到“多播订户接口列表”(±夬312)。[0025]为了提供在图1的上下文中的前述方法的说明,让我们考虑其中在接口LI上连接到网络设备116的主机计算机系统128发送多播组成员请求的情形。此外,网络设备120(在接口L2上连接到网络设备116)的主机堆栈也发送多播组成员请求。在该情况下,多播模块204将会把网络设备116上的接口LI和L2添加到多播订户接口列表。多播模块204还检查网络设备116在其上接收到多播组成员的接口是否为网络互连。如果是,则多播模块204规划出与网络设备120流表中的查询分组匹配的流表条目(作为输出动作LOCAL)以便使得网络设备120的主机堆栈能够处理由OpenFlow控制器系统126发送的查询(例如,查询PKT)。[0026]图4示出在基于OpenFlow的网络(SDN网络)中发现多播组成员的方法的流程图。在描述期间参照图1以图示发现机制。因此,在实现方式中,可以在基于OpenFlow的网络中实现方法,基于OpenFlow的网络可以包括多播源系统110、网络设备112、114、116、118、120、122、124、OpenFlow控制器系统126和主机计算机系统128、130、132。[0027]在块402,OpenFlow控制器(诸如OpenFlow系统126)的多播模块(诸如多播模块204)从OpenFlow控制器的主机检测模块(诸如主机检测模块202)获得“边缘接口列表”。如更早提及的那样,“边缘接口列表”是针对网络中的每个网络设备的边缘接口的列表。此夕卜,多播模块204还获得“多播订户接口列表”,在实现方式中,多播模块204自身维护“多播订户接口列表”。如更早提及的那样,“多播订户接口列表”是网络设备以及对接收针对多播组的多播业务感兴趣的其关联接口的列表。为了参照图1进行说明,多播模块将会识别网络设备116(Ll)、116(L2)以及124(LI)作为多播订户接口(MSI)。主机检测模块将会识别网络设备116(Ll)、122(LI)以及124(LI)作为边缘接口(EI)。[0028]在块404,识别出将把成员查询分组发送到连接至那些接口的订户的网络设备的那些接口。网络设备自身将从OpenFlow控制器接收成员查询分组。按照如下识别这些接P:查询接口(QI)列表=(MSI+(E1-MSI)),其中MSI是多播订户接口(MSI)列表并且EI是边缘接口(EI)列表。由于多播订户接口(MSI)列表和边缘接口列表(EI)在块402获得,因此根据MSI和EI列表确定查询接口(QI)列表,查询接口(QI)列表是用于发送成员查询分组的网络设备接口的列表。这是对集合(SET)的并集(UN1N)运算。[0029]换言之,{QI}={MSI}U{EI},其中QI=>查询接口列表MSI=>多播订户列表EI=>边缘接口列表。[0030]在网络设备处从OpenFlow控制器接收查询分组。为了提供在图1的上下文中的说明,在该情况下的MSI将是116(Ll)、116(L2)和124(LI)的集合;EI将是116(LI)、122(LI)和124(LI)的集合。在该情况下,计算出的QI列表将是116(Ll)、116(L2)、122(LI)和124(LI)。[0031]在块406,OpenFlow控制器中的多播模块将PACKET_0UT开放流消息仅发出到查询接口(QI)列表中的接口(例如,116(Ll)、116(L2)、122(LI)和124(LI))。PACKET_0UT消息具有嵌入在其中的多播查询(用于IPv4的IGMP和用于IPv6的MLD)分组,并且用于网络设备的输出动作将要在由OpenFlow控制器指明的接口上发出。[0032]在块408,接收到PACK_OUT消息的网络设备116、122和124提取查询分组,并且基于输出动作,从正确的接口发出查询分组。为了在图1的上下文中进行说明,网络设备116在接口LI和L2上发送查询发出分组。类似地,网络设备122和124在接口LI上发送查询发出分组。[0033]在块410,当接收到查询发出分组时,主机计算机系统128和132,以及网络设备130的主机堆栈通过发送针对它们的相应多播组的多播组成员分组而响应回。这些响应被识别出并且网络设备116和124将接收到的组成员分组转发到OpenFlow控制器,OpenFlow控制器追踪组成员作为其多播模块的一部分。[0034]图5是根据示例的被托管在计算机系统上的OpenFlow控制器系统的示意性框图。[0035]计算机系统502可以包括处理器504、存储器506、消息路由系统508以及通信接口510。OpenFlow控制器系统126包括主机检测模块202和多播模块204。计算系统502的组件可以通过系统总线512耦合在一起。[0036]处理器504可以包括任何类型的处理器、微处理器或者解释并执行指令的处理逻辑。[0037]存储器506可以包括随机存取存储器(RAM)或者可以非临时地存储信息和指令以供处理器504执行的另一个类型的动态储存设备。例如,存储器506可以是SDRAM(同步DRAM),DDR(双倍数据率SDRAM)、存储器总线(rambus)DRAM(RDRAM)、存储器总线RAM等,或者是储存存储器介质,诸如软盘、硬盘、CD-R0M、DVD、笔式驱动器等。存储器506可以包括当由处理器504执行时实现OpenFlow控制器系统126的指令。[0038]通信接口510可以包括使得计算设备502能够经由通信链路与其它设备和/或系统通信的任何收发器类的机制。通信接口510可以是软件程序、硬件、固件或其任何组合。通信接口510可以使用多种通信技术以实现计算机系统502和另一个计算机系统或设备之间的通信。为了提供一些非限制性的示例,通信接口510可以是以太网卡、调制解调器、综合服务数字网络(“ISDN”)卡等。[0039]OpenFlow控制器系统126可以以包括诸如程序代码之类的计算机可执行指令的计算机程序产品的形式实现,计算机可执行指令可以与诸如MicrosoftWindows、Linux或UNIX操作系统之类的适合的操作系统结合来在任何适合的计算环境中运行。在本方案的范围内的实施例还可以包括包含用于承载或者具有存储于其上的计算机可执行指令或数据结构的计算机可读介质的程序产品。这样的计算机可读介质可以是能够由通用或专用计算机访问的任何可用介质。以示例的方式,这样的计算机可读介质可以包括RAM、R0M、EPR0M、EEPROM、CD-ROM、磁盘储存或其它储存设备,或者能够被用于承载或存储采用计算机可执行指令形式的期望的程序代码并且能够由通用或专用计算机访问的任何其它介质。[0040]在实现方式中,可以经由通信接口510将OpenFlow控制器系统126从诸如数据储存设备之类的另一个计算机可读介质、或者从另一个设备读取到存储器506中。[0041]替代发送到LAN上的所有设备,所提出的方案使得能够将查询分组仅发送至连接到对多播感兴趣的主机以及网络基础设施设备的接口。在把查询分组发送到网络上的所有设备的传统方式中,控制器需要利用将防止帧经由默认规则返回到控制器的适当动作来在所有交换机上规划出与查询分组匹配的流表条目。利用该方法,不要求针对每个匹配多播查询规划出新的规则的需要。[0042]为了清楚的缘故,如在本文件中使用的术语“模块”可以意味着包括软件组件、硬件组件或者其组合。以示例的方式,模块可以包括组件,诸如软件组件、进程、任务、协同例程、功能、属性、过程、驱动器、固件、数据、数据库、数据结构、专用集成电路(ASIC)和其它计算设备。模块可以驻留在易失性或非易失性储存介质上并且被配置成与计算机系统的处理器交互。[0043]应领会图5中描绘的系统组件仅是为了说明的目的并且实际的组件可以取决于针对本方案的实现方式而部署的计算系统和架构而变化。以上描述的各种组件可以被托管在单个计算系统或通过适合的部件连接在一起的多个计算机系统(包括服务器)上。[0044]应注意以上描述的本方案的实施例仅用于说明的目的。虽然已经结合其特定实施例描述了本方案,但是在本质上不脱离在此描述的主题的教导和优点的情况下,很多修改是可能的。可以在不脱离本方案的精神的情况下做出其它替换、修改和改变。【权利要求】1.一种在软件定义的网络中发现多播组成员的方法,包括:将多播组成员查询消息仅发送到网络中的所选的网络设备;将所述多播组成员查询消息转发至被连接到所述网络设备的主机计算机系统;以及响应于所述多播组成员查询消息,识别出来自所述主机计算机系统的多播组成员请求。2.根据权利要求1所述的方法,其中所选的网络设备是被连接到主机计算机系统的网络设备接口。3.根据权利要求2所述的方法,其中识别被连接到主机计算机系统的网络设备包括使用链路层发现协议(LLDP)。4.根据权利要求1所述的方法,其中所选的网络设备是从主机计算机系统接收多播组成员请求的网络设备。5.根据权利要求1所述的方法,其中所述多播组成员查询消息由OpenFlow控制器发送。6.根据权利要求1所述的方法,其中以周期性的间隔发送多播组成员查询消息。7.一种系统,包括:OpenFlow控制器,其中所述OpenFlow控制器包括:主机检测模块,用以识别软件定义的网络中的边缘接口;以及多播模块,用以识别对接收多播业务感兴趣的网络设备接口,其中所述OpenFlow控制器基于所述边缘接口和所述网络设备接口识别用于接收多播组成员查询消息的网络设备。8.根据权利要求7所述的系统,其中所述OpenFlow控制器将多播成员查询消息仅发送到所识别的网络设备。9.根据权利要求8所述的系统,其中所述OpenFlow控制器以周期性的间隔将多播成员查询消息发送到所识别的网络设备。10.根据权利要求9所述的系统,其中所述周期性的间隔是用户定义的。11.根据权利要求7所述的系统,其中所识别的网络设备将多播组成员查询消息转发到相应的主机计算机系统,并且响应于多播组成员查询消息,识别出来自相应的主机计算机系统的多播组成员请求。12.根据权利要求7所述的系统,其中对接收多播业务感兴趣的网络设备接口是从主机计算机系统接收到多播组成员请求的网络设备接口。13.根据权利要求7所述的系统,其中所述多播模块维护从主机计算机系统接收到多播组成员请求的网络设备接口的数据库。14.根据权利要求7所述的系统,其中所述主机检测模块维护网络中的边缘接口的记录。15.一种非临时处理器可读介质,所述非临时处理器可读介质包括机器可执行指令,所述机器可执行指令当由处理器执行时使所述处理器:识别软件定义的网络中的边缘接口;识别对接收多播业务感兴趣的网络设备接口;以及基于所述边缘接口和所述网络设备接口识别用于接收多播组成员查询消息的网络设备。【文档编号】H04L29/12GK104509073SQ201280075012【公开日】2015年4月8日申请日期:2012年9月11日优先权日:2012年9月11日【发明者】K.R.比拉姆S.,桑卡兰B.,德瓦拉简V.申请人:惠普发展公司,有限责任合伙企业
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1