CN110050448B - 管理多播业务的***和方法 - Google Patents

管理多播业务的***和方法 Download PDF

Info

Publication number
CN110050448B
CN110050448B CN201780061523.9A CN201780061523A CN110050448B CN 110050448 B CN110050448 B CN 110050448B CN 201780061523 A CN201780061523 A CN 201780061523A CN 110050448 B CN110050448 B CN 110050448B
Authority
CN
China
Prior art keywords
network
multicast
packet forwarding
multicast group
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201780061523.9A
Other languages
English (en)
Other versions
CN110050448A (zh
Inventor
M.P.马诺哈
R.巴派
宋宁
S.拉马苏布拉马尼安
S.于
R.莱恩
K.G.普拉
K.H.江
R.W.舍伍德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Big Switch Networks LLC
Original Assignee
Big Switch Networks LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Big Switch Networks LLC filed Critical Big Switch Networks LLC
Publication of CN110050448A publication Critical patent/CN110050448A/zh
Application granted granted Critical
Publication of CN110050448B publication Critical patent/CN110050448B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/611Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/16Multipoint routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/44Star or tree networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/021Ensuring consistency of routing table updates, e.g. by using epoch numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/185Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with management of multicast group membership

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

在各种实例实施例中,公开一种用于优化多播树的管理的***和方法。所述***在控制器服务器处从网络上并通过第一包转发***接收第一多播组成员信息,所述控制器服务器提供对包括第一虚拟局域网的网络的控制,所述第一虚拟局域网包含第一包转发***,所述第一多播组成员信息由所述第一包转发***接收并将第一端主机描述为在所述第一虚拟局域网上加入第一多播组。所述***在所述控制器服务器处生成多播树,并将网络配置消息传送到第一多个包转发***中的至少一个包转发***,以启用所述多播树的一部分上的所述第一多播组的多播业务的通信。

Description

管理多播业务的***和方法
相关申请
本申请主张2016年8月3日申请的第15/227,856号美国申请的优先权权益,所述申请以全文引用的方式并入本文中。
技术领域
本发明的实施例大体上涉及数据处理,并且更具体地但不限于,涉及管理多播业务的***和方法。
背景技术
多播是其中消息被“同时”发送(多播)到一组目的地的通信。多播可以通过由网络对等体以分布式方式执行的软件协议来实现。例如,因特网组管理协议(IGMP)是由包含主机和路由器的网络对等体执行以确立多播组的多播组成员身份的多播通信协议。另外,例如,协议无关多播(PIM)是由包含路由器的网络对等体执行以为多播组跨子网络确立多播服务的多播通信协议。
发明内容
本申请的一方面公开了一种控制器服务器,包括:至少一个处理器和能在计算机可读媒体上接入的可执行指令,所述可执行指令在执行时使所述至少一个处理器执行包括以下各项的操作:在所述控制器服务器处,从网络上并通过第一包转发***接收第一多播组成员信息,所述控制器服务器提供对包括第一虚拟局域网的网络的控制,所述第一虚拟局域网包括包含所述第一包转发***的第一多个包转发***,所述第一多播组成员信息包括接入信息,所述第一多播组成员信息由所述第一包转发***从第一端主机接收并将所述第一端主机描述为在所述第一虚拟局域网上通过包括所述第一包转发***上的端口的网络上的新接入点接入第一多播组;将第一端主机注册为已从网络上的旧接入点移动到网络上的新接入点,所述注册包括处理第一端主机的离开操作和处理第一端主机的加入操作,响应于在控制器服务器处从网络上接收到第一多播组成员信息,处理所述离开操作和加入操作;在所述控制器服务器处生成第一多播树;以及通过所述网络将网络配置消息传送到所述第一多个包转发***中的至少一个包转发***,所述网络配置消息包含包流表条目,使得所述第一多个包转发***中的所述至少一个包转发***能够配置流表以启用所述第一多播树的一部分上的所述第一多播组的多播业务的通信。
本申请的另一方面公开了一种在控制器服务器处执行的方法,所述方法包括:在控制器服务器处,从网络上并通过第一包转发***接收第一多播组成员信息,所述控制器服务器提供对包括第一虚拟局域网的网络的控制,所述第一虚拟局域网包括包含所述第一包转发***的第一多个包转发***,所述第一多播组成员信息包括接入信息,所述第一多播组成员信息由所述第一包转发***从第一端主机接收并将所述第一端主机描述为在所述第一虚拟局域网上通过包括所述第一包转发***上的端口的网络上的新接入点接入第一多播组;将第一端主机注册为已从网络上的旧接入点移动到网络上的新接入点,所述注册包括处理第一端主机的离开操作和处理第一端主机的加入操作,响应于在控制器服务器处从网络上接收到第一多播组成员信息,处理所述离开操作和加入操作;在所述控制器服务器处生成第一多播树;以及由所述控制器服务器通过所述网络将网络配置消息传送到所述第一多个包转发***中的至少一个包转发***,所述网络配置消息包含包流表条目,使得所述第一多个包转发***中的所述至少一个包转发***能够配置流表以启用所述第一多播树的一部分上的所述第一多播组的多播业务的通信。
本申请的另一方面公开了一种存储计算机程序的计算机可读媒体,所述计算机程序不具有暂时性信号且在由至少一个处理器执行时使至少一个处理器执行包括以下各项的动作:在控制器服务器处:从网络上并通过第一包转发***接收第一多播组成员信息,所述控制器服务器提供对包括第一虚拟局域网的网络的控制,所述第一虚拟局域网包括包含所述第一包转发***的第一多个包转发***,所述第一多播组成员信息包括接入信息,所述第一多播组成员信息由所述第一包转发***从第一端主机接收并将所述第一端主机描述为在所述第一虚拟局域网上通过包括所述第一包转发***上的端口的网络上的新接入点接入第一多播组;将第一端主机注册为已从网络上的旧接入点移动到网络上的新接入点,所述注册包括处理第一端主机的离开操作和处理第一端主机的加入操作,响应于在控制器服务器处从网络上接收到第一多播组成员信息,处理所述离开操作和加入操作;在所述控制器服务器处生成第一多播树;以及由所述控制器服务器通过所述网络将网络配置消息传送到所述第一多个包转发***中的至少一个包转发***,所述网络配置消息包含包流表条目,使得所述第一多个包转发***中的所述至少一个包转发***能够配置流表以启用所述第一多播树的一部分上的所述第一多播组的多播业务的通信。
附图说明
附图中的各图仅说明本公开的实例实施例,且不能被视为限制其范围。
图1A是根据实施例的说明旧式***的框图;
图1B是根据实施例的说明旧式包转发***的框图;
图1C是根据实施例的说明旧式***的框图;
图2A是根据实施例的说明用于集中管理多播业务的***的框图;
图2B是根据实施例的说明包转发***的框图;
图2C是根据实施例的说明控制器服务器的框图;
图3A是根据实例实施例的说明多播组成员信息的框图;
图3B是根据实例实施例的说明轮询信息的框图;
图3C是根据实例实施例的说明加入注册的框图;
图3D是根据实例实施例的说明配置信息的框图;
图3E是根据实例实施例的说明接入信息的框图;
图4A是根据实例实施例的说明集中式多播组成员身份信息的框图;
图4B是根据实例实施例的说明多播信息元素的框图;
图5A是根据实例实施例的说明旧式网络的框图;
图5B是根据实例实施例的说明旧式网络的框图;
图5C是根据实例实施例的说明网络的框图;
图5D是根据实例实施例的说明网络的框图;
图5E是根据实例实施例的说明网络的框图;
图6A是根据实例实施例的说明用于优化多播树的管理的方法的框图;
图6B是根据实例实施例的说明用于基于接入信息更新多播信息元素的方法的框图;
图7是根据实例实施例的说明处理轮询信息的方法的框图;
图8是根据实例实施例的说明用于处理配置命令的方法的框图;
图9是根据实例实施例的说明用于管理作为多播组成员的端点的方法的框图;
图10是根据实例实施例的说明用于优化集中式多播拓扑信息的管理的方法的框图;
图11A是根据实例实施例的说明网络架构的框图;
图11B是根据实例实施例的网络的框图;
图12是根据实施例的控制器服务器和控制器客户端的框图;
图13是根据实施例的说明流表的框图;
图14是说明存储三个流表条目的流表的框图;
图15是根据实施例的说明用于处理包的方法的框图。
图16是根据实施例的说明网络的框图;
图17是说明可以与在本文中描述的各种硬件架构结合使用的代表性软件架构的框图;以及
图18是根据一些实例实施例的说明机器的框图。
本文中所提供的标题仅仅是为方便起见,且不一定影响所使用的术语的范围或含义。
具体实施方式
以下描述包含体现本公开的说明性实例实施例的***、方法、技术、指令序列和计算机器程序产品。在以下描述中,出于解释的目的,阐述许多特定细节以便提供对各种实例实施例的理解。然而,对于所属领域的技术人员来说显而易见的是,可在无这些特定细节的情况下实践本文中主题的实例实施例。一般来说,不必详细展示众所周知的指令实例、协议、结构和技术。
根据本公开的第一方面,公开用于优化多播树的管理的***和方法。用于优化多播树的管理的***和方法主要通过将管理定位在控制器服务器中来实现。例如,控制器服务器可以管理单个子网络中所含的多播树或跨越两个或更多个子网络的多播树。根据实施例,用于优化多播树的管理的方法包括从包转发***接收对多播组成员身份的查询的端主机(例如,笔记本电脑)。端主机可通过向包转发***传送呈轮询信息(例如,报告信息)形式的多播组成员信息来对查询作出响应。轮询信息可指示对与网络上的接入点相关联的一个或多个多播组的兴趣。例如,轮询信息可指示“加入(JOIN)”网络上的接入点处的多播组或从网络上的接入点处的多播组“离开(LEAVE)”。
方法继续到包转发***接收轮询信息并向控制器服务器传送轮询信息。随后,控制器服务器接收呈轮询信息形式的多播组成员信息,并基于多播组成员信息更新数据库。例如,多播组成员信息可指示多播成员通过网络中的“包转发***1”的“端口1”加入“虚拟局域网1”上的“多播组1”。控制器服务器基于更新后的数据库生成多播树,并通过向包转发***传送一个或多个网络配置消息在网络中配置多播树,以启用每一包转发***处的多播树的部分。这一方面实现了优于传统多播的效率,在传统多播中,网络中的对等体生成多播树并汇聚在特定多播树上,如下文更全面地描述。相比之下,本方面将管理集中定位在控制器服务器中。还将观察到,集中管理是针对一子网络内的多播组或跨越两个或更多个子网络的多播组。
根据本公开的第二方面,公开用于优化多播成员发现的管理的***和方法。第二方面包含第一特征和第二特征。第一特征包含用于处理轮询信息的***和方法,且第二特征包含用于处理配置命令的***和方法。第一特征包含在第一方面内,但是在第二方面中更详细地加以描述。根据实施例,第一特征包含用于处理轮询信息的方法。用于处理轮询信息的方法包含包转发***将端主机识别为连接到端口(而不是连接到端口的包转发***),并从端口将多播组成员身份信息的查询传送到端主机。因此,包转发***并不查询连接到其它包转发***的端口,从而通过减少包转发***处的处理来实现优于传统多播的效率。另外,包转发***并不通过使查询扩散到对等节点来查询端口,从而通过减少包转发***处处理并通过减少子网络中和跨子网络的带宽利用来实现优于传统多播的效率。
继续所述方法,端主机接收查询,并通过向包转发***传送轮询信息来对查询作出响应。例如,轮询信息可指示“加入(JOIN)”网络上的接入点处的多播组或从网络上的接入点处的多播组“离开(LEAVE)”。包转发***识别轮询信息是否指示端口的多播兴趣/成员身份的改变,并且响应于识别到改变,包转发***将轮询信息传送到控制器服务器,控制器服务器随后处理所述轮询信息,如上文在第一方面中所描述。上述查询定期通过将端主机连接到包转发***的端口传送。在至少两个额外方面实现了效率。首先,通过不在整个网络中扩散轮询信息(例如,“报告信息”、“加入信息”)来节省网络带宽,如传统多播中所做的那样。第二,包转发***在端口上针对每一多播组实现了稳定状态条件,但是对于状态的改变,包转发***并未将轮询信息传送到控制器服务器。将观察到,将周期性轮询作为“保活(keep alive)”机制的一部分来执行。“保活”机制通过定期查询端口以请求对多播组的兴趣的状态并响应于对多播组的兴趣在持续的肯定指示而将多播组的服务保活来识别多播组的状态改变。因此,除非检测到状态改变(例如,“加入”多播组,从多播组“离开”等),否则通过不向控制器服务器传送轮询信息来节省网络带宽。
根据实施例,第二特征包含用于处理配置命令的方法。用于处理配置命令的方法可包含包转发***接收用户命令信息,所述用户命令信息指示是使端主机“加入”多播组还是使端主机从多播组“离开”。这可以是手动操作,其中用户通过用户界面输入命令信息,命令信息随后被传送到包转发***,包转发***随后将包含用户命令信息的配置信息传送到控制器服务器。例如,使端主机“加入”“多播组1”的用户命令可使控制器服务器接收标识接收到用户命令信息的包转发***的节点标识符,以及配置信息,所述配置信息包含标识“加入”端主机的端口的端口标识符、标识“加入”端主机的多播组的多播组标识符、标识“加入”端主机的虚拟局域网的虚拟局域网(VLAN)标识符,以及任选的唯一地标识端主机的端点标识符信息(例如,媒体接入控制(MAC)地址/因特网协议地址)。响应于接收到配置信息,控制器服务器处理“加入”,如第一方面中所描述。根据另一实施例,配置命令可以由控制器服务器直接接收。根据另一实施例,配置命令可以由除包转发***以外的某一装置接收,并被传送到控制器服务器。
根据本公开的第三方面,公开用于管理作为多播组成员的端点的***和方法。根据实施例,用于管理作为多播组成员的端点的方法包含端主机与包转发***之间的由包转发***检测/识别出的交互。例如,包转发***可将端主机检测为在包转发***上的特定接入点处连接到包转发***。响应于识别出交互,包转发***将接入信息传送到控制器计算机。接入信息可包含唯一地标识连接到包转发***的端主机的端点标识符信息(例如,MAC地址、IP地址)及标识连接到端点的包转发***上的接入点的其它信息。控制器服务器接收并处理接入信息,以识别先前与端点标识符信息相关联的多播成员是否已从网络上的一个接入点移动到网络上的另一接入点。响应于这一识别,根据实施例,控制器计算机可处理端主机的“离开”(例如,旧网络接入点)和“加入”(例如,旧网络接入点),以反映端主机正在使用的新接入点。
根据本公开的第四方面,描述用于优化集中式多播拓扑信息的管理的***和方法。用于优化集中式多播拓扑信息的管理的***和方法主要通过将集中式多播拓扑信息的管理集中定位在控制器服务器中来实现。例如,集中式多播拓扑信息可描述由包转发***(例如,交换机、路由器等)和支持一个或多个多播组的通信链路组成的网络拓扑结构。多播组可包含通过单个子网络或通过两个或更多个子网络接入网络的成员。根据实施例,用于优化集中式多播拓扑信息的管理的方法包含控制器服务器将探测消息传送到网络中的包转发***。例如,控制器服务器可通过网络发送链路层发现协议(LLDP)探测包以发现网络的拓扑。响应于接收到探测消息,包转发***可识别拓扑状态信息,并将拓扑状态信息传送到控制器服务器。拓扑状态信息可例如描述网络的拓扑和通信链路的状态。拓扑状态信息可从接收到探测消息的包转发***的视角描述网络的拓扑和通信链路的状态。例如,拓扑状态信息可指示:1)添加到网络中的包转发***(例如,“节点D”),2)包含具有故障状态(例如,不作用)的“端口3”上的通信链路的包转发***,以及3)先前在网络中已注册的将包转发***(例如,“节点D”)连接到相邻包转发***(例如,“节点C”)的“端口4”上的通信链路。除了从其它包转发***接收其它拓扑状态信息之外,控制器服务器还可从包转发***接收上文所描述的拓扑状态信息。控制器服务器基于拓扑状态信息而更新集中式多播拓扑信息。控制器服务器进一步基于更新后的集中式多播拓扑信息而生成一个或多个多播树。例如,控制器服务器可通过识别包含可操作(例如,无故障)通信链路的网络中的一个或多个无环路最短路径并连接子网络中的所有包转发***来生成一个或多个多播树。另外,例如,控制器服务器可生成跨越两个或更多个子网络(例如,LAN A、LAN B等)的多播树。控制器服务器通过向包转发***传送一个或多个网络配置消息以分别启用网络中的每一包转发***处的一个或多个多播树的部分来配置多播树。
应了解,控制器服务器可包含共同实现集中控制的一个或多个控制器服务器。例如,第一控制器服务器作为在活动模式下操作的第二控制器服务器的冗余备份,可以在待用模式下操作。另外例如,第一控制器服务器可与第二控制器服务器并行处理以共同实现集中控制等等。
图1A是根据实施例的说明旧式***100的框图。旧式***100参看现有技术,并且可以用于管理多播业务。可以根据多播组来区分多播业务。例如,“多播组1”的多播业务可与“多播组2”的多播业务等等区分。多播组包含多播成员,每一成员可用作发送方和接收方。发送方可发送由多播组中的每一个其它成员“同时”接收的消息。例如,因特网协议TV服务可以是包含多播组中发送随后由多播组中的每一个其它成员“同时”接收的单个内容流的发送方的多播服务。另外例如,股票报价机服务可以是包含多播组中发送随后由多播组中的每一个其它成员同时接收的股票报价的发送方的多播服务。多播并不利用点对点通信。相反地,多播优化了通信资源。例如,考虑到多播组中发送由网络中的后续节点(例如,交换机、路由器等)接收的消息的源或发送方(例如,成员),在网络中消息在必要时进行复制和转发以到达多播组中的每一个其它成员。因此,在必要时,网络中的节点可在端口上接收包,并复制所述包以转发到节点上的另一端口或所要数量的端口,以到达节点已知通过相应端口向下可以到达的多播组中的成员。
旧式***100包含呈三个交换机形式的三个旧式包转发***101,所述三个交换机包含交换机102、104和106。本文件中的术语“交换机”可用于描述如开放***互连(OSI)模型中所描述的提供层2服务的旧式包转发***101。每一旧式包转发***101包含可连接到通信链路107以形成拓扑的端口。例如,旧式***100包含通信链路107,通信链路107包含将交换机102连接到交换机104的第一通信链路108、将交换机104连接到交换机106的第二通信链路110;以及将交换机106连接到交换机102以形成拓扑的第三通信链路112。
每一旧式包转发***101还包含用于将端主机109(例如,EH1、EH2、EH3、EH4等)连接到旧式包转发***101的端口。例如,旧式包转发***101可包含连接到端主机109的端口,所述端主机109实施为笔记本电脑、个人计算机、台式计算机、移动电话等等。
旧式***100说明由包含交换机102、104和106的旧式包转发***101组成的单个LAN(或子网),且通过所说明的通信链路107与出售线连接以形成“LAN A”的环形拓扑。端主机109可通过“LAN A”或通过利用逻辑地应用于“LAN A”的多播服务而与彼此通信(例如,EH1、EH2、EH3、EH4等)。
“LAN A”有助于控制平面和数据平面上的通信。控制平面可用于促进在数据平面上提供LAN服务。例如,LAN的控制平面可以包括彼此通信以生成上述拓扑的旧式包转发***101(例如,交换机102、104、106)。所述拓扑描述包括LAN的旧式包转发***101(例如,交换机102、104、106),并且另外包含支持通信链路107的每一个旧式包转发***101的特定端口,所述通信链路107连接每一旧式包转发***101与其它旧式包转发***101。旧式包转发***101(例如,交换机102、104、106)可进一步在控制平面(例如,程序流表)上彼此通信以构建数据平面(例如,程序流表),以促进“LAN A”上的通信并促进多播服务上的通信,如下所述。在一些情况下,数据平面上的端主机109可与控制平面上的旧式包转发***101(例如,交换机、路由器等)通信,且控制平面上的旧式包转发***101(例如,交换机、路由器等)可与数据平面上的端主机109通信。
LAN通信是利用包(固定长度)或帧(可变长度)进行的,它们均(此后均称为“包”)包含标识包的来源和目的地等等的标头。在旧式包转发***101处,LAN通信可以由以下组成:接收一个端口上的包并丢弃所述包,或可替代地,复制并从旧式包转发***101的其它端口中的一个或多个中转发出所述包。旧式包转发***101包含可编程流表或用于复制和转发包的另一包转发决策引擎。响应于旧式包转发***101接收到包并匹配包标头中的目的地与进一步指定待执行动作的可编程流表条目,执行复制和转发出端口,例如所描述的转发出特定端口。旧式***100的多播服务通过LAN由交换机102、104和106实施。如现有技术中所见,多播服务不是在旧式***100中集中控制,而是分布在每一个旧式包转发***101处的旧式***100上。
多播服务实现对一特定LAN上的一个或多个多播组和跨越多个LAN的一个或多个多播组的服务。每一多播组与生成树、多播树和多播组成员相关联。例如,旧式***100包含用表示一组通信链路107的低频虚线说明的旧式***100中的生成树,且包含将交换机102连接到交换机104的第一通信链路108及将交换机104连接到交换机106的第二通信链路110。生成树是连接网络的节点(例如,路由器、旧式包转发***101等)的无环路单活动路径。旧式***100中的生成树供交换机102、104和106用于为特定多播组(例如,多播组1)多播控制信息。例如,交换机102可通过由虚线标识的生成树将控制消息多播到交换机104和交换机106,如先前描述。可以响应于旧式***100的拓扑的改变(例如,节点添加、节点删除、通信链路状态改变(例如,故障、OK)等)而生成和重新生成生成树。不管多播组成员身份如何,不管多播组成员如何,都可以生成和重新生成生成树。
用表示一组通信链路107的高频圆点说明旧式***100中的多播树,所述一组通信链路107包含将交换机102连接到交换机104的第一通信链路108及将交换机104连接到交换机106的第二通信链路110。多播树供端主机109用于为特定多播组传送多播业务。例如,EH3可通过多播树将消息(例如,股票报价)多播到EH2、EH1和EH4。可以响应于多播组的多播成员身份的改变和网络拓扑改变而生成和重新生成多播组的多播。例如,如果附接到交换机106上的端主机109(例如,EH2和EH3)都要“离开”多播组,那么多播树的第二通信链路110将从多播树中移除或清除,使得第一通信链路108成为多播组1的多播树的唯一通信链路107。
图1B是根据实施例的说明旧式包转发***101(例如,交换机)的框图。旧式包转发***101包含控制单元113,所述控制单元113包含控制模块114和配置信息116(例如,永久性存储装置)。控制模块114可包含用于实施多播服务的一套模块。例如,控制模块114可包含生成树协议(STP)模块、因特网组管理协议(IGMP)模块和协议无关多播(PIM)模块。此外,配置信息116可存储拓扑信息118,拓扑信息118从旧式包转发***101的视角描述LAN的拓扑,并从旧式包转发***101的视角描述多播组成员身份信息120。
配置信息
存储在任一特定旧式包转发***101(例如,交换机)处的多播组成员身份信息120可根据组和端口指示对多播业务的兴趣。例如,旧式包转发***101的多播组成员身份信息120可以组织如下:
Figure GDA0003026578860000121
上方多播组成员身份信息120的表格是针对特定的旧式包转发***101。例如,多播组成员身份信息120指示对“多播组1”和“多播组2”的“端口1”的兴趣,而不是“多播组3”。此外,端口“1”一行中的特定一列并不指示所指示的兴趣是表达自通信链路107还是表达自端主机109。另外注意,在“端口1”支持通信链路107的情况下,所指示的兴趣并不指示兴趣的位置(例如,在当前的旧式包转发***101中还是在旧式包转发***101以外),而是仅指示兴趣可通过“端口1”到达。
生成树控制协议
生成树协议(STP)模块在旧式***100中的每一个旧式包转发***101处执行以生成生成树。在本文中,生成树是LAN内用于传送包含多播控制信息的控制信息的无环路树。STP模块基于存储在拓扑信息118中的网络的拓扑而生成生成树。因此,响应于旧式***100中的拓扑改变,可以在旧式***100中的每一个旧式包转发***101处调用STP模块以生成新的生成树。例如,拓扑改变可包含将旧式包转发***101添加到拓扑信息118或从拓扑信息118中移除旧式包转发***101。应注意,多个生成树可满足任一特定网络的环路标准,且STP模块在旧式***100中的每一个旧式包转发***101上独立执行。因此,每一STP模块在旧式包转发***101和各自满足无环路标准的多个生成树处执行的独立性可能会延长处理时间。例如,在不同的旧式包转发***101处,STP模块可在针对特定多播组达成特定多播树上的汇聚(协定)之前处理达延长的时间段。另外,在相对较短的时间段内拓扑信息118的多次改变可使得在针对特定多播组达成特定多播树上的汇聚(协定)之前处理达延长的时间段,由于拓扑信息118变化不止。
返回到图1A,例如,旧式***100的组“1”的生成树包含由“1”标识的第一通信链路108和由“2”标识的第二通信链路110。例如,构建多播组“1”的生成树在交换机102处可包含响应于“LANA”的拓扑(例如,拓扑信息118)的改变而执行的STP模块。另外例如,在交换机102处,STP模块可执行以将连接到第一通信链路108的端口注册为“多播组1”的生成树的部分,并且在交换机102上对流表进行编程以将针对“多播组1”识别的多播控制包从第一通信链路108中发送出去,第一通信链路108是“多播组1”的生成树的第一链路。
IGMP
返回到图1B,因特网组管理协议(IGMP)模块可在每一旧式包转发***101处执行。如现有技术中众所周知的,IGMP模块可在LAN中执行以检测端主机109(例如,成员)是否被添加到多播组中(例如,“加入”)或检测端主机109(例如,成员)是否从多播组中移除(例如,“离开”)。IGMP模块将多播成员状态存储为多播组成员身份信息120,如先前描述。IGMP模块可定期在每一旧式包转发***101处执行以轮询旧式包转发***101的端口,查询对多播组的兴趣。此外,IGMP模块可以由用户配置命令调用,所述用户配置命令由其驻存的旧式包转发***101接收。
根据一些实施例,IGMP模块可在指定的IGMP监听交换机处执行。IGMP监听交换机可通过LAN扩散多播控制查询并使其扩散到连接到LAN的端主机109。扩散是基于对网络的部分了解,而不是对网络的完整了解。例如,旧式包转发***101可在一个端口上接收多播控制查询,并通过在除了它到达的端口以外的每个传出端口上将多播控制查询扩散出去来作出响应。
旧式包转发***101(例如,交换机)可在特定端口上接收多播控制查询,并通过在接收到所述多播控制查询的端口上生成“报告信息”并将其转发回去来作出响应。旧式包转发***101(例如,交换机)可基于存储在旧式包转发***101处的多播组成员身份信息120而生成“报告信息”。例如,特定旧式包转发***101的多播组成员身份信息120可指示对与旧式包转发***101所支持的端口相关联的一个或多个多播组的兴趣。
旧式包转发***101(例如,交换机)可在特定端口上接收“报告信息”,并通过更新存储在旧式包转发***101处的多播组成员身份信息120来作出响应。旧式包转发***101(例如,交换机)可基于接收到的报告信息而更新多播组成员身份信息120。此外,旧式包转发***101可基于更新后的多播组成员身份信息120而生成报告信息,并且在LAN上扩散更新后的报告信息。
PIM
如现有技术中众所周知的,协议无关模块(PIM)可在每一个旧式包转发***101处执行,以便识别和促进跨越两个子网络(例如,LAN)的特定多播组的多播业务的路由。例如,“VLAN 1”上的路由器可与PIM通信,且PIM可与“VLAN 1”之外的其它路由器通信,以产生跨越子网络的多播树和生成树。另外例如,“VLAN 1”上的路由器可与PIM通信,且PIM可与“VLAN 2”、“VLAN 3”等等上的其它交换机/路由器通信,以产生跨越多个子网络的多播树和生成树。
图1C是根据实施例的说明旧式***150的框图。旧式***150对应于图1A中的旧式***100;因此,除非另有指示,否则已使用相同或类似的参考标记来指示相同或类似的特征。旧式***150参看现有技术,并且可以用于管理跨越包含子网A(例如,LAN A)和子网B(例如,LAN B)的两个子网络的多播业务。旧式***150包含“子网B”(例如,LAN B)中的路由器152(例如,旧式包转发***101)和“子网A'(例如,LAN A)中的路由器102(例如,旧式包转发***101)。本文件中的术语“路由器”可用于描述如开放***互连(OSI)模型中所描述的提供层2和/或层3服务的旧式包转发***101。路由器152连接到端主机109(EH5),端主机109是包含(EH1、EH2、EH3、EH4和EH5)的“多播组1”的成员。另外,EH5包含在“子网A”中,且EH1、EH2、EH3和EH4包含在“子网B”中。最后,子网A(例如,LAN A)中的路由器102通过包含通信链路154的通信链路107与子网B(例如,LAN B)中的路由器152连接。仅举例来说,PIM可在路由器152或102或交换机104或106处执行,以便生成和配置多播树和生成树,从而促进子网B(例如,LAN B)中的多播组成员EH5和包含在子网-A(例如,LAN A)中的多播组成员EH1、EH2、EH3和EH4之间的多播业务的通信。应了解,PIM以分布式方式在旧式***150中的每一个对等旧式包转发***101处执行,以便为跨越包含“子网A”(例如,LAN A)和“子网B”(例如,LAN A)的两个子网络的多播组提供多播服务。
图2A是根据实施例的说明用于集中管理多播业务的***200的框图。***200对应于图1A中的旧式***100和图1C中的旧式***150;因此,除非另有指示,否则已使用相同或类似的参考标号指示相同或类似的特征。***200包含在旧式***100或150中找不到的新的组件。另外,***200不包括在旧式***100和150中能找到的组件,如可在下文进一步描述的。
***200包含计算设备212,计算设备212包含一个或多个控制器服务器,例如控制器服务器218。控制器服务器218以通信方式联接到数据库213,数据库213永久性地存储表格、数据、关系数据库等等。控制器服务器218通过网络路径266以通信方式联接到控制单元113(在图2B中示出),所述控制单元113包含在每一个包转发***103(在图2B中示出)中。控制器服务器218以通信方式联接到包转发***103,以实施网络配置并执行其它类型的集中控制,包含多播业务的集中控制。例如,结合图1A、图1B和图1C描述的多播服务不再由旧式包转发***101以分布式方式管理,而是由控制器服务器218集中管理。也就是说,控制器服务器218通过在网络路径266上与每一个包转发***103中的控制单元113(在图2B中示出)通信来集中管理由***200提供的多播服务。例如,网络路径可包含支持包转发***103(例如,交换机、路由器等)和外部设备(例如,图1A的通信链路107)之间的网络连接的路径,或者可以是基于机架的***中的骨干路径。另外,将观察到,***200并没有被说明为如现有技术中所见的那样包含生成树,原因在于集中式多播并不利用生成树服务来实施集中式多播。在本文件中,术语“交换机”可另外用于描述如开放***互连(OSI)模型中所描述的提供层2服务的包转发***103。在本文件中,术语“路由器”可另外用于描述如开放***互连(OSI)模型中所描述的提供层2和/或层3服务的包转发***103。
图2B是根据实施例的说明包转发***103的框图。图2B中所说明的包转发***103用于集中管理多播业务。图2B的包转发***103说明控制单元113中不存在STP模块、不存在PIM模块且不存在IGMP模块。根据如下所述的实施例,由STP模块、PIM模块和IGMP模块以分布式方式执行的功能现在可由控制器服务器218集中控制。另外应了解,处理是不同的,因为STP模块、PIM模块和IGMP模块的功能性不仅仅是迁移到控制器服务器218,而是在特定实例中,这些功能性被显著改变以适应集中式架构。为此目的,包转发***103包含多播支持模块240(MCSM)和多播通信模块241(MCCM)。
多播支持模块和多播通信模块
多播支持模块240和多播通信模块241可在***200中的每一包转发***103处执行,以检测端主机109(例如,成员)是否被添加到多播组中(例如,“加入”)或检测端主机109(例如,成员)是否从多播组中移除(例如,“离开”)。多播通信模块241可定期在包转发***103处执行,以轮询包转发***103上被识别为连接到端主机109(例如,EH1、EH2等)的端口。多播通信模块241通过将针对多播组成员身份信息的查询从端口传送到端主机109来轮询连接到端主机109的端口。多播通信模块241并不轮询被识别为连接到包转发***103或不是端主机109的其它网络实体的端口。因此,多播通信模块241通过不轮询连接到包转发***103的端口而以资源高效的方式执行,以便减小CPU使用率。另外,多播通信模块241通过不轮询连接到通信链路107的端口而以资源高效的方式执行,以便减小通信链路107上的带宽的利用,所述通信链路107连接到包转发***103,如先前所提及。端主机109可通过生成呈多播轮询成员信息形式的多播组成员信息(例如,报告)并通过从其接收到查询的端口将所述多播组成员信息传送回去来对针对多播成员状态的查询作出响应。多播组成员信息指示端主机109对一个或多个多播组的兴趣。多播通信模块241从端主机109接收报告信息。多播支持模块240识别端口上的多播兴趣是否已改变。多播通信模块241响应于多播支持模块240识别出端口上的多播兴趣已改变而更新本地化多播组成员身份信息242。最后,多播通信模块241响应于多播支持模块240识别出端口上的多播兴趣已改变而通过网络路径266将报告信息传送到控制器服务器218。
本地化多播组成员身份信息
本地化多播组成员身份信息242是根据组和连接到端主机109的每一端口而在任一特定包转发***103(例如,路由器)处存储对多播业务的兴趣的数据结构。例如,包转发***103的本地化多播组成员身份信息242可以组织如下:
Figure GDA0003026578860000181
上方本地化多播组成员身份信息242的表格是针对特定的包转发***103。例如,本地化多播组成员身份信息242指示对“多播组1”和“多播组2”的“端口1”的兴趣,而不是“多播组3”。本地化多播组成员身份信息242并不存储连接到包转发***103的端口的兴趣信息,因为集中管理的多播服务不再需要此信息。本地化多播组成员身份信息242可以永久性地存储在数据库中。
多播支持模块240可利用本地化多播组成员身份信息242来识别是否将多播组成员信息传送到控制器服务器218。多播支持模块240可比较一行本地化多播组成员身份信息242与对应端口的轮询信息,以识别轮询信息是构成新“加入”、新“离开”,还是仅仅报告现状。
图2C是根据实施例的说明控制器服务器218的框图。控制器服务器218可包含控制器模块250、控制器配置信息252和集中式多播拓扑信息254。控制器配置信息252和集中式多播拓扑信息254可以存储在数据库213(在图2A中示出)中。控制器模块250可包含拓扑模块256(TM)和多播管理模块258(MCMM)。控制器配置信息252可包含集中式多播组成员身份信息260。
多播管理模块258可从包转发***103接收多播组成员信息,将多播组成员信息和其它信息存储为集中式多播组成员身份信息260,并调用拓扑模块256用于可能的一个或多个多播树的配置/重新配置。因此,集中式多播组成员身份信息260可以用作多播组的多播组成员身份的永久性存储装置。如下所述,响应于接收到多播组成员信息,可以在控制器服务器218处存储集中式多播组成员身份信息260。
多播树
拓扑模块256可基于在集中式多播拓扑信息254中注册的网络的功能拓扑和在集中式多播组成员身份信息260中注册的多播组成员身份而执行一个或多个算法(例如,最短路径树),以便识别和配置多播组的多播树。拓扑模块256可针对每一个多播组重复上文描述的多播树生成。根据实施例,自身在控制器服务器218处执行的拓扑模块256代替PIM,以生成跨越一个或多个子网络的多播组的多播树。
集中式多播拓扑信息
拓扑模块256可执行以利用链路层发现协议(例如,LLDP)发现网络中的包转发***103(例如,路由器),所述网络例如在图2A中的***200中所说明的网络。另外,拓扑模块256可执行以利用链路层发现协议(例如,LLDP)发现网络中的通信链路107(例如,路由器)和连接到通信链路107的包转发***103上的特定端口。例如,包转发***103可以通过生成和传送描述网络中的包转发***103、网络中的通信链路107和网络中的每一个通信链路107的状态(例如,OK、FAIL)的拓扑状态信息来对探测(例如,LDDP)作出响应。拓扑状态信息可另外描述不可到达的包转发***103的存在和/或不作用的通信链路107的存在。因此,拓扑模块256可执行以生成描述网络的功能拓扑的集中式多播拓扑信息254。例如,拓扑模块256接收描述网络中的功能元件(例如,功能包转发***103、通信链路107等)的拓扑状态信息,并且根据网络中的功能元件的识别,识别网络的功能拓扑。
图3A是根据实例实施例的说明多播组成员身份信息300的框图。多播组成员身份信息300描述网络中的一个或多个多播组的端主机109的成员身份(例如,“加入”、“离开”)。可以在控制器服务器218处通过通信链路107/网络路径266从包转发***103接收多播组成员身份信息300。多播组成员身份信息300可以实施为轮询信息302、配置信息304或接入信息306。
图3B是根据实例实施例的说明轮询信息302的框图。轮询信息302描述包转发***103处一个或多个多播组中的端主机109的成员身份(例如,“加入”)。响应于端主机109接收到针对轮询信息302的查询,通过端主机109将轮询信息302传送到包转发***103。轮询信息302包含端口信息320和一个或多个“加入”注册322,端口信息320包含标识对查询作出响应的端口的端口标识符。
图3C是根据实例实施例的说明“加入”注册322的框图。“加入”注册322描述多播成员身份(例如,“加入”)。每一“加入”注册322包含虚拟局域网(VLAN)信息324和多播组信息326。VLAN信息324可包含唯一地标识多个VLAN中的VLAN的VLAN标识符(例如,“VLAN 10”)。多播组信息326可包含唯一地标识由多个子网络组成的网络中的多个多播组中的多播组的多播组标识。
图3D是根据实例实施例的说明配置信息304的框图。配置信息304描述在包转发***103(例如,路由器)处通过配置命令输入的单个多播成员身份(例如,“加入”/“离开”)的配置。配置信息304可包含端口信息320、VLAN信息324和多播组信息326,它们全都如前所述。配置信息304还包含多播活动信息328和端点标识符信息332。多播活动信息328表示由配置信息304呈现的多播成员身份是要“加入”还是“离开”所指示的多播组。端点标识符信息332是任选的。端点标识符信息332包含将端点识别为利用多播服务的端点标识符。例如,端点标识符信息332可包含标识因特网协议地址(例如,IP地址)或媒体接入控制地址(MAC地址)的端点标识符。IP地址是指派到参与使用因特网协议通信的网络的每一装置(例如,计算机、打印机)的数字标签。MAC地址也称为物理地址,计算机的MAC地址是指派到用于在物理网络段上通信的网络接口的唯一标识符。MAC地址用作包含以太网和WiFi的大部分IEEE 802网络技术的网络地址。
图3E是根据实例实施例的说明接入信息306的框图。接入信息306包含端口信息320、VLAN信息324和端点标识符信息332,它们全都如前所述。
图4A是根据实例实施例的说明集中式多播组成员身份信息260的框图。集中式多播组成员身份信息260用于在控制器服务器218处存储多播组成员身份。集中式多播组成员身份信息260可包含一个或多个多播信息元素330,每一个多播信息元素330注册单个多播组成员身份。
图4B是根据实例实施例的说明多播信息元素330的框图。多播信息元素330在网络上注册单个多播组成员身份。多播信息元素330可包含:节点信息321,其包含例如唯一地标识网络中的包转发***103的节点标识符;VLAN信息324,其包含唯一地标识网络中的VLAN的VLAN标识符;端口信息320,其包含唯一地标识包转发***103上的端口的端口标识符;多播组信息326,其包含唯一地标识多播组的多播组标识;以及任选地,端点标识符信息332,其包含唯一地标识端点(例如,MAC地址、IP地址等)的端点标识符。
图5A是根据实例实施例的说明旧式网络500的框图。旧式网络500参看现有技术。旧式网络500利用分布式控制机制来管理多播服务,所述分布式控制机制包含用于选择多播树的分布式控制机制。旧式网络500可通过利用在每一旧式包转发***101处执行的IGMP从一组候选多播树中选择特定多播树来展现分布式控制,每一候选多播树“形式良好”(例如,每一候选多播树是实现多播组中的所有成员的多播消息传递的无环路路径)。另外,根据一个实施例,旧式网络500通过利用在每一旧式包转发***101处执行的IGMP以汇聚在所述一组候选多播树中的特定多播树上来展现分布式控制。响应于多播组成员身份(例如,“加入”或“离开”)的注册,生成多播树。因此,多播组成员身份的任何变化调用分布式控制机制在旧式网络500中的每一个旧式包转发***101和包括旧式网络500的每一个旧式子网络处生成多播树。
旧式网络500包含旧式包转发***502、504、506、508、510(例如,物理交换机)和旧式虚拟包转发***512(例如,虚拟交换机)。旧式网络500展现脊柱和叶架构,其中旧式包转发***502用作向叶节点和旧式包转发***504、506、508和510提供服务的脊柱节点。旧式包转发***504、506、508和510用作向端主机109和旧式虚拟包转发***512提供服务的叶节点,旧式虚拟包转发***512随后向端主机109提供服务。旧式虚拟包转发***512是由控制器服务器218(未示出)生成的逻辑交换机。旧式虚拟包转发***512可以包括一个或多个旧式包转发***101(例如,物理交换机),并且提供多个合法实体可以用来共享物理资源的机制(例如,旧式包转发***)(例如,物理交换机)。关于多播,当旧式包转发***101(例如,物理交换机)连接到端主机109时,旧式包转发***101(例如,物理交换机)在逻辑上连接到旧式虚拟包转发***512(例如,虚拟交换机)。
旧式网络500包含由旧式包转发***508服务的端主机518(例如,EH1)、分别由旧式虚拟包转发***512服务的端主机520(例如,EH2)和端主机522(例如,EH3),以及由旧式包转发***506服务的端主机524(例如,EH4)。旧式网络500包含起始于旧式包转发***502且包含三个分支的多播树,所述三个分支包含通过旧式包转发***504连接旧式包转发***506的第一分支、连接旧式包转发***508的第二分支,以及连接旧式包转发***510的第三分支。
分布式多播控制——“展度(stretch)”和“压力(stress)”
网络参数“展度”和“压力”可用于量化多播网络的效率。例如,网络参数“展度”和“压力”可用于比较特定多播网络的效率与最佳多播网络的效率。网络参数“展度”是在多播消息源(例如,端主机109)和多播消息目的地(例如,端主机109)之间测量的对跳跃(例如,从一个节点跳到下一节点)进行计数的跳数。因此,网络参数“展度”可用于比较两个网络中的多播树生成。网络参数“压力”是通过相同链路传送的相同包的数目。
旧式网络500针对起始于端主机518(例如,EH1)且结束于端主机524(例如,EH4)的多播消息说明具有三个跳跃的“展度”。例如,起始于端主机518(例如,EH1)的多播消息由旧式包转发***508接收,旧式包转发***508随后通过多播树将消息多播到旧式包转发***502(例如,跳跃1),旧式包转发***502随后通过多播树将消息多播到旧式包转发***504(例如,跳跃2),旧式包转发***504随后通过多播树将消息多播到旧式包转发***506(例如,跳跃3),旧式包转发***506随后将消息传送到端主机524(例如,EH4)。
旧式网络500另外针对起始于端主机518(例如,EH1)且结束于端主机520(例如,EH2)的多播消息说明具有两个跳跃的“展度”。例如,起始于端主机518(例如,EH1)的多播消息由旧式包转发***508接收,旧式包转发***508随后通过多播树将消息多播到旧式包转发***502,旧式包转发***502随后通过多播树将消息多播到旧式包转发***510,旧式包转发***510随后将消息传送到旧式虚拟包转发***512,旧式虚拟包转发***512随后将消息传送到端主机520(例如,EH2)。
图5B是根据实例实施例的说明旧式网络528的框图。旧式网络528对应于图5A中的旧式网络500,并且因此,除非另有指示,否则已使用相同或类似的参考标记来指示相同或类似的特征。
分布式多播控制——修剪
旧式网络528将端主机524(例如,EH4)说明为已离开多播组,且多播树被修剪。例如,在图5A中,旧式包转发***506可能先前已接收到指示EH4“离开”的轮询信息302。响应于接收到轮询信息302,旧式包转发***506可以已经利用生成树(例如,图5A上的低频虚线)将轮询信息302扩散到旧式网络528中的其它旧式包转发***502、504、508和510。响应于接收到轮询信息302,旧式包转发***502、504、508和510中的每一个识别、“汇聚于”并配置特定多播树。图5B的旧式网络528将旧式网络500(见图5A)中的多播树说明为修剪成两跳多播树(返回到图5B),所述两跳多播树包含旧式包转发***508(例如,叶)、旧式包转发***502(例如,脊柱)和旧式包转发***510(例如,叶)。
图5C是根据实例实施例的说明网络530的框图。网络530并不利用分布式控制机制来进行多播服务,并且在现有技术中无法找到。相反地,网络530利用集中控制机制来进行多播服务。另外将观察到,网络530不包含用于提供集中式多播服务的生成树。因此,在网络530中不再说明生成树。实际上,网络530可通过利用在控制器服务器218(未示出)处执行的控制器模块250接收多播控制信息来展现集中控制。此外,网络530并不利用分布式控制机制来配置用于传送多播业务的多播树。相反地,网络530利用用于多播业务的集中控制机制,包含用于选择和配置多播树的集中控制机制。网络530可通过利用在控制器服务器218(未示出)处执行的控制器模块250(未示出)从一组候选多播树中选择特定多播树来展现集中控制,每一候选多播树“形式良好”(例如,每一候选多播树是实现多播组中的所有成员的多播消息传递的无环路路径)。另外,网络530通过阻止汇聚来展现集中控制,因为对多播树生成的控制和对多播树的配置的控制是集中式的,而不是分布式的。可以响应于多播组成员身份的改变和/或网络拓扑的改变而生成多播树。因此,多播组成员身份或网络拓扑的任何变化可调用集中控制机制,以在控制器服务器218处生成多播树并从控制器服务器218配置多播树。
网络530包含多播树,所述多播树包含两个分支,所述两个分支包含将包转发***532(脊柱)连接到包转发***536(叶)的第一分支及将包转发***532(脊柱)连接到包转发***538(叶)的第二分支,包转发***538反过来又连接到包转发***540(叶)。
集中式多播控制——“展度(stretch)”和“压力(stress)”
网络530针对起始于端主机548(例如,EH1)且结束于端主机554(例如,EH4)的多播消息说明具有两个跳跃的“展度”。例如,起始于端主机548(例如,EH1)的多播消息由包转发***538接收,包转发***538随后通过多播树将消息多播到包转发***532,包转发***532随后通过多播树将消息多播到包转发***536,包转发***536随后将消息传送到端主机554(例如,EH4)。
网络530另外针对起始于端主机548(例如,EH1)且结束于端主机550(例如,EH2)的多播消息说明具有一个跳跃的展度。例如,起始于端主机548(例如,EH1)的多播消息由包转发***538接收,包转发***538随后通过多播树将消息多播到包转发***540,包转发***540随后将消息传送到虚拟包转发***542,虚拟包转发***542随后将消息传送到端主机550(例如,EH2)。
图5D是根据实例实施例的说明网络560的框图。网络560对应于图5C中的网络530,并且因此,除非另有指示,否则已使用相同或类似的参考标记来指示相同或类似的特征。
集中式多播控制——修剪
网络560将端主机554(例如,EH4)说明为已离开多播组,且多播树被修剪。例如,在图5C中,开始于网络530,假设包转发***536接收指示EH4“离开”的轮询信息302。响应于接收到轮询信息302,包转发***536将轮询信息302传送到控制器服务器218(未示出)。响应于接收到轮询信息302,控制器服务器218(未示出)标识并配置多播树。返回到图5D,网络560将多播树说明为一跳多播树,所述一跳多播树包含包转发***538(例如,叶)和包转发***540(例如,叶),且现在不包括包转发***532(例如,脊柱)。
图5E是根据实例实施例的说明网络570的框图。网络570对应于图5C中的网络530,并且因此,除非另有指示,否则已使用相同或类似的参考标记来指示相同或类似的特征。
集中式多播控制——端点移动
网络570将端主机554(例如,EH4)说明为已从包转发***536(见图5C)移动到包转发***534,且多播树被重新配置。例如,返回到图5E,假设包转发***534接收包含端点标识符信息的接入信息306,所述端点标识符信息指示端主机554(例如,EH4)正在从包转发***534上的端口接入***530。响应于接收到接入信息306,包转发***534随后将接入信息306传送到控制器服务器218(未示出),控制器服务器218随后利用接入信息306将端主机554(例如,EH4)识别为已从包转发***536移动到包转发***534。根据一个实施例,响应于识别所述“移动”,控制器服务器218(未示出)可处理包转发***536上端主机554(例如,EH4)的“离开”和包转发***536上端主机554(例如,EH4)的“加入”,使得控制器服务器218重新生成和重新配置多播树,如网络570中所说明。
图6A是根据实例实施例的说明用于优化多播树的管理的方法600的框图。左侧说明的是由一个或多个端主机109执行的操作;中间说明的是由一个或多个包转发***103执行的操作;以及右侧说明的是由控制器服务器218执行的操作。方法600开始于操作602,其中端主机109将多播组成员身份信息300传送到包转发***103。例如,操作602之前可为端主机109从包转发***103接收针对多播组成员身份的查询。端主机109通过将呈轮询信息302形式的多播组成员身份信息300传送到包转发***103来对查询作出响应。
在操作604,在包转发***103处,多播通信模块241接收与特定端口相关联的轮询信息302。此外,多播支持模块240识别所述端口的多播兴趣(例如,“加入”和/或“离开”)的改变,并基于轮询信息302而更新本地化多播组成员身份信息242(例如,图7更详细地描述操作602、604和606)。例如,轮询信息302可指示先前未发现的对多播组的兴趣(例如,“加入”)或先前未发现的对多播组的无兴趣(例如,“离开”)。
在操作606,多播通信模块241将轮询信息302传送到控制器服务器218。例如,多播通信模块241可将轮询信息302和标识包转发***103的节点信息321传送到控制器服务器218。
在操作608,在控制器服务器218处,多播管理模块258可接收多播组成员身份信息300,并基于多播组成员身份信息300而更新集中式多播组成员身份信息260。多播组成员身份信息300可以包括轮询信息302、配置信息304或接入信息306。多播组成员身份信息300可以包括从操作606或从页间连接符“7A”进入操作608的轮询信息302。多播组成员身份信息300可以包括从页间连接符“8A”进入操作608的配置信息304。多播组成员身份信息300可以包括从页间连接符“9A”进入操作608的接入信息306。
继续操作608,多播通信模块241基于多播组成员身份信息300而更新集中式多播组成员身份信息260。例如,多播管理模块258可基于多播组成员身份信息300的类型而添加(例如,“加入”)或从集中式多播组成员身份信息260中清除(例如,“离开”)一个或多个多播信息元素330。
轮询信息
例如,如果多播组成员身份信息300包括轮询信息302,那么根据轮询信息302和其它信息,一个或多个多播信息元素330可以被清除和/或添加到集中式多播组成员身份信息260中,如图7上的操作714中所描述。返回到图6B,记住未引起状态改变的轮询信息302在包转发***103处进行过滤。
配置信息
例如,如果多播组成员身份信息300包括配置信息304,那么响应于配置信息304中的多播活动信息328,多播信息元素330可以被添加到集中式多播组成员身份信息260中/从集中式多播组成员身份信息260中清除。记住,配置信息304可包含端点标识符信息332。
接入信息
例如,如果多播组成员身份信息300包括接入信息306,那么根据接入信息306,多播信息元素330可以逻辑上从集中式多播组成员身份信息260中清除(例如,“离开”),且逻辑上添加到(例如,“加入”)集中式多播组成员身份信息260中。例如,多播管理模块258可处理在接入信息306中识别的端点的“离开”和“加入”操作,以将端点注册为已从网络上的一个接入点移动到网络上的另一接入点。根据一个实施例,多播管理模块258可根据图6B中所描述的方法650处理接入信息306,图6B用页间连接符“6A”指示。
返回到图6A,在操作610,在控制器服务器218处,拓扑模块256基于集中式多播组成员身份信息260和集中式多播拓扑信息254而生成(或重新生成)多播树。操作610可以从操作608或从页间连接符“10A”进入。如图10所说明,响应于接收到拓扑状态信息,从页间连接符“10A”进入。
返回到图6A,拓扑模块256可基于由多播组成员身份信息300更新的集中式多播组成员身份信息260而生成一个或多个多播树。拓扑模块256可响应于添加/清除集中式多播组成员身份信息260中的一个或多个多播组的多播信息元素330而生成一个或多个多播树。例如,拓扑模块256可响应于识别出包转发***103处多播组的“加入”而生成多播树,以在所识别的包转发***103处接收特定多播组的多播业务。另外例如,拓扑模块256可响应于识别出包转发***103处多播组的“离开”而生成不再在所识别的包转发***103处接收特定多播组的多播业务的多播树。另外,应了解,不再需要用于跨不同VLAN路由多播业务的PIM服务,因为方法600实现了跨子网络的多播服务,并且为此目的,操作610为跨越两个或更多个子网络的多播组生成单个多播树。
拓扑模块256可另外基于通过接受到拓扑状态信息更新的集中式多播拓扑信息254而生成一个或多个多播树(例如,通过页间连接符“10A”进入操作610)。例如,拓扑模块256可通过识别由集中式多播拓扑信息254描述的网络中的无环路最短路径而生成多播树。因此,集中式多播拓扑信息254可包含没有故障的通信链路107的状态和连接网络中的所有包转发***103的通信链路107的状态,从而足以为基于集中式多播组成员身份信息260而识别的多播组中的多播成员提供多播服务。另外,拓扑模块256可基于集中式多播拓扑信息254和集中式多播组成员身份信息260而生成跨越两个或更多个子网络(例如,LAN A、LAN B等)的多播树。
在操作612,多播管理模块258将一个或多个网络配置消息传送到包转发***103,以启用包转发***103处的一个或多个多播树的相应部分。例如,多播管理模块258可传送一个或多个网络配置消息以在包转发***103处配置包处理电路***,从而分别启用包转发***103处的多播树的一部分。多播管理模块258基于集中式多播组成员身份信息260和集中式多播拓扑信息254而传送一个或多个网络配置消息,所述集中式多播组成员身份信息260指示对特定多播组的兴趣。另外,多播管理模块258可启用跨越VLAN边界的多播组的多播树。例如,拓扑模块256可启用由不同子网络(例如,VLAN)服务的多播组的多播树的部分。因此,应了解,不再需要用于跨不同VLAN路由多播业务的PIM服务,因为方法600实现了跨子网络的多播服务,并且为此目的,操作612实现了跨越两个或更多个子网络的多播组的单个多播树。
在操作614,多播通信模块241从控制器服务器218接收网络配置消息,且在操作616,多播支持模块240根据所述配置消息在包转发***103处配置包处理电路***。例如,配置消息可启用特定包转发***103处的多播组的多播树的一部分。
图6B是根据实例实施例的说明用于基于接入信息更新多播信息元素的方法650的框图。方法650可以从图6A中的操作608进入。在操作652,多播管理模块258可基于接入信息306中的端点标识符信息332而识别集中式多播组成员身份信息260中的多播信息元素330。例如,多播管理模块258可通过匹配接入信息306中的端点标识符信息332与集中式多播组成员身份信息260中的端点标识符信息332来识别多播信息元素330。在操作654,多播管理模块258可更新识别出的多播信息元素330中的节点信息321。例如,多播管理模块258可基于标识包转发***103的节点标识符更新节点信息321,包转发***103识别与端主机109之间的交互,并将组成员身份信息传送到控制器服务器218,如图9中所描述。返回到图6B,在操作656,多播管理模块258可更新识别出的多播信息元素330中的端口信息320。例如,多播管理模块258可基于被传送到控制器服务器218的接入信息306中的端口信息而更新端口信息320,如图9中所描述。
图7是根据实例实施例的说明用于处理轮询信息的方法700的框图。方法700在更广泛的上下文中更详细地描述先前在图6A中说明的操作602、604和606。返回到图7,左侧说明的是由一个或多个端主机109执行的操作;中间说明的是由一个或多个包转发***103执行的操作;以及右侧说明的是由控制器服务器218执行的操作。方法700开始于判定操作702,其中多播通信模块241在包转发***103处识别端主机109是否连接到端口。例如,多播通信模块241可将包转发***103上的“端口1”识别为连接到端主机109,而不是连接到包转发***103(或除端主机109以外的某一装置)。多播通信模块241可识别是否通过特定端口以不同方式连接端主机109。根据一个实施例,多播通信模块241可识别包转发***103上的端口是否用于通过将请求标识所连接装置的类型(例如,端主机109或包转发***103等)的状态的查询从端口传送到包转发***103来与端主机109通信。在另一实施例中,多播通信模块241可从存储在包转发***103处的存储器中的表格读取状态。在另一实施例中,多播通信模块241可以向控制器服务器218查询状态。如果多播通信模块将状态识别为表示连接到端主机109的端口,那么多播通信模块241分叉到操作703。否则,多播不分叉到操作703。根据实施例,多播通信模块241针对包转发***103上的所有端口重复判定操作702。根据实施例,响应于识别出所有端口都已在判定操作702处理过,多播通信模块241设置超时(例如,500毫秒)并分叉到判定操作716。
在操作703,多播通信模块241针对轮询信息302轮询端主机109。例如,多播通信模块241可通过所识别的端口传送请求轮询信息302的查询。
在操作704,端主机109接收针对多播兴趣/成员信息的查询,并且在操作706,通过将呈轮询信息302形式的多播组成员身份信息300传送回到包转发***103来对查询作出响应。
在操作708,在包转发***103处,多播通信模块241接收轮询信息302。在判定操作710,多播支持模块240识别轮询信息302是否指示端口(例如,“端口1”)的多播兴趣/成员身份(例如,“加入”和/或“离开”)的改变。例如,多播支持模块240(MCSM)可比较从端主机109接收的轮询信息302与针对端口存储在包转发***103处的本地化多播组成员身份信息242,并且响应于多播支持模块240识别出轮询信息302指示状态改变(例如,关于多播组中的成员的多播兴趣的状态改变)(例如,“加入”或“离开”),多播支持模块240分叉到操作712。否则,判定操作716进行分叉。
在操作712,多播通信模块241(MCCM)更新本地化多播组成员身份信息242。例如,多播通信模块241可基于指示所发现的对多播组的兴趣(例如,“加入”)或所发现的对多播组的无兴趣(例如,“离开”)的轮询信息302而更新本地化多播组成员身份信息242。
在操作714,多播通信模块241将轮询信息302和其它信息传送到控制器服务器218,以在图6A的连接符“7A”处,在控制器服务器处注册一个或多个“加入”或“离开”操作。例如,多播通信模块241可传送节点信息321和端口信息320以及一个或多个加入注册322,以注册将对应的多播信息元素330添加到集中式多播组成员身份信息260的一个或“加入”操作。另外例如,多播通信模块241可传送节点信息321和端口信息320以及一个或多个加入注册322和“离开”指示符,以注册从集中式多播组成员身份信息260中清除对应的多播信息元素330的一个或多个“离开”操作。
在判定操作716,响应于超时到期,在包转发***103处,多播通信模块241分叉为执行操作702。例如,响应于五百毫秒的超时到期,多播通信模块241在操作702开始处理。否则,多播通信模块241在判定操作716处等待。
图8是根据实例实施例的说明用于处理配置命令的方法800的框图。左侧说明的是由一个或多个端主机109执行的操作;中间说明的是由一个或多个包转发***103执行的操作;以及右侧说明的是由控制器服务器218执行的操作。
方法800开始于操作802,其中多播通信模块241在包转发***103处接收用户命令信息。例如,用户命令信息可包含标识端口编号的端口信息320、标识VLAN的VLAN信息324、标识多播组的多播组信息326以及标识“加入”或“离开”的多播活动信息328。因此,用户命令信息唯一地标识网络上的接入点以及加入特定多播组的兴趣或离开特定多播组的兴趣。在一些实施例中,命令信息还可包含区分其它端主机109而唯一地标识端主机109的端点标识符信息332。例如,端点标识符信息332可包含媒体接入控制(MAC)地址或因特网协议地址。因此,用户命令信息可包含唯一地标识端主机109的端点标识符信息332以及标识网络上的接入点的信息。
在操作804,多播通信模块241将呈配置信息304形式的多播组成员身份信息300传送到控制器服务器218。
在连接符“8A”处,控制器服务器218接收配置信息304,且处理在图6A上在操作608处继续,如先前描述。根据另一实施例,用户命令信息可以由控制器服务器218直接接收。
图9是根据实例实施例的说明用于管理作为多播组成员的端点的方法900的框图。左侧说明的是由一个或多个端主机109执行的操作;中间说明的是由一个或多个包转发***103执行的操作;以及右侧说明的是由控制器服务器218执行的操作。
方法900开始于操作902,其中端主机109与包转发***103交互。例如,端主机109可连接到包转发***103。另外例如,端主机109可以重新启动,使得端主机重新连接到包转发***103。另外例如,端主机109可以是进入或离开由包转发***103上的端口服务的局域网的无线装置。
在操作904,在包转发***103处,多播通信模块241通过识别端点以及网络上的接入点来检测与包转发***103之间的交互。例如,多播通信模块241可识别标识端主机109的端点标识符(例如,MAC地址)以及标识网络上的接入点的接口标识符(例如,端口编号、VLAN编号)。
在操作906,多播通信模块241将呈接入信息306形式的多播组成员身份信息300传送到控制器服务器218。例如,接入信息306可包含:节点信息321,其包含标识包转发***103的节点标识符;端口信息320,其包含标识其上端主机109被识别为与包转发***103交互的端口的端口标识符;VLAN信息324,其包含标识其上端主机109被识别为与包转发***103交互的虚拟局域网的VLAN标识符;以及端点标识符信息332(例如,媒体接入控制(MAC)地址/因特网协议地址),其标识端主机109。
在判定操作908,在控制器服务器908处,多播管理模块258识别接入信息306是否包含描述标识多播组中的成员的端点标识符信息332。例如,多播管理模块258可比较接入信息306中的端点标识符信息332与集中式多播组成员身份信息260中的每一个多播信息元素330中的端点标识符信息332,并且响应于识别出匹配而分叉到操作912。否则,多播管理模块258分叉到操作910。
在连接符“9A”处,控制器服务器218处理呈接入信息306形式的多播组成员身份信息300,如图6中在操作608处所说明且如先前描述。
图10是根据实例实施例的说明用于优化集中式多播拓扑信息的管理的方法1000的框图。左侧说明的是由一个或多个端主机109执行的操作;中间说明的是由一个或多个包转发***103执行的操作;以及右侧说明的是由控制器服务器218执行的操作。
方法1000开始于操作1002,其中多播管理模块258在控制器服务器218处将探测消息传送到网络中的包转发***103。例如,多播管理模块258可通过网络发送链路层发现协议(LLDP)探测包以发现网络的拓扑。
在操作1004,在包转发***103处,多播通信模块241接收探测消息,且在操作1006,多播支持模块240识别拓扑状态信息并将拓扑状态信息传送到控制器服务器218。例如,拓扑状态信息可描述接收到探测消息的包转发***103以及连接到包转发***103的通信链路107。拓扑状态信息可另外描述通过通信链路107是否无法到达相邻包转发***103和/或通信链路107是否有故障(例如,不作用)。
在操作1008,在控制器服务器218处,多播管理模块258从一个或多个包转发***103接收拓扑状态信息。在操作1010,多播管理模块258基于拓扑状态信息而生成/更新集中式多播拓扑信息254。例如,拓扑状态信息可指示包转发***103(例如,“节点D”)被添加到网络中,所述网络包含有故障的“端口3”上的通信链路107和将包转发***103(例如,“节点D”)连接到先前在网络中注册过的相邻包转发***103(例如,“节点C”)的“端口4”上的通信链路107。处理在图6A上的页间连接符“10A”处继续,其中拓扑模块256识别一个或多个多播树是否已基于网络拓扑更新。例如,响应于已经用有故障的通信链路107(例如,通信链路不支持通信)或已修复的通信链路107(例如,通信现在支持通信)或这两者更新网络拓扑,拓扑模块256可识别和配置多播树的最短无环路路径。另外例如,拓扑模块256可基于单个通信链路107的状态改变(例如,有故障/已修复)来识别和配置多个多播树。
图11A是根据实例实施例的说明用于集中管理多播业务的网络架构1100的框图,如结合图2A到2C、图3A到3E、图4A到4B、图5C到5、图6A到6B、图7、图8、图9、图10所描述,且如在整个本文件中以其它方式所描述的。网络架构1100包含实现集中控制的网络1110,且包含计算设备1112、一个或多个包转发***1114和一个或多个端主机1115,所述计算设备1112包含一个或多个例如控制器服务器1118的控制器服务器。控制器服务器1118通过网络链路1116以通信方式联接到包转发***1114中的控制单元1124,以实施网络配置并执行其它类型的集中控制。包转发***1114包含输入-输出端口,所述输入-输出端口用于以通信方式将包转发***1114联接到其它包转发***1114或控制器服务器1118。包转发***1114还包含额外的输入-输出端口,所述额外的输入-输出端口用于以通信方式将包转发***1114联接到端主机1115(例如,EH1、EH2、EH3等)。端主机1115通过包转发***1114而与彼此通信。根据另一实施例,网络链路1116可以实施为网络路径,如在本文件中稍后描述。
多供应商网络
例如因特网和联接到因特网的局域网的多供应商网络(例如,网络1110)依赖于基于包的交换机,例如包转发***(例如,包转发***1114)。这些交换机在本文中有时被称作网络交换机、包处理***或包转发***(例如,包转发***1114),它们可转发基于包的地址信息。通过这种方式,通过包来源传输的数据包可以被递送给包目的地。在网络术语中,包来源和目的地有时被称为端主机1115(例如,EH1、EH2、EH3等)。端主机1115的实例是个人计算机、服务器和使用有线或无线技术接入网络的其它计算设备,例如便携式电子装置。
多供应商网络中的包转发***(例如,网络交换机)的能力范围是从相对较小的以太网交换机和无线接入点到大型的基于机架的***,所述***包含多个线路卡、冗余电源和管理程序。网络包含来自多个供应商的设备并不罕见。来自不同供应商的包转发***(例如,网络交换机)可以互连以形成包转发网络,但是可能难以进行集中管理,因为它们的操作***和控制协议之间不兼容。
这些潜在的不兼容性可以通过将公共跨平台控制模块(在本文中有时被称作控制器客户端)(例如,控制单元1124)并入到每一包转发***(例如,网络交换机)中来解决。例如控制器服务器(例如,控制器服务器1118)的集中式跨平台控制器或分布式控制器服务器可通过相应的网络链路(例如,网络链路1116)与每一个控制客户端(例如,控制单元1124)交互。使用跨平台控制器和对应的控制器客户端(例如,控制单元1124)使得可能不同的网络交换机设备能够被集中管理。
图11B是根据实例实施例的说明网络1110的一部分的框图。根据实施例,如更详细地示出,网络1110提供集中控制,并且包含例如控制器服务器1118和包转发***1114的一个或多个控制器服务器。控制器服务器1118可以实施于独立计算机、计算机集群、分布在多个位置当中的一组计算机、嵌入于网络交换机内的硬件或其它合适的计算设备1112上。控制器服务器1118可作为单个处理在单个计算机上运行,或者可以分布在若干个主机上以实现冗余。使用分布布置可有助于向网络1110提供免受意外网络分区(例如,其中两个园区之间的网络链路中断)的弹性。
在分布式控制器布置中,控制器服务器1118(例如,控制器节点)可使用控制器内协议交换信息。例如,如果新的端主机连接到仅与第一控制器节点连接的网络硬件(例如,交换机),那么所述第一控制器节点可使用控制器内协议来告知其它控制器节点新的端主机的存在。如果需要,交换机或其它网络组件可以连接到多个控制器节点。其中单个控制器服务器用于控制相关联的交换机的网络的布置在本文中有时描述为实例。
图11B的控制器服务器1118可收集关于网络1110的拓扑的信息。例如,控制器服务器1118可通过网络1110发送链路层发现协议(LLDP)探测包以发现网络1110的拓扑。控制器服务器1118可使用关于网络拓扑的信息和关于网络设备的能力的信息来确定供包流动通过网络1110的适当路径。一旦识别出适当的路径,控制器服务器1118就可将对应的设置数据发送到网络1110中的硬件,以确保包按需要流动通过网络1110。诸如这些的网络配置操作可在***设置操作期间执行,在后台中持续执行,或响应于新传输的数据包(即,尚未建立预先存在的路径的包)的出现而执行。
控制器服务器1118可用于实施在本文中被称作规则1120的网络配置规则。呈网络配置规则形式的规则1120可指定哪些服务可供各种网络实体使用。作为一实例,规则1120可指定网络1110中的哪些用户(或用户的类型)可以接入特定服务器。作为另一实例,规则1120可包含识别网络业务的服务***策略和将对所识别的网络业务执行的服务。例如,规则1120可保存在计算设备1112处的数据库中。
在相应的包转发***1114(例如,网络交换机)处的控制器服务器1118和控制器客户端1130可使用网络协议堆栈来通过网络路径1166进行通信。
每一包转发***1114(例如,交换机)可具有输入-输出端口1134(有时被称为网络交换机接口)。缆线可用于将多件设备连接到端口1134。例如,例如个人计算机、网络服务器和其它计算设备的端主机可以***到端口1134中。端口1134还可用于将包转发***1114(例如,交换机)中的一个连接到其它包转发***1114(例如,交换机)。
包处理电路***1132可用于将包从一个端口1134转发到另一个端口1134,并且可用于对传入的包执行其它合适的动作。包处理电路***1132可以使用例如专用高速开关电路的一个或多个集成电路来实施,并且可用作硬件数据路径。如果需要,在控制单元1124上运行的包处理软件1126可用于实施软件数据路径。
控制单元1124可包含用于存储和运行控制软件的处理和存储器电路(例如,一个或多个微处理器、存储器芯片和其它控制电路***)。例如,控制单元1124可存储并运行例如包处理软件1126的软件,可存储流表1128,并且可用于支持控制器客户端1130的操作。
控制器客户端1130和控制器服务器1118可以与例如OpenFlow协议(见例如OpenFlow交换机规范1.0.0版、1.3.1版,或其它版本的OpenFlow协议)的网络交换机协议兼容。控制器客户端1130当中的一个或多个客户端还可与其它协议(例如,简单网络管理协议)兼容。使用OpenFlow协议或其它合适的协议,控制器服务器1118可以向控制器客户端1130提供确定包转发***1114(例如,交换机)如何处理从输入-输出端口1134传入的包的数据。
通过一个合适的布置,来自控制器服务器1118的流表数据可以存储在例如流表1128的流表中。流表1128的条目可用于配置包转发***1114(例如,交换机)(例如,包处理电路***1132和/或包处理软件1126的功能)。在典型的情形中,流表1128充当流表条目的高速缓存存储装置,且这些流表条目的相应版本嵌入于由包处理电路***1132的电路***维护的设置内。然而,这仅仅是说明性的。流表1128可用作包转发***1114(例如,交换机)中的流表条目的专用存储装置,或者可以省略以支持包处理电路***1132内的流表存储资源。大体来说,流表条目可以使用任何合适的数据结构(例如,一个或多个表格、列表等)来存储。出于清楚起见,流表1128的数据(不管是保存在控制单元1124中的数据库中还是嵌入在包处理电路***1132的配置内)在本文中被称作形成流表条目(例如,流表1128的行)。
存储确定包转发***1114(例如,交换机)如何处理传入包的数据的流表1128的实例仅仅是说明性的。如果需要,作为流表1128的替代或添加,可以使用任一包转发决策引擎来帮助包转发***1114做出关于如何转发网络包的决策。作为一实例,包转发决策引擎可基于网络包的属性(例如,基于网络协议标头)而引导包转发***1114将网络包转发到预定端口。
任何所要交换机可具有与控制器服务器通信且受控制器服务器控制的控制器客户端1130。例如,包转发***1114(例如,交换机)可以使用通用处理平台来实施,所述通用处理平台运行控制软件并省略了包处理电路***1132。作为另一实例,包转发***1114(例如,交换机)可以使用联接到一个或多个高速开关集成电路(“开关IC”)来实施控制电路***。作为又一实例,包转发***1114(例如,交换机)可以实施为具有多个线路卡的基于机架的***中的线路卡,每一线路卡具有其自身的包处理电路***。如果需要,控制器服务器可实施在基于机架的***中的一个或多个线路卡上、实施在另一基于机架的***中或实施在联接到网络1110的其它计算设备上。
图12是根据实施例的控制器服务器1118和控制器客户端1130的框图。控制器服务器1118和控制器客户端1130可通过网络路径1166使用网络协议堆栈进行通信,所述网络协议堆栈例如网络协议堆栈1158和网络协议堆栈1160。例如,网络协议堆栈1158和网络协议堆栈1160可以是Linux TCP/IP堆栈或VxWorks操作***(作为实例)中的TCP/IP堆栈。网络路径1166可以是例如支持包转发***1114(例如,交换机)和外部设备(例如,图11A的网络链路1116)之间的网络连接的路径,或者可以是基于机架的***中的骨干路径。其中网络路径1166是例如网络链路1116的网络路径的布置在本文中有时被描述为实例。
控制协议堆栈1156充当网络协议堆栈1158和控制软件1154之间的接口。控制协议堆栈1162充当网络协议堆栈1160和控制软件1164之间的接口。在操作期间,当控制器服务器1118与控制器客户端1130通信时,控制协议堆栈1156生成并解析控制协议消息(例如,用于启用端口或将特定流表条目安装进流表1128中的控制消息)。通过使用图12中所示类型的布置,在控制器服务器1118和控制器客户端1130之间通过链路(例如,网络路径1166)形成网络连接。控制器服务器1118和控制器客户端1130可通过因特网协议(IP)网络连接使用传输控制协议(TCP)或用户数据报协议(UDP)进行通信。当控制器服务器1118和控制器客户端1130之间通过网络连接通信时可以使用的控制协议的实例包含SNMP和OpenFlow协议堆栈1.0.0版(作为实例)。
返回到图11B,流表1128含有具有多个字段(有时被称为标头字段)的流表条目(例如,表格中的行)。已被包转发***1114(例如,交换机)接收的包中的字段可以与流表1128中的字段进行比较。每一流表条目可具有相关联的动作。当包中的字段和流表条目中的字段之间存在匹配时,可以采取所述流表条目的对应动作。
图13是根据实施例的说明流表1128的框图。流表1128可具有流表条目(行)1168。每一流表条目1168可与标头1170、动作1172和统计数据1174相关联。每一标头1170可包含多个标头字段1176。每一流表条目1168中的动作1172指示当检测到包中的字段和所述流表条目的标头1170中的对应字段之间匹配时包转发***1114(例如,交换机)将对包执行什么动作。包转发***1114(例如,交换机)可在流表1128的统计数据部分中保存统计数据(计数值),当希望获得关于包转发***1114(例如,交换机)的性能的信息时,可以通过控制器服务器1118查询所述统计数据部分。
标头1170中的标头字段(和对应的每一传入包中的字段)可包含以下字段:入端口(即,通过其接收到包的包转发***1114(例如,交换机)中的物理端口的标识)、以太网源地址、以太网目的地地址、以太网类型、虚拟局域网(VLAN)标识(有时被称为VLAN标签)、VLAN优先级、IP源地址、目的地地址、IP协议IP ToS(服务类型)位、传送源端口/因特网控制消息协议(ICMP)类型(有时被称为源TCP端口),以及传送目的地端口/ICMP代码(有时被称为目的地TCP端口)。如果需要,可以使用其它字段。例如,可以使用网络协议字段和协议端口字段。
每一流表条目1168(流表条目)与指示交换机如何处理匹配包的零个或多个动作(例如,动作1172)相关联。根据实施例,如果不存在转发动作,那么包被丢弃。当检测到包字段和流表条目中的标头字段之间匹配时包转发***1114(例如,交换机)可以采取的动作可包含以下动作:转发(例如,用于在不包含传入接口的所有接口上将包发送出去的ALL,用于包封包并将包发送到控制器服务器1118的CONTROLLER,用于将包发送到交换机的局部联网堆栈的LOCAL,用于执行流表1128中的动作的TABLE,用于将包从输入端口发送出去的IN_PORT,用于使用例如传统的二级、VLAN和三级处理处理具有由交换机支持的默认转发路径的包的NORMAL,以及用于沿着不包含传入接口的最小转发树扩散包的FLOOD)。包转发***1114(例如,交换机)可以采取的额外动作包含:通过附接到端口上的队列转发包的排队动作和丢弃动作(例如,丢弃匹配不具有指定动作的流表条目的包)。包转发***1114(例如,交换机)还可支持字段修改(Modify-field)动作。可以采取的字段修改动作的实例包含:设置VLAN ID、设置VLAN优先级、去除VLAN标头、修改VLAN标签、修改以太网源MAC(媒体接入控制)地址、修改以太网目的地MAC地址、修改IPv4源地址、修改IPv4 ToS位、修改传送目的地端口。字段修改动作可用于重写网络包中匹配流表条目的部分。
图14是说明存储三个流表条目的流表1128的框图。条目包含具有通配符(例如,“*”符号)的字段。当在特定字段中存在通配符时,所有传入包都将被视为与所述字段形成“匹配”,而不管传入包中的字段的特定值如何。额外字段可匹配额外包信息(例如,网络包的包标头信息)。
描述第一行、第二行和第三行中的条目。图14的流表1128的第一行中的条目引导流表条目在其中操作的交换机执行以太网交换。具体地说,具有匹配的以太网目的地地址的传入包被转发到端口3。图14的流表1128的第二行中的条目说明交换机可如何配置成执行因特网路由(即,包基于它们的目的地IP地址进行转发)。图14的流表1128的第三行含有说明交换机可如何配置成执行防火墙作用的条目。当接收到目的地IP端口值为80的包时,丢弃所述包(即,交换机被配置成用作阻挡端口80的业务的防火墙)。
图14中所示类型的流表条目可以在***设置操作期间通过控制器服务器1118加载到包转发***1114(例如,交换机)中,或者可以响应于在控制器服务器1118处从例如包转发***1114(例如,交换机)的交换机接收到包并处理包,实时地从控制器服务器1118提供到包转发***1114(例如,交换机)。在具有众多包转发***1114(例如,交换机)的网络中,每一交换机可具有适当的流表条目以形成穿过网络1110的路径。
在图15中示出在处理于输入-输出端口1134上接收到的包时可由包转发***1114(例如,交换机)执行的说明性步骤。
图15是根据实施例的说明用于处理包的方法1177的框图。方法1177开始于步骤1178,其中包转发***1114(例如,交换机)在它的一个端口(例如,图11B的输入-输出端口1134中的一个)上接收包。
在步骤1180,包转发***1114(例如,交换机)比较接收到的包的字段与所述交换机的流表1128中的流表条目的字段,以确定是否存在匹配。流表条目中的一些字段可含有完整值(例如,完整地址)。其它字段可含有通配符(即,标记有“不关心”通配符“*”的字段)。其它字段可具有部分完整的条目(例如,部分加通配符的部分地址)。一些字段可使用范围(例如,通过将TCP端口编号限制为在1和4096之间的值),并有效地使用所述范围来实施部分通配符技术。在接收到的包和流表条目之间进行逐字段比较时,包转发***1114(例如,交换机)可考虑流表条目中的每一字段是否含有不具有任何通配符的完整值、具有通配符的部分值或通配符(即,完全为通配符的字段)。
如果在步骤1180的操作期间确定包的字段和流表条目的对应字段之间不存在匹配,那么包转发***1114(例如,交换机)可通过网络链路1116将包发送到控制器服务器1118(步骤1184)。
如果在步骤1180的操作期间确定包和流表条目之间存在匹配,那么包转发***1114(例如,交换机)可执行与所述流表条目相关联的动作,并且可更新所述流表条目的统计数据字段中的计数值(步骤1182)。处理可接着循环到步骤1178,使得另一包可以由包转发***1114(例如,交换机)处理,如线1186所指示。
图16是根据实施例的说明网络1190的框图。根据实施例,在下面的描述中,网络1190用于举例说明多供应商网络的配置。网络1190包含可受控制器服务器1118控制的交换机。控制器服务器1118可以是跨多个计算设备实施的控制器服务器或分布式控制器。根据实施例,如图16中所示,网络1190可包含交换机SW1和SW2。控制器服务器1118可以通过网络路径1166(例如,控制路径)联接到网络1190的交换机。控制器服务器1118可使用网络路径1166(例如,控制路径)(例如,通过提供流表条目,例如图13的流表条目1168)来控制交换机。交换机可包含联接到端主机或其它交换机的交换机端口。在图16的实例中,端主机EH1和EH3分别联接到交换机SW1的端口P1和P3,端主机EH2和EH4分别联接到交换机SW2的端口P1和P2,且交换机SW1和SW2通过交换机SW1的端口P2和交换机SW2的端口P3联接。
控制器服务器1118可包含控制网络中的交换机的操作的一个或多个应用模块1192。例如,第一应用模块1192可将交换机组织成由交换机上的多组端主机或端口形成的虚拟交换机。在此情形中,第一应用模块1192可以在加强网络策略和在虚拟交换机级别进行转发时,控制网络的底层交换机SW1和SW2(例如,网络策略可以针对虚拟交换机限定,而不是针对底层交换机限定)。作为另一实例,第二应用模块1192可处理网络监测功能,例如分析网络业务,以生成网络业务报告。应用模块1192可生成并向交换机建模接口1194提供(例如,整个网络的)所要网络配置。交换机建模接口1194可在实施所要网络配置时使用交换机模型1198,并且可向应用模块1192指示实施方案是成功还是失败。
例如应用模块1192的模块可以在控制器服务器1118处实施为通用或专用计算设备上的软件或专用硬件。例如,应用模块1192可以实施为共享计算设备上的软件模块。作为另一实例,应用模块1192可以实施在分布式控制器布置中的不同计算设备上。
应用模块1192可基于保存在应用模块1192处或由控制器服务器1118的其它模块保存的网络拓扑信息来控制交换机。然而,网络中可存在数百、数千或更多个交换机。对于应用模块1192来说,确保发送到网络的交换机的控制消息被交换机成功接收到或执行可能比较具有挑战性。此外,多个应用模块1192可以实施在控制器服务器1118处,并且可能彼此冲突。考虑其中交换机未能实施从控制器服务器1118接收的流表条目的情形。在此情形中,交换机的状态可能不匹配预期状态,且由控制器提供的后续流表条目可能会产生不合需要的网络配置。
控制器服务器1118可具有交换机建模接口模块(未示出),所述交换机建模接口模块处理与交换机之间的通信以及交换机状态的维护。交换机建模接口模块可有助于确保应用模块1192与网络1190的交换机同步。交换机建模接口1194可用于实施表示网络1190中的每一交换机的交换机模型1198。例如,交换机模型MSW1可表示交换机SW1,而交换机模型MSW2可表示交换机SW2。交换机模型MSW1和MSW2可保存关于相应交换机SW1和SW2的当前状态的信息。例如,交换机模型MSW1可保存标识在交换机SW1处实施的转发规则或策略的信息,而交换机模型MSW2可标识交换机SW2的状态。
交换机模型1198可由控制模块1196控制。控制模块1196可控制交换机模型1198,并在满足来自应用模块1192的网络控制请求时向网络1190的交换机发出控制消息。交换机模型1198可以实施为数据构造,例如一组表格。
模块、组件和逻辑
本文中将某些实施例描述为包含逻辑或数个组件、模块或机制。模块可构成软件模块(例如,实施在机器可读媒体上的代码)或硬件模块。“硬件模块”为能够执行某些操作且可以某一物理方式配置或布置的有形单元。在各种实例实施例中,一个或多个计算机***(例如,独立计算机***、客户端计算机***或服务器计算机***)或计算机***的一个或多个硬件模块(例如,处理器或一组处理器)可以由软件(例如,应用或应用部分)配置为用以执行如本文中所描述的某些操作的硬件模块。
在一些实施例中,可以机械方式、电子方式或其任何合适组合实施硬件模块。例如,硬件模块可包含永久地配置成执行某些操作的专用电路***或逻辑。例如,硬件模块可以是专用处理器,例如现场可编程门阵列(FPGA)或专用集成电路(ASIC)。硬件模块还可包含由软件暂时性配置以执行某些操作的可编程逻辑或电路***。例如,硬件模块可包含由通用处理器或其它可编程处理器执行的软件。一旦通过此类软件配置,那么硬件模块变为被特别地调整以执行所配置功能的特定机器(或机器的特定组件),而不再是通用处理器。应了解,可以由成本和时间考虑因素驱动以机械方式、在专用且永久性配置的电路***中或在暂时性配置的电路***(例如,由软件配置)中实施硬件模块的决策。
因此,短语“硬件模块”应理解为涵盖有形实体,即以物理方式构建、永久性配置(例如,硬接线)或暂时性配置(例如,编程)从而以某一方式操作或执行本文中所描述的某些操作的实体。如本文中所使用,“硬件实施的模块”指硬件模块。考虑到其中硬件模块进行暂时性配置(例如,编程)的实施例,无需在任一时刻配置或实例化每一个硬件模块。例如,在硬件模块包括由软件配置以变为专用处理器的通用处理器的情况下,通用处理器可在不同时间分别配置为不同的专用处理器(例如,包括不同硬件模块)。软件因此配置一个或多个特定处理器,例如,以在一个时刻构成特定硬件模块且在不同时刻构成不同硬件模块。
硬件模块可将信息提供到其它硬件模块且从其它硬件模块接收信息。因此,可以将所描述硬件模块视为以通信方式联接。当多个硬件模块同时存在时,可通过信号传输(例如,通过适当的电路和总线)实现硬件模块中的两个或更多个之间或当中的通信。在于不同时间配置或实例化多个硬件模块的实施例中,可以例如通过存储并检索多个硬件模块接入的存储器结构中的信息而实现此类硬件模块之间的通信。例如,一个硬件模块可以执行一个操作且将那个操作的输出存储在存储器装置中,所述硬件模块以通信方式联接到所述存储器装置。接着,另一硬件模块可以随后接入存储器装置以检索和处理所存储的输出。硬件模块还可以发起与输入或输出装置之间的通信,并可对资源(例如,信息的集合)进行操作。
本文中所描述的实例方法的各个操作可至少部分地由一个或多个处理器执行,所述一个或多个处理器(例如,由软件)暂时性配置或永久性配置成执行相关操作。无论是暂时性还是永久性地配置,此类处理器都可构成用以执行本文中所描述的一个或多个操作或功能的处理器实施的模块。如本文中所使用,“处理器实施的模块”是指使用一个或多个处理器实施的硬件模块。
类似地,本文所描述的方法可至少部分地是处理器实施的,其中一个或多个特定处理器是硬件的实例。例如,方法的操作中的至少一些可以由一个或多个处理器或处理器实施的模块执行。此外,一个或多个处理器还可用以支持“云计算”环境中或作为“软件即服务”(SaaS)的相关操作的性能。例如,操作中的至少一些可由一组计算机(作为包含处理器的机器的实例)执行,其中这些操作可通过网络(例如,因特网)和一个或多个适当的接口(例如,应用程序接口(API))接入。
操作的特定性能可以分布在处理器当中,不仅驻留在单个机器内,而且还跨多个机器部署。在一些实例实施例中,处理器或处理器实施的模块可定位于单个地理位置中(例如家庭环境、办公室环境或服务器集群内)。在其它实例实施例中,处理器或处理器实施的模块可以跨数个地理位置分布。
机器和软件架构
结合图6到16描述的模块、方法、应用等等在机器和相关联的软件架构的上下文中于一些实施例中实施。以下章节描述适合与公开的实施例一起使用的代表性软件架构和机器(例如,硬件)架构。
软件架构与硬件架构结合使用以创建针对特定目的定制的装置和机器。例如,与特定软件架构联接的特定硬件架构将创建移动装置,例如移动电话、平板电脑装置等等。略微不同的硬件和软件架构可产生用于“物联网”中的智能装置,而又一组合产生用于云计算架构内的服务器计算机。并未在此处呈现此类软件与硬件架构的所有组合,这是因为所属领域的技术人员可易于理解如何在与在本文中含有的公开内容不同的上下文中实施本发明。
软件架构
图17是说明可以与在本文中描述的各种硬件架构结合使用的代表性软件架构2002的框图2000。图17仅仅是软件架构的非限制性实例,且应了解,许多其它架构可以实施以促进本文中所描述的功能性。软件架构2002可以在例如图18的机器2100的硬件上执行,所述机器2100包含处理器2110、存储器/存储装置2130和I/O组件2150等等。代表性硬件层2004被说明且可表示例如图18的机器2100。代表性硬件层2004包括具有相关联的可执行指令2008的一个或多个处理单元2006。可执行指令2008表示软件架构2002的可执行指令2008,包含来自图2A到2C、图3A到3E、图4A到4B、图5A到5E、图6到10以及图15等等的方法和模块的实施方案。硬件层2004还包含存储器和/或存储装置模块2010,存储器和/或存储装置模块2010还具有可执行指令2008。硬件层2004还可包括其它硬件2012,硬件2012表示硬件层2004的任何其它硬件,例如说明为机器2100的一部分的其它硬件。
在图17的实例架构中,软件架构2002可概念化为层堆叠,其中每一层提供特定功能性。例如,软件架构2002可包含层,例如操作***2014、库2016、框架/中间件2018、应用2020和呈现层2044。操作性地,应用2020和/或层内的其它组件可通过软件堆栈调用应用编程接口(API)调用2024,并响应于所述API调用2024,接收说明为消息2026的响应、返回值等等。所说明的层在本质上是代表性的且并非所有软件架构都具有所有层。例如,一些移动或专用操作***可能不提供框架/中间件层2018,而其它移动或专用操作***可提供这种层。其它软件架构可包含额外或不同层。
操作***2014可管理硬件资源并提供公共服务。操作***2014可包含例如核2028、服务2030和驱动程序2032。核2028可充当硬件与其它软件层之间的抽象层。例如,核2028可负责存储器管理、处理器管理(例如调度)、组件管理、联网、安全性设置等。服务2030可为其它软件层提供其它公共服务。驱动程序2032可负责控制底层硬件或与底层硬件介接。举例来说,取决于硬件配置,驱动程序2032可包含显示器驱动程序、相机驱动程序、
Figure GDA0003026578860000481
驱动程序、闪存驱动程序、串行通信驱动程序(例如通用串行总线(UniversalSerial Bus,USB)驱动程序)、
Figure GDA0003026578860000482
驱动程序、音频驱动程序、电力管理驱动程序等。
库2016可提供可由应用2020和/或其它组件和/或层利用的公共基础结构。库2016通常提供功能性,所述功能性允许其它软件模块以比直接与底层操作***2014功能性(例如,核2028、服务2030和/或驱动程序2032)介接更容易的方式执行任务。库2016可包含可提供例如存储器分配功能、串处理功能、数学功能等功能的***2034库(例如,C标准库)。此外,库2016可包含API库2036,例如媒体库(例如,支持各种媒体格式的呈现和操控的库,所述媒体格式例如MPEG4、H.264、MP3、AAC、AMR、JPG、PNG)、图形库(例如,可用于在显示器上显现图形内容中的2D和3D的OpenGL框架)、数据库库(例如,可提供各种关系数据库功能的SQLite)、web库(例如,可提供网络浏览功能性的WebKit)等等。库2016还可包含向应用2020和其它软件组件/模块提供许多其它API的各种其它库2038,如本文中所描述。
框架2018(有时还被称作中间件)可提供可由应用2020和/或其它软件组件/模块利用的更高级的公共基础结构。例如,框架2018可提供各种图形用户接口(GUI)功能、高级资源管理、高级位置服务等。框架2018可提供可由应用2020和/或其它软件组件/模块利用的广泛范围的其它API,其中一些API可特定于特定操作***2014或平台。
应用2020包含内置应用2040和/或第三方应用2042和/或控制模块114和/或包含如本文所描述的无环路最短路径算法的控制器模块250,和/或网络配置规则1120和/或包处理软件1126、流表(或其它包转发决策引擎)1128,和/或控制器客户端1130和/或控制软件1154和/或控制软件1164和/或应用模块1192和/或交换机建模接口1194。代表性内置应用2040的实例可包含但不限于联系人应用、浏览器应用、书籍阅读器应用、位置应用、媒体应用、消息传递应用和/或游戏应用。第三方应用2042可包含内置应用2040中的任一个以及广泛分类的其它应用。在特定实例中,第三方应用2042(例如,由除特定平台的供应商以外的实体使用安卓TM或iOSTM软件开发工具包(SDK)开发的应用)可以是在移动操作***上运行的移动软件,所述移动操作***例如iOSTM、安卓TM
Figure GDA0003026578860000491
手机或其它移动操作***。在此实例中,第三方应用2042可调用由例如操作***2014的移动操作***提供的API调用2024,以促进本文中所描述的功能性。
应用2020可利用内置操作***功能(例如,核2028、服务2030和/或驱动程序2032)、库(例如,***库2034、API库2036和其它库2038)、框架/中间件2018以创建用户接口来与***的用户互动。可替代地或另外,在一些***中,与用户之间的交互可贯穿例如呈现层2044的呈现层进行。在这些***中,应用/模块“逻辑”可与应用/模块中与用户交互的方面分离。
一些软件架构利用虚拟机。在图17的实例中,这由虚拟机2048说明。虚拟机2048创建其中应用2020/模块可如同它们在硬件机器(例如图18的机器2100)上所执行的那样执行的软件环境。虚拟机2048由托管操作***(例如,图17中的操作***2014)托管,且通常具有虚拟机监视器2046,但未必总是这样,所述虚拟机监视器管理虚拟机2048的操作以及与托管操作***(即,操作***2014)的介接。软件架构在虚拟机2048内执行,例如操作***2050、库2052、框架/中间件2054、应用2056和/或呈现层2058。在虚拟机2048内执行的软件架构的这些层可以与先前描述的对应层相同,也可以是不同的。
实例机器架构和机器可读媒体
图18是根据一些实例实施例的说明机器2100中能够从机器可读媒体(例如,机器可读存储媒体)读取指令2116并执行本文中论述的方法中的任一个或多个的组件的框图。确切地说,图18示出呈计算机***的实例形式的机器2100的图形表示,在机器2100内可以执行用于使机器2100执行本文中论述的方法中的任一个或多个的指令2116(例如,软件、程序、应用2020、小程序、app或其它可执行代码)。例如,指令2116可使机器2100执行图6到10和图15的流程图。另外或替代地,指令2116可实施图2B的控制模块114、图2C的控制器模块250、图11B的网络配置规则1120和/或图11B的包处理软件1126、流表(或其它包转发决策引擎)1128和控制器客户端1130,和/或图12的控制软件1154和/或图12的控制软件1164和/或图16的应用程序模块1192和/或图16的交换机建模接口1194等等。指令2116将一般的非编程机器2100变换成编程成按所描述方式执行所描述和说明的功能的特定机器2100。在替代实施例中,机器2100充当独立装置或可联接(例如,联网)到其它机器。在联网部署中,机器2100可操作于服务器客户端网络环境中的服务器机器或客户端机器的负载中,或充当对等(或分布式)网络环境中的对等机器。机器2100可包括但不限于服务器计算机、客户端计算机、个人计算机(PC)、平板电脑、笔记本电脑、上网本、机顶盒(STB)、个人数字助理(PDA)、娱乐媒体***、蜂窝式电话、智能手机、移动装置、可穿戴装置(例如,智能手表)、智能家用装置(例如,智能电器)、其它智能装置、网络设备、网络路由器、网络交换机、网桥或能够依序或以其它方式执行指定机器2100将采取的动作的指令2116的任何机器。另外,尽管仅说明单个机器2100,但还应采用术语“机器”来包含一系列机器,所述一系列机器2100单独地或共同地执行指令2116以执行本文论述的方法中的任一个或多个。
机器2100可包含处理器2110、存储器/存储装置2130和I/O组件2150,它们可配置成例如通过总线2102与彼此通信。在实例实施例中,处理器2110(例如,中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)、另一处理器或其任何合适的组合)可包含例如可执行指令2116的处理器2112和处理器2114。术语“处理器”意图包含可包括可同时执行指令2116的两个或更多个独立处理器2112、2114(有时被称作“核心”)的多核处理器2110。尽管图18示出多个处理器2112、2114,但是机器2100可包含具有单个核心的单个处理器2112、具有多个核心的单个处理器2112(例如,多核处理器)、具有单个核心的多个处理器2112、2114、具有多个核心的多个处理器2112、2114,或其任何组合。
存储器/存储装置2130可包含存储器2132,例如主存储器或其它存储器存储装置,以及存储单元2136,这两者均可由处理器2110例如通过总线2102接入。存储单元2136和存储器2132存储体现本文中所描述的方法或功能中的任一个或多个的指令2116。在机器2100执行指令2116期间,指令2116还可完全或部分地驻留在存储器2132内、存储单元2136内、处理器2110中的至少一个内(例如,处理器的高速缓存存储器内)或其任何合适的组合。因此,存储器2132、存储单元2136和处理器2110的存储器是机器可读媒体的实例。
如本文中所使用,“机器可读存储媒体”意味着能够暂时性或永久性地存储指令2116和数据的装置,并且可包含但不限于随机存取存储器(RAM)、只读存储器(ROM)、缓冲存储器、快闪存储器、光学媒体、磁性媒体、高速缓存存储器、其它类型的存储装置(例如,可擦除可编程只读存储器(EEPROM))和/或其任何合适的组合。术语“机器可读存储媒体”应被认为包含能够存储指令2116的单个媒体或多个媒体(例如,集中式或分布式数据库,或相关联的高速缓存器和服务器)。术语“机器可读存储媒体”还应被认为包含能够存储供机器(例如,机器2100)执行的指令(例如,指令2116)任何媒体或多个媒体的组合,使得指令2116在由机器2100的一个或多个处理器(例如,处理器2110)执行时使机器2100执行本文中所描述的方法中的任一个或多个。因此,“机器可读存储媒体”是指单个存储设备或装置,以及包含多个存储设备或装置的“基于云的”存储***或存储网络。术语“机器可读存储媒体”排除信号本身。术语机器可读媒体包含机器可读存储媒体和传输媒体或载波信号。
I/O组件2150可包含各种组件以接收输入、提供输出、产生输出、传输信息、交换信息、撷取测量结果等等。包含于特定机器2100中的特定I/O组件2150将取决于机器2100的类型。例如,例如移动电话等便携式机器将可能包含触摸输入装置或其它此类输入机构,而无头式服务器机器将可能不包含此类触摸输入装置。应了解,I/O组件2150可包含图18中未示出的许多其它组件。I/O组件2150仅仅是为了简化以下论述而根据功能性分组,且分组决不是限制性的。在各种实例实施例中,I/O组件2150可包含输出组件2152和输入组件2154。输出组件2152可包含视觉组件(例如,显示器,例如等离子体显示面板(PDP)、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪或阴极射线管(CRT))、声学组件(例如,扬声器)、触觉组件(例如,振动电机、阻力机构)、其它信号发生器等等。输入组件2154可包含字母数字输入组件(例如,键盘、被配置成接收字母数字输入的触摸屏、光学键盘或其它字母数字输入组件)、基于点的输入组件(例如,鼠标、触控板、轨迹球、操纵杆、运动传感器或其它指向器械)、触感输入组件(例如,物理按钮、提供触摸或触控手势的位置和/或力的触摸屏,或其它触觉输入组件)、音频输入组件(例如,麦克风)等等。
在其它实例实施例中,I/O组件2150可包含生物统计组件2156、运动组件2158、环境组件2160或位置组件2162以及大量其它组件。例如,生物统计组件2156可包含用于检测表达(例如,手部表达、面部表达、声音表达、身体姿势或眼部跟踪),测量生物信号(例如,血压、心率、体温、出汗或脑波),识别人(例如,语音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)等等的组件。运动组件2158可包含加速度传感器组件(例如加速度计)、重力传感器组件、旋转传感器组件(例如陀螺仪)等等。环境组件2160可包含例如照明传感器组件(例如,光度计)、温度传感器组件(例如,检测环境温度的一个或多个温度计)、湿度传感器组件、压力传感器组件(例如,气压计)、声学传感器组件(例如,检测背景噪声的一个或多个麦克风)、接近度传感器组件(例如,检测附近对象的红外传感器)、气体传感器(例如,用以出于安全性而检测有害气体浓度或用以测量大气中的污染物的气体检测传感器)或可提供对应于周围物理环境的指示、测量结果或信号的其它组件。位置组件2162可包含位置传感器组件(例如,全球定位***(GPS)接收器组件)、高度传感器组件(例如,检测可从中导出高度的气压的高度计或气压计)、定向传感器组件(例如,磁力计)等等。
可使用各种技术来实施通信。I/O组件2150可包含可用于分别通过联接2182和联接2172将机器2100联接到网络2180或装置2170的通信组件2164。例如,通信组件2164可包含网络接口组件或用以与网络2180介接的其它合适的装置。在其它实例中,通信组件2164可包含有线通信组件、无线通信组件、蜂巢式通信组件、近场通信(NFC)组件、
Figure GDA0003026578860000542
组件(例如,
Figure GDA0003026578860000543
低能量)、
Figure GDA0003026578860000544
组件和用于通过其它模式提供通信的其它通信组件。装置2170可以是另一机器或各种***装置(例如,通过通用串行总线(USB)联接的***装置)中的任一个。
此外,通信组件2164可检测标识符或包含可用于检测标识符的组件。例如,通信组件2164可包含射频识别(RFID)标签读取器组件、NFC智能标签检测组件、光学读取器组件(例如,检测例如通用产品码(UPC)条形码的一维条形码、例如快速响应(QR)码、Aztec码、数据矩阵、Dataglyph、MaxiCode、PDF417、超码、UCC RSS-2D条形码的多维条形码和其它光码的光学传感器)或声学检测组件(例如,识别加标签的音频信号的麦克风)。此外,可以通过通信组件2164导出各种信息,例如通过因特网协议(IP)地理位置导出位置、通过
Figure GDA0003026578860000545
信号三角测量导出位置、通过检测可指示特定位置的NFC信标信号导出位置等等。
传输媒体
在各种实例实施例中,网络2180的一个或多个部分可以是特用网路、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、因特网、因特网的一部分、公共交换电话网络(PSTN)的一部分、传统电话业务(POTS)网络、蜂窝式电话网络、无线网络、
Figure GDA0003026578860000541
网络、另一种类型的网络或此类网络中的两个或更多个的组合。例如,网络2180或网络2180的一部分可包含无线或蜂窝式网络,且联接2182可以是码分多址(CDMA)连接、全球移动通信***(GSM)连接或其它类型的蜂窝式或无线联接。在此实例中,联接2182可实施各种类型的数据传送技术中的任一个,所述数据传送技术例如单载波无线传输技术(1xRTT)、演进数据优化(EVDO)技术、通用包无线电服务(GPRS)技术、演进增强数据速率(EDGE)技术、包含3G的第三代合作伙伴计划(3GPP)、***无线(4G)网络、全球移动电信***(UMTS)、高速包接入(HSPA)、全球微波接入互操作性(WiMAX)、长期演进(LTE)标准,由各种标准设定组织、其它长程协议或其它数据传送技术定义的其它标准。
指令2116可以在网络2180上使用传输媒体通过网络接口装置(例如,包含在通信组件2164中的网络接口组件)并利用数个众所周知的传送协议(例如,超文本传送协议(HTTP))中的任一个传输或接收。类似地,指令2116可以使用传输媒体通过到装置2170的联接2172(例如,对等联接)传输或接收。术语“传输媒体”应被认为包含能够存储、编码或载送指令2116以由机器2100执行的任何无形媒体,且包含数字或模拟通信信号或其它无形媒体以有助于此软件的通信。传输媒体是机器可读媒体的实施例。
以下编号的实例是实施例。
1.一种***,包括:
至少一个处理器和能在计算机可读媒体上接入的可执行指令,所述可执行指令在执行时使所述至少一个处理器执行包括以下各项的操作:
在控制器服务器处,从网络上并通过第一包转发***接收第一多播组成员信息,所述控制器服务器实现对包括第一虚拟局域网的网络的控制,所述第一虚拟局域网包括包含所述第一包转发***的第一多个包转发***,所述第一多播组成员信息由所述第一包转发***从第一端主机接收并将所述第一端主机描述为在所述第一虚拟局域网上加入第一多播组;
在所述控制器服务器处生成多播树;以及
通过所述网络将网络配置消息传送到所述第一多个包转发***中的至少一个包转发***,所述网络配置消息包含包流表条目,使得所述第一多个包转发***中的所述至少一个包转发***能够配置流表以启用所述多播树的一部分上的所述第一多播组的多播业务的通信。
2.根据实例1所述的***,其中所述第一多播组成员信息包括轮询信息,并且其中所述轮询信息包括至少一个加入注册,并且其中所述至少一个加入注册包括第一加入注册,并且其中所述第一加入注册包括虚拟局域网信息和多播组信息。
3.根据实例1或实例2所述的***,其中所述生成是基于描述所述第一多个包转发***的互连的网络拓扑,并且其中所述第一多播组成员信息描述所述第一多播组的成员,并且其中所述多播树描述所述第一虚拟局域网中的所述第一多播组的所述多播业务的通信。
4.根据实例1到3中任一项所述的***,其中所述网络还包括第二虚拟局域网,并且其中所述第二虚拟局域网包括包含第二包转发***的第二多个包转发***。
5.根据实例4所述的***,还包括在所述控制器服务器处,从所述网络上并通过所述第二包转发***接收第二多播组成员信息,所述控制器服务器提供对包括所述第一虚拟局域网和所述第二虚拟局域网的所述网络的集中控制。
6.根据实例5所述的***,其中所述第二多播组成员信息由所述第二包转发***从第二端主机接收,且所述第二多播组成员信息将所述第二端主机描述为在所述第二虚拟局域网上加入所述第一多播组。
7.根据实例6所述的***,其中所述第二多播组成员信息包含描述所述第一多播组和所述第二虚拟局域网的报告信息。
8.根据实例7所述的***,还包括在所述控制器服务器处生成多播树,并且其中所述生成是响应于在所述控制器计算机处接收到所述第二多播组成员信息。
9.根据实例7或实例8所述的***,还包括通过所述网络将网络配置消息传送到所述第二多个包转发***中的至少一个,所述网络配置消息包含包流表条目,使得所述第二多个包转发***中的所述至少一个能够配置流表以启用所述多播树的一部分上的所述第一多播组的所述多播业务的通信。
10.一种方法,包括:
在控制器服务器处,从网络上并通过第一包转发***接收第一多播组成员信息,所述控制器服务器实现对包括第一虚拟局域网的网络的控制,所述第一虚拟局域网包括包含所述第一包转发***的第一多个包转发***,所述第一多播组成员信息由所述第一包转发***从第一端主机接收并将所述第一端主机描述为在所述第一虚拟局域网上加入第一多播组;
在所述控制器服务器处生成多播树;以及
通过所述网络将网络配置消息传送到所述第一多个包转发***中的至少一个包转发***,所述网络配置消息包含包流表条目,使得所述第一多个包转发***中的所述至少一个包转发***能够配置流表以启用所述多播树的一部分上的所述第一多播组的多播业务的通信。
11.根据实例10所述的方法,其中所述第一多播组成员信息包括轮询信息,并且其中所述轮询信息包括至少一个加入注册,并且其中所述至少一个加入注册包括第一加入注册,并且其中所述第一加入注册包括虚拟局域网信息和多播组信息。
12.根据实例10或实例11所述的方法,其中所述生成是基于描述所述第一多个包转发***的互连的网络拓扑,并且其中所述第一多播组成员信息描述所述第一多播组的成员,并且其中所述多播树描述所述第一虚拟局域网中的所述第一多播组的多播业务的通信。
13.根据实例10到12中任一项所述的方法,其中所述网络还包括第二虚拟局域网,并且其中所述第二虚拟局域网包括包含第二包转发***的第二多个包转发***。
14.根据实例13所述的方法,还包括在所述控制器服务器处,从所述网络上并通过所述第二包转发***接收第二多播组成员信息,所述控制器服务器提供对包括所述第一虚拟局域网和所述第二虚拟局域网的所述网络的集中控制。
15.根据实例14所述的方法,其中所述第二多播组成员信息由所述第二包转发***从第二端主机接收,且所述第二多播组成员信息将所述第二端主机描述为在所述第二虚拟局域网上加入所述第一多播组。
16.根据实例15所述的方法,其中所述第二多播组成员信息包含描述所述第一多播组和所述第二虚拟局域网的报告信息。
17.根据实例16所述的方法,还包括在所述控制器服务器处生成多播树,并且其中所述生成是响应于在所述控制器计算机处接收到所述第二多播组成员信息。
18.根据实例16或实例17所述的方法,还包括通过所述网络将网络配置消息传送到所述第二多个包转发***中的至少一个,所述网络配置消息包含包流表条目,使得所述第二多个包转发***中的所述至少一个能够配置流表以启用所述多播树的一部分上的所述第一多播组的所述多播业务的通信。
19.一种存储指令的机器可读存储媒体,所述指令不具有暂时性信号且在由至少一个处理器执行时使至少一个处理器执行包括以下各项的动作:
在控制器服务器处,从网络上并通过第一包转发***接收第一多播组成员信息,所述控制器服务器实现对包括第一虚拟局域网的网络的控制,所述第一虚拟局域网包括包含所述第一包转发***的第一多个包转发***,所述第一多播组成员信息由所述第一包转发***从第一端主机接收并将所述第一端主机描述为在所述第一虚拟局域网上加入第一多播组;
在所述控制器服务器处生成多播树;以及
通过所述网络将网络配置消息传送到所述第一多个包转发***中的至少一个包转发***,所述网络配置消息包含包流表条目,使得所述第一多个包转发***中的所述至少一个包转发***能够配置流表以启用所述多播树的一部分上的所述第一多播组的多播业务的通信。
20.根据实例19所述的机器可读存储媒体,其中所述生成是基于描述所述第一多个包转发***的互连的网络拓扑,并且其中所述第一多播组成员信息描述所述第一多播组的成员,并且其中所述多播树描述所述第一虚拟局域网中的所述第一多播组的多播业务的通信。
21.一种载送指令的机器可读媒体,所述指令在由机器执行时使所述机器实行根据实例10到18中任一项所述的方法。
语言
在整个本说明书中,多个实例可以实施描述为单个实例的组件、操作或结构。尽管将一个或多个方法的个别操作说明且描述为单独的操作,但是可以同时执行个别操作中的一个或多个,且并不要求以所说明的次序执行操作。呈现为实例配置中的单独组件的结构和功能性可以实施为组合式结构或组件。类似地,呈现为单个组件的结构和功能性可实施为单独组件。这些以及其它变化、修改、添加和改进属于本文中的主题的范围内。
尽管已经参考特定实例实施例描述本发明主题的概要,但可在不脱离本公开的实施例的更广泛范围的情况下对这些实施例进行各种修改和改变。仅为方便起见,且在不希望自愿地将本申请案的范围限制于任何单个公开内容或发明概念的情况下(如果实际上公开不止一个),本发明主题的此类实施例在本文中可个别地或共同地由术语“本发明”提及。
足够详细地描述本文中所说明的实例实施例以使所属领域的技术人员能够实践所公开的教示。可使用其它实施例且从本文中导出其它实例实施例,使得可在不脱离本公开的范围的情况下对结构和逻辑作出替代和改变。因此,详细描述不应以限制性意义来理解,并且各种实例实施例的范围仅由所附权利要求连同此类权利要求授权的等效物的完整范围定义。
如本文中所使用,术语“或”可在包含性或排他性意义上解释。此外,多个实例可提供用于本文中描述为单个实例的资源、操作或结构。另外,各种资源、操作、模块、引擎和数据存储装置之间边界在某种程度上为任意的,且在特定说明性配置的上下文中说明具体操作。功能性的其它分配经设想并且可属于本公开的各种实例实施例的范围。一般来说,呈现为实例配置中的单独资源的结构和功能性可实施为组合式结构或资源。类似地,呈现为单个资源的结构和功能性可实施为单独资源。这些及其它变化、修改、添加及改进属于如由所附权利要求书表示的本公开的实例实施例的范围。因此,应在说明性意义上而非限制性意义上看待说明书和图式。

Claims (20)

1.一种控制器服务器,包括:
至少一个处理器和能在计算机可读媒体上接入的可执行指令,所述可执行指令在执行时使所述至少一个处理器执行包括以下各项的操作:
在所述控制器服务器处,从网络上并通过第一包转发***接收第一多播组成员信息,所述控制器服务器提供对包括第一虚拟局域网的网络的控制,所述第一虚拟局域网包括包含所述第一包转发***的第一多个包转发***,所述第一多播组成员信息包括接入信息,所述第一多播组成员信息由所述第一包转发***从第一端主机接收并将所述第一端主机描述为在所述第一虚拟局域网上通过包括所述第一包转发***上的端口的网络上的新接入点接入第一多播组;
将第一端主机注册为已从网络上的旧接入点移动到网络上的新接入点,所述注册包括处理第一端主机的离开操作和处理第一端主机的加入操作,响应于在控制器服务器处从网络上接收到第一多播组成员信息,处理所述离开操作和加入操作;
在所述控制器服务器处生成第一多播树;以及
通过所述网络将网络配置消息传送到所述第一多个包转发***中的至少一个包转发***,所述网络配置消息包含包流表条目,使得所述第一多个包转发***中的所述至少一个包转发***能够配置流表以启用所述第一多播树的一部分上的所述第一多播组的多播业务的通信。
2.根据权利要求1所述的控制器服务器,还包括:
在控制器服务器处从所述网络上并通过第一包转发***接收第二多播组成员信息,所述控制器服务器提供对包括所述第一虚拟局域网的网络的集中控制,第二多播组成员信息由来自第二端主机的第一包转发***接收,并将第二端主机描述为在所述第一虚拟局域网上加入所述第一多播组,其中所述第一多播组成员信息包括轮询信息,并且其中所述轮询信息包括至少一个加入注册,并且其中所述至少一个加入注册包括第一加入注册,并且其中所述第一加入注册包括虚拟局域网信息和多播组信息。
3.根据权利要求1所述的控制器服务器,其中所述生成是基于描述所述第一多个包转发***的互连的网络拓扑,并且其中所述第一多播树描述所述第一虚拟局域网中的所述第一多播组的所述多播业务的通信。
4.根据权利要求1所述的控制器服务器,其中所述网络还包括第二虚拟局域网,并且其中所述第二虚拟局域网包括包含第二包转发***的第二多个包转发***。
5.根据权利要求4所述的控制器服务器,还包括在所述控制器服务器处,从所述网络上并通过所述第二包转发***接收第三多播组成员信息,所述控制器服务器提供对包括所述第一虚拟局域网和所述第二虚拟局域网的所述网络的集中控制。
6.根据权利要求5所述的控制器服务器,其中所述第三多播组成员信息由所述第二包转发***从第三端主机接收,且所述第三多播组成员信息将所述第三端主机描述为在所述第二虚拟局域网上加入所述第一多播组。
7.根据权利要求6所述的控制器服务器,其中所述第三多播组成员信息包含描述所述第一多播组和所述第二虚拟局域网的报告信息。
8.根据权利要求7所述的控制器服务器,还包括在所述控制器服务器处生成第二多播树,所述第二多播树用于跨越第一虚拟局域网和第二虚拟局域网的第一多播组,并且其中所述生成所述第二多播树是响应于在所述控制器服务器处接收到所述第三多播组成员信息。
9.根据权利要求7所述的控制器服务器,还包括通过所述网络将网络配置消息传送到所述第二多个包转发***中的至少一个,所述网络配置消息包含包流表条目,使得所述第二多个包转发***中的所述至少一个能够配置流表以启用所述第一多播树的一部分上的所述第一多播组的所述多播业务的通信。
10.一种在控制器服务器处执行的方法,所述方法包括:
在控制器服务器处,从网络上并通过第一包转发***接收第一多播组成员信息,所述控制器服务器提供对包括第一虚拟局域网的网络的控制,所述第一虚拟局域网包括包含所述第一包转发***的第一多个包转发***,所述第一多播组成员信息包括接入信息,所述第一多播组成员信息由所述第一包转发***从第一端主机接收并将所述第一端主机描述为在所述第一虚拟局域网上通过包括所述第一包转发***上的端口的网络上的新接入点接入第一多播组;
将第一端主机注册为已从网络上的旧接入点移动到网络上的新接入点,所述注册包括处理第一端主机的离开操作和处理第一端主机的加入操作,响应于在控制器服务器处从网络上接收到第一多播组成员信息,处理所述离开操作和加入操作;
在所述控制器服务器处生成第一多播树;以及
由所述控制器服务器通过所述网络将网络配置消息传送到所述第一多个包转发***中的至少一个包转发***,所述网络配置消息包含包流表条目,使得所述第一多个包转发***中的所述至少一个包转发***能够配置流表以启用所述第一多播树的一部分上的所述第一多播组的多播业务的通信。
11.根据权利要求10所述的方法,还包括:
在控制器服务器处从所述网络上并通过第一分组转发***接收第二多播组成员信息,所述控制器服务器提供对包括所述第一虚拟局域网的网络的集中控制,第二多播组成员信息由来自第二端主机的第一包转发***接收,并将第二端主机描述为在所述第一虚拟局域网上加入所述第一多播组,其中所述第一多播组成员信息包括轮询信息,并且其中所述轮询信息包括至少一个加入注册,并且其中所述至少一个加入注册包括第一加入注册,并且其中所述第一加入注册包括虚拟局域网信息和多播组信息。
12.根据权利要求10所述的方法,其中所述生成是基于描述所述第一多个包转发***的互连的网络拓扑,并且其中所述第一多播树描述所述第一虚拟局域网中的所述第一多播组的多播业务的通信。
13.根据权利要求10所述的方法,其中所述网络还包括第二虚拟局域网,并且其中所述第二虚拟局域网包括包含第二包转发***的第二多个包转发***。
14.根据权利要求13所述的方法,还包括在所述控制器服务器处,从所述网络上并通过所述第二包转发***接收第三多播组成员信息,所述控制器服务器提供对包括所述第一虚拟局域网和所述第二虚拟局域网的所述网络的集中控制。
15.根据权利要求14所述的方法,其中所述第三多播组成员信息由所述第二包转发***从第三端主机接收,且所述第三多播组成员信息将所述第三端主机描述为在所述第二虚拟局域网上加入所述第一多播组。
16.根据权利要求15所述的方法,其中所述第三多播组成员信息包含描述所述第一多播组和所述第二虚拟局域网的报告信息。
17.根据权利要求16所述的方法,还包括在所述控制器服务器处生成第二多播树,所述第二多播树用于跨越第一虚拟局域网和第二虚拟局域网的第一多播组,并且其中所述生成所述第二多播树是响应于在所述控制器服务器处接收到所述第三多播组成员信息。
18.根据权利要求16所述的方法,还包括通过所述网络将网络配置消息传送到所述第二多个包转发***中的至少一个,所述网络配置消息包含包流表条目,使得所述第二多个包转发***中的所述至少一个能够配置流表以启用所述第一多播树的一部分上的所述第一多播组的所述多播业务的通信。
19.一种存储计算机程序的计算机可读介质,所述计算机程序不具有暂时性信号且在由至少一个处理器执行时使至少一个处理器执行包括以下各项的动作:
在控制器服务器处:
从网络上并通过第一包转发***接收第一多播组成员信息,所述控制器服务器提供对包括第一虚拟局域网的网络的控制,所述第一虚拟局域网包括包含所述第一包转发***的第一多个包转发***,所述第一多播组成员信息包括接入信息,所述第一多播组成员信息由所述第一包转发***从第一端主机接收并将所述第一端主机描述为在所述第一虚拟局域网上通过包括所述第一包转发***上的端口的网络上的新接入点接入第一多播组;
将第一端主机注册为已从网络上的旧接入点移动到网络上的新接入点,所述注册包括处理第一端主机的离开操作和处理第一端主机的加入操作,响应于在控制器服务器处从网络上接收到第一多播组成员信息,处理所述离开操作和加入操作;
在所述控制器服务器处生成第一多播树;以及
由所述控制器服务器通过所述网络将网络配置消息传送到所述第一多个包转发***中的至少一个包转发***,所述网络配置消息包含包流表条目,使得所述第一多个包转发***中的所述至少一个包转发***能够配置流表以启用所述第一多播树的一部分上的所述第一多播组的多播业务的通信。
20.根据权利要求19所述的计算机可读介质,其中所述生成是基于描述所述第一多个包转发***的互连的网络拓扑,并且其中所述第一多播树描述所述第一虚拟局域网中的所述第一多播组的多播业务的通信。
CN201780061523.9A 2016-08-03 2017-08-03 管理多播业务的***和方法 Expired - Fee Related CN110050448B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/227856 2016-08-03
US15/227,856 US10264040B2 (en) 2016-08-03 2016-08-03 Systems and methods to manage multicast traffic
PCT/US2017/045254 WO2018027007A1 (en) 2016-08-03 2017-08-03 Systems and methods to centrally manage multicast traffic

Publications (2)

Publication Number Publication Date
CN110050448A CN110050448A (zh) 2019-07-23
CN110050448B true CN110050448B (zh) 2021-10-15

Family

ID=59626697

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780061523.9A Expired - Fee Related CN110050448B (zh) 2016-08-03 2017-08-03 管理多播业务的***和方法

Country Status (4)

Country Link
US (2) US10264040B2 (zh)
EP (1) EP3494678A1 (zh)
CN (1) CN110050448B (zh)
WO (1) WO2018027007A1 (zh)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10264040B2 (en) 2016-08-03 2019-04-16 Big Switch Networks, Inc. Systems and methods to manage multicast traffic
US10742512B2 (en) * 2017-07-24 2020-08-11 Singlewire Software, LLC System and method for multicast mapping
TWI639325B (zh) * 2017-09-01 2018-10-21 財團法人工業技術研究院 自動配置的交換機、自動配置交換機的方法、交換機自動部署的軟體定義網路系統及其方法
TWI666929B (zh) * 2018-08-08 2019-07-21 瑞昱半導體股份有限公司 多媒體串流及網路裝置及其運作方法
CN110830840B (zh) * 2018-08-14 2021-12-28 瑞昱半导体股份有限公司 多媒体串流及网路装置及其运作方法
US11424961B2 (en) 2018-09-14 2022-08-23 Hewlett Packard Enterprise Development Lp Exporting the device sharing attribute for host devices from a wireless controller to a switch
US10291479B1 (en) * 2018-12-13 2019-05-14 LogicMonitor, Inc. Discovering a computer network topology for an executing application
US10999182B2 (en) 2019-05-13 2021-05-04 128 Technology, Inc. Routing using segment-based metrics
US11005749B2 (en) * 2019-05-13 2021-05-11 128 Technology, Inc. Multicast source and receiver access control
US11070465B2 (en) * 2019-05-13 2021-07-20 128 Technology, Inc. Distribution of multicast information in a routing system
US11451464B2 (en) 2019-05-13 2022-09-20 128 Technology, Inc. Central authority for service and topology exchange
EP3970317A4 (en) * 2019-05-13 2023-02-01 128 Technology, Inc. DISTRIBUTION OF MULTICAST INFORMATION IN A ROUTING SYSTEM
US11329912B2 (en) 2019-05-13 2022-05-10 128 Technology, Inc. Source-based routing
US11153202B2 (en) 2019-05-13 2021-10-19 128 Technology, Inc. Service and topology exchange protocol
CN110581880B (zh) * 2019-05-29 2021-09-07 阿里巴巴集团控股有限公司 通信链路的建立方法及装置,节点标识确定方法及装置
US11405306B2 (en) 2019-05-30 2022-08-02 Cisco Technology, Inc. Technique for dynamic discovery, update and propagation of multicast stream capabilities in a capability-aware network
US10979300B2 (en) * 2019-06-20 2021-04-13 Kaloom Inc. Computing device and methods for synchronizing networking information with a topology server
US11228531B2 (en) * 2020-01-15 2022-01-18 Vmware, Inc. Filtering and classifying multicast network traffic
US11689455B2 (en) 2020-05-28 2023-06-27 Oracle International Corporation Loop prevention in virtual layer 2 networks
WO2021263045A1 (en) 2020-06-24 2021-12-30 Juniper Networks, Inc. Point-to-multipoint layer-2 network extension over layer-3 network
CN116235484A (zh) 2020-07-14 2023-06-06 甲骨文国际公司 层2网络中的基于接口的acl
US11652733B2 (en) * 2020-11-25 2023-05-16 Arista Networks, Inc. Media route handling
US11909636B2 (en) 2020-12-30 2024-02-20 Oracle International Corporation Layer-2 networking using access control lists in a virtualized cloud environment
WO2022146587A1 (en) * 2020-12-30 2022-07-07 Oracle International Corporation Internet group management protocol (igmp) of a layer 2 network in a virtualized cloud environment
US11671355B2 (en) 2021-02-05 2023-06-06 Oracle International Corporation Packet flow control in a header of a packet
US11777897B2 (en) 2021-02-13 2023-10-03 Oracle International Corporation Cloud infrastructure resources for connecting a service provider private network to a customer private network
US11916972B2 (en) 2021-02-25 2024-02-27 Cisco Technology, Inc. Traffic capture mechanisms for industrial network security
US20230318967A1 (en) * 2022-03-30 2023-10-05 Disney Enterprises, Inc. Reference architecture for an internet protocol (ip) production media network
US20230318969A1 (en) * 2022-03-31 2023-10-05 Lenovo (United States) Inc. Optimizing network load in multicast communications
CN115022233B (zh) * 2022-06-16 2023-04-07 电子科技大学 一种可定制点到多点数据传输完成时间的传输方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102685006A (zh) * 2012-05-03 2012-09-19 中兴通讯股份有限公司 一种转发数据报文的方法及装置
CN103181128A (zh) * 2010-10-28 2013-06-26 日本电气株式会社 网络***和通信业务控制方法
US8638789B1 (en) * 2012-05-04 2014-01-28 Google Inc. Optimal multicast forwarding in OpenFlow based networks
CN103825828A (zh) * 2013-12-23 2014-05-28 南京理工大学 一种基于OpenFlow的可信可控组播控制器
CN104012063A (zh) * 2011-12-22 2014-08-27 瑞典爱立信有限公司 用于软件定义网络中的灵活和可扩展流处理的控制器

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5355371A (en) * 1982-06-18 1994-10-11 International Business Machines Corp. Multicast communication tree creation and control method and apparatus
US6847620B1 (en) * 1999-05-13 2005-01-25 Intermec Ip Corp. Mobile virtual LAN
US7233987B2 (en) * 2002-12-20 2007-06-19 Alcatel Canada Inc. System and method for converting requests between different multicast protocols in a communication network
US20060072532A1 (en) 2004-09-30 2006-04-06 Motorola, Inc. Method and system for proactive setup of multicast distribution tree at a neighbor cell or subnet during a call
US20070297406A1 (en) * 2006-06-22 2007-12-27 Mo Rooholamini Managing multicast groups
US8532070B2 (en) * 2006-12-18 2013-09-10 Cisco Technology, Inc. Fast handoff for wireless devices in a wired-wireless network
US7813287B2 (en) * 2007-08-29 2010-10-12 Alcatel Lucent Fast TV channel changing in IPTV network
US7873020B2 (en) * 2007-10-01 2011-01-18 Cisco Technology, Inc. CAPWAP/LWAPP multicast flood control for roaming clients
KR100988039B1 (ko) 2008-10-29 2010-10-18 숭실대학교산학협력단 프록시 모바일 아이피 프로토콜 기반의 멀티캐스트 데이터 전송 방법
US8964563B2 (en) * 2011-07-08 2015-02-24 Telefonaktiebolaget L M Ericsson (Publ) Controller driven OAM for OpenFlow
US10225094B2 (en) * 2012-05-29 2019-03-05 Futurewei Technologies, Inc. SDN facilitated multicast in data center
WO2014041550A1 (en) * 2012-09-11 2014-03-20 Hewlett-Packard Development Company, L.P. Discovering ip multicast group memberships in software defined networks
US8831000B2 (en) * 2012-10-10 2014-09-09 Telefonaktiebolaget L M Ericsson (Publ) IP multicast service join process for MPLS-based virtual private cloud networking
US8953618B2 (en) * 2012-10-10 2015-02-10 Telefonaktiebolaget L M Ericsson (Publ) IP multicast service leave process for MPLS-based virtual private cloud networking
US8931046B2 (en) * 2012-10-30 2015-01-06 Stateless Networks, Inc. System and method for securing virtualized networks
US20140226525A1 (en) * 2013-02-13 2014-08-14 Futurewei Technologies, Inc. Safe Multicast Distribution with Predictable Topology Changes
CN104022960B (zh) * 2013-02-28 2017-05-31 新华三技术有限公司 基于OpenFlow协议实现PVLAN的方法和装置
EP2974133B1 (en) * 2013-03-13 2019-10-23 Nec Corporation Method and system for controlling an underlying physical network by a software defined network
US9712334B2 (en) * 2013-05-21 2017-07-18 Brocade Communications Systems, Inc. Efficient multicast topology construction in a routed network
US9338096B2 (en) * 2013-08-30 2016-05-10 Futurewei Technologies, Inc. Multicast tree packing for multi-party video conferencing under SDN environment
JPWO2015029321A1 (ja) * 2013-09-02 2017-03-02 日本電気株式会社 通信システム、制御装置、通信方法およびプログラム
US9450864B2 (en) * 2013-10-11 2016-09-20 Futurewei Technologies, Inc. Using PCE as SDN controller
JP6463783B2 (ja) * 2014-06-24 2019-02-06 ホアウェイ・テクノロジーズ・カンパニー・リミテッド ソフトウェア・デファインド・ネットワークのためのマルチキャストの方法、装置、及びシステム
US9900263B2 (en) * 2014-09-29 2018-02-20 Alcatel-Lucent Usa Inc. Non-overlay resource access in datacenters using overlay networks
US10218602B2 (en) * 2015-04-15 2019-02-26 Cisco Technology, Inc. Establishing deterministic multicast paths in a network
US10291957B2 (en) * 2015-05-22 2019-05-14 Telefonaktiebolaget Lm Ericsson (Publ) Quicker IPTV channel with static group on IGMP loopback interface
US10015113B2 (en) * 2015-06-09 2018-07-03 Brocade Communications Systems LLC Techniques to restore multicast data plane from persistent storage
US9954765B2 (en) * 2016-01-08 2018-04-24 Telefonaktiebolaget Lm Ericsson (Publ) Graph construction for computed spring multicast
WO2017144947A1 (en) * 2016-02-23 2017-08-31 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for spanning trees for computed spring multicast
US10264040B2 (en) 2016-08-03 2019-04-16 Big Switch Networks, Inc. Systems and methods to manage multicast traffic

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103181128A (zh) * 2010-10-28 2013-06-26 日本电气株式会社 网络***和通信业务控制方法
EP2634977A1 (en) * 2010-10-28 2013-09-04 Nec Corporation Network system and method for controlling communication traffic
CN104012063A (zh) * 2011-12-22 2014-08-27 瑞典爱立信有限公司 用于软件定义网络中的灵活和可扩展流处理的控制器
CN102685006A (zh) * 2012-05-03 2012-09-19 中兴通讯股份有限公司 一种转发数据报文的方法及装置
US8638789B1 (en) * 2012-05-04 2014-01-28 Google Inc. Optimal multicast forwarding in OpenFlow based networks
CN103825828A (zh) * 2013-12-23 2014-05-28 南京理工大学 一种基于OpenFlow的可信可控组播控制器

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
An OpenFlow-Based Dynamic Path Adjustment Algorithm for Multicast Spanning Trees;Jingguo Ge; Hanji Shen; E. Yuepeng; Yulei Wu; Junling You;《2013 12th IEEE International Conference on Trust, Security and Privacy in Computing and Communications》;20131212;全文 *
CastFlow: Clean-slate multicast approach using in-advance path processing in programmable networks;Cesar A. C. Marcondes; Tiago P. C. Santos; Arthur P. Godoy; Caio;《2012 IEEE Symposium on Computers and Communications (ISCC)》;20120726;全文 *
Scaling IP multicast on datacenter topologies;Xiaozhou Li;Michael J. Freedman;《 Proceedings of the ninth ACM conference on Emerging networking experiments and technologies》;20131231;全文 *

Also Published As

Publication number Publication date
US10862933B2 (en) 2020-12-08
WO2018027007A1 (en) 2018-02-08
CN110050448A (zh) 2019-07-23
EP3494678A1 (en) 2019-06-12
US20180041555A1 (en) 2018-02-08
US20190141099A1 (en) 2019-05-09
US10264040B2 (en) 2019-04-16

Similar Documents

Publication Publication Date Title
CN110050448B (zh) 管理多播业务的***和方法
US10979291B2 (en) Systems and methods to build a monitoring fabric
US9703747B2 (en) Remote console access of port extenders using protocol extension
US9003065B2 (en) De-duplicating of packets in flows at layer 3
US9444743B2 (en) Network system, switch and connected terminal detection method
US8626912B1 (en) Automated passive discovery of applications
US11290367B2 (en) Hierarchical network configuration
WO2015109821A1 (zh) 一种管理业务链的方法、***及装置
US8879549B2 (en) Clearing forwarding entries dynamically and ensuring consistency of tables across ethernet fabric switch
US10277464B2 (en) Client auto-configuration in a multi-switch link aggregation
EP3854064B1 (en) Unique identities of endpoints across layer 3 networks
US9094316B2 (en) Dynamic name generation
WO2015113435A1 (zh) 基于并行协议栈实例的数据包处理方法和装置
US10177973B2 (en) Communication apparatus, communication method, and communication system
US9912592B2 (en) Troubleshooting openflow networks
WO2013107056A1 (zh) 报文转发的方法及装置
US10999187B2 (en) Wireless control and fabric links for high-availability cluster nodes
CN109005120B (zh) 一种报文处理方法及网络设备
JP2016178530A (ja) 通信システム、通信端末、通信方法、プログラム
EP3352419A1 (en) Router and method for traffic management
US11902161B1 (en) Virtual network for virtual phone applications
US11973648B2 (en) Automatic deactivation and activation of configuration functionalities of a network device that are incompatible with performance of an in-service software upgrade procedure
CN117640377A (zh) 促进网络设备的弹性
CN116319936A (zh) 用于拨出通信会话的网络管理***

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20211015

CF01 Termination of patent right due to non-payment of annual fee