CN101459620B - 一种转发组播数据的方法和装置 - Google Patents
一种转发组播数据的方法和装置 Download PDFInfo
- Publication number
- CN101459620B CN101459620B CN2009100765375A CN200910076537A CN101459620B CN 101459620 B CN101459620 B CN 101459620B CN 2009100765375 A CN2009100765375 A CN 2009100765375A CN 200910076537 A CN200910076537 A CN 200910076537A CN 101459620 B CN101459620 B CN 101459620B
- Authority
- CN
- China
- Prior art keywords
- address
- source
- group
- mapping relations
- user
- 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.)
- Active
Links
Images
Abstract
本发明提供一种转发组播数据的方法和设备,在接收到用户指定任意源的报告报文时,如果在硬件子系统中存在相同组IP地址的映射关系,则将指定任意源的用户对应的端口添加到查询出的映射关系中;在接收到组播数据报文时,按照特定源组播模式进行匹配,并将组播数据报文从匹配成功的映射关系中各端口转发给对应的用户。应用本发明方案,由于将指定任意源的报告报文按照建立特定源映射关系的形式写入硬件子系统,从而实现既可以将组播数据报文转发给指定特定源的用户,也可以转发给指定任意源的用户,满足了不同用户的需求,有利于组播业务的进一步推广应用。
Description
技术领域
本发明涉及组播技术,特别是涉及一种转发组播数据的方法和装置。
背景技术
互联网组管理协议窥探(IGMP Snooping,Internet Group ManagementProtocol Snooping)是一种运行在二层网络设备的协议,主要用于管理和控制组播组。运行IGMP Snooping的二层网络设备可以对接收到的IGMP报文进行分析,为端口和组播地址建立起映射关系,然后根据建立的映射关系从端口转发组播数据。目前,IGMP的版本1和版本2可以支持转发由用户指定任意源的组播数据,即任意源(ASM,Any-Source)组播模式。而IGMP的版本3支持转发由用户指定特定源的组播数据,即特定源(SSM,Source-Specific Multicast)组播模式。另外,IGMP的版本3还可以兼容IGMP的版本1和版本2。
不管二层网络设备运行IGMP协议的哪个版本,通常都需要事先设定工作模式,并按照设定的模式进行工作。为了更好的说明上述几种模式,下面用一个简单的例子进行描述。图1是一个用于组播业务的网络结构示意图。如图1所示,假设服务器A~C是节目源,服务器A和C提供组G1的组播数据,服务器B提供组G2的组播数据;交换机D是转发组播数据的二层网络设备;用户E、F是接收组播节目的终端;交换机D的端口X1、X2分别对应用户E、F。
交换机D工作在特定源组播模式的情况下,如果用户E要求接收来源于服务器A的组G1的组播数据,则可以向交换机D发送携带有服务器A和组G1信息的报告(report)报文,服务器A和组G1信息可以用二元组(A,G1)表示,其中,A表示源IP地址,G1表示组IP地址。交换机D接收到用户E发送的report报文后,将在服务器A、组G1和端口X1之间建立映射关系1,即: (A,G1)->X1。同样,如果用户F要求接收来自服务器B的组G2的组播数据,交换机D将在服务器B、组G2和端口X2之间建立映射关系2,即:(B,G2)->X2。上述2条映射关系通常会写入交换机D自身专门负责地址匹配和数据转发的硬件子系统中。这样,当硬件子系统接收到某个数据报文时,可以按照建立的映射关系快速地进行地址匹配和数据转发。比如:交换机D接收到来自服务器A的组G1的数据报文时,其硬件子系统将数据报文中携带的二元组(A,G1)信息与上述保存的2条映射关系进行匹配,并在与映射关系1匹配成功时,将接收到的数据报文直接从该映射关系中对应的端口X1转发给用户E。
交换机D工作在任意源组播模式的情况下,如果用户E要求接收来自任意源的组G1的组播数据,则可以向交换机D发送携带组G1信息的report报文,任意源和组G1信息可以用二元组(*,G1)表示,其中,“*”表示任意源,“G1”表示组IP地址。交换机D接收到用户E发送的report报文后,将在组G1和端口X1之间建立映射关系1,即:(*,G1)->X1。同样,如果用户F要求接收来自任意源的组G2的组播数据,交换机D将在组G2和端口X2之间建立映射关系2,即:(*,G2)->X2。上述2条映射关系也会写入交换机D自身专门负责地址匹配和数据转发的硬件子系统中。这样,当硬件子系统接收到某个数据报文时,也可以按照建立的映射关系快速地进行地址匹配和数据转发。比如:交换机D接收到来自服务器A的组G1的数据报文,虽然数据报文中仍然携带有二元组(A,G1)信息,但由于硬件子系统工作在任意源组播模式下,将忽略对数据报文来源的匹配。即:硬件子系统仅将数据报文中二元组信息的G1与保存的2条映射关系进行匹配,并在与映射关系1匹配成功时,将接收到的数据报文直接从该映射关系中对应的端口X1转发给用户E。
上述是特定源组播模式和任意源组播模式的基本工作原理。需要注意的是,不管交换机D运行哪个协议版本,其硬件子系统通常是按照事先指定的模式工作。实际应用中,虽然某些硬件子系统可以兼容特定源组播模式和任意源组播模式,如Marvell公司的系列芯片PUMA/CH3/xCAT,但在一次匹配过程中仍 然按照其中一种模式去匹配建立的映射关系。比如:用户E要求接收来自任意源的组G1的组播数据,并向交换机D发送携带有组G1信息的report报文;用户F要求接收来自服务器A的组G1的组播数据,并向交换机D发送服务器A和组G1信息的report报文。在这种情况下,交换机D既会将组G1和端口X1这个映射关系写入硬件子系统,也会将服务器A、组G1和端口X2这个映射关系写入硬件子系统。假设硬件子系统此时已经保存有20个映射关系,其中映射关系1~10包括属于指定了特定源的映射关系,而映射关系11~20则属于指定任意源的映射关系。如果硬件子系统工作在特定源组播模式,那么在接收到来自服务器A的数据报文时,硬件子系统只匹配映射关系1~10,而不会匹配映射关系11~20。也就是说,如果工作在特定源组播模式,硬件子系统只能成功匹配到(A,G1)->X2这个映射关系,并将接收到的数据报文通过端口X2转发给用户F。此时,虽然用户E也要求接收组G1的组播数据,但由于硬件子系统并不会匹配映射关系11~20,也就不会匹配到(*,G1)->X1这个映射关系,从而不会通过端口X1向用户E转发数据报文。反之,如果工作在任意源组播模式,硬件子系统只能匹配到(*,G1)->X1这个映射关系,并通过端口X1向用户E转发数据报文,而不会转发给用户F。
当然,可兼容特定源组播模式和任意源组播模式的硬件子系统还可能会在某种情况下从一种工作模式转换为另一种工作模式,但不管在哪种情况下转换,如何转换,一旦确定其工作模式,硬件子系统就只能按照其确定的工作模式进行匹配。
而实际应用中,虽然存在不同用户要求接收相同组播数据的情况,但由于各用户指定的数据来源可能是特定源也可能是任意源,那么按照上述现有技术的方案,二层网络设备很难在确定的工作模式下同时满足多种用户的需要,不利于组播业务的推广应用。
发明内容
有鉴于此,本发明的第一个发明目的是提供一种转发组播数据的方法,在硬件子系统确定的工作模式下,既满足指定特定源的用户需求,又满足指定任意源的用户需求,有利于组播业务的推广应用。
本发明的第二个发明目的是提供一种转发组播数据的设备,在硬件子系统确定的工作模式下,既满足指定特定源的用户需求,又满足指定任意源的用户需求,有利于组播业务的推广应用。
为了达到上述第一个发明目的,本发明提出的技术方案为:
一种转发组播数据的方法,该方法包括以下步骤:
在接收到用户指定任意源的包括组IP地址的报告报文时,查询硬件子系统中是否存在与所述指定任意源的报告报文包含有相同组IP地址的映射关系,如果存在,则将所述指定任意源的用户所对应的端口添加到硬件子系统被查询出的所有映射关系中;
在接收到包括源IP地址和组IP地址的组播数据报文时,硬件子系统按照事先设置的特定源组播模式将组播数据报文中的源IP地址和组IP地址分别与映射关系中的源IP地址和组IP地址进行匹配,并将组播数据报文从匹配成功的映射关系中各端口转发给对应的用户。
上述方案中,该方法进一步包括:
在接收到用户指定特定源的包括源因特网协议IP地址和组IP地址的报告报文时,建立源IP地址、组IP地址以及与所述指定特定源的用户所对应的端口之间的映射关系,并将建立的映射关系写入硬件子系统。
上述方案中,在接收到用户指定任意源的包括组IP地址的报告报文时,该方法进一步包括:
判断是否建立了以所述指定任意源的报告报文中组IP地址为索引的端口集合,如果没有建立,则建立一个端口集合,并将所述指定任意源的用户所对应的端口记录在该端口集合中;否则,直接将所述指定任意源的用户所对应的端口添加到已建立的端口集合中。
上述方案中,在所述硬件子系统匹配不成功时,该方法进一步包括:
接收由硬件子系统上报的匹配不成功的组播数据报文,查询是否存在以匹配不成功的组播数据报文中组IP地址为索引的端口集合,如果存在,则根据所述匹配不成功的组播数据报文建立源IP地址、组IP地址以及以匹配不成功的组播数据报文中组IP地址为索引的端口集合之间的映射关系,并将建立的映射关系写入硬件子系统中;否则,丢弃上报的组播数据报文。
上述方案中,在接收到用户指定任意源的包括组IP地址的报告报文后,如果查询到硬件子系统中不存在与所述指定任意源的报告报文包含有相同组IP地址的映射关系,该方法进一步包括:
将所述建立的以指定任意源的报告报文中组IP地址为索引的端口集合标记为未处理的端口集合。
上述方案中,在所述标记未处理的端口集合后,当后续接收到用户指定特定源的包括源因特网协议IP地址和组IP地址的报告报文时,该方法进一步包括:
判断是否存在未处理的以指定特定源的报告报文中组IP地址为索引的端口集合,如果存在,则在所述建立源IP地址、组IP地址以及与指定特定源的用户所对应的端口之间的映射关系时,将未处理的以指定特定源的报告报文中组IP地址为索引的端口集合一并添加到建立的映射关系中。
为了达到上述第二个发明目的,本发明提出的技术方案为:
一种转发组播数据的设备,该设备包括:
收发单元,用于通过端口接收和发送设备自身与外部交互的报文;
硬件子系统,用于在通过收发单元接收到包括源IP地址和组IP地址的组播数据报文时,按照事先设置的特定源组播模式将组播数据报文中的源IP地址和组IP地址分别与映射关系中的源IP地址和组IP地址进行匹配,并将组播数据报文从匹配成功的映射关系中各端口转发给对应的用户;还用于将自身无法处理的报文透传给软件子系统处理;
软件子系统,在接收到用户指定任意源的包括组IP地址的报告报文时,查询硬件子系统中是否存在与所述指定任意源的报告报文包含有相同组IP地址的映射关系,如果存在,则将所述指定任意源的用户所对应的端口添加到硬件子系统被查询出的所有映射关系中。
上述方案中,所述软件子系统包括:
第一判别单元,用于在接收到用户指定任意源的包括组IP地址的报告报文时,查询硬件子系统中是否存在与所述指定任意源的报告报文包含有相同组IP地址的映射关系,如果存在,则将所述指定任意源的用户所对应的端口添加到硬件子系统被查询出的所有映射关系中。
上述方案中,所述软件子系统还包括:
第一处理单元,用于在接收到用户指定特定源的包括源因特网协议IP地址和组IP地址的报告报文时,建立源IP地址、组IP地址以及与所述指定特定源的用户所对应的端口之间的映射关系,并将建立的映射关系写入硬件子系统。
上述方案中,所述软件子系统进一步包括:
存储单元,用于保存建立的端口集合;
第二判断单元,用于在接收到用户指定任意源的包括组IP地址的报告报文时,判断存储单元中是否建立了以所述指定任意源的报告报文中组IP地址为索引的端口集合,如果没有建立,则建立一个端口集合,并将所述指定任意源的用户所对应的端口记录在该端口集合中;否则,直接在存储单元中将所述指定任意源的用户所对应的端口添加到已建立的端口集合中;
所述第一处理单元还用于:接收由硬件子系统上报的匹配不成功的组播数据报文,查询存储单元是否存在以匹配不成功的组播数据报文中组IP地址为索引的端口集合,如果存在,则根据所述匹配不成功的组播数据报文建立源IP地址、组IP地址以及以匹配不成功的组播数据报文中组IP地址为索引的端口集合之间的映射关系,并将建立的映射关系写入硬件子系统中;否则,丢弃上报的组播数据报文。
上述方案中,
所述第一判别单元还用于:在接收到用户指定任意源的包括组IP地址的报告报文后,如果查询到硬件子系统中不存在与所述指定任意源的报告报文包含有相同组IP地址的映射关系,则将所述建立的以指定任意源的报告报文中组IP地址为索引的端口集合标记为未处理的端口集合;
所述第一处理单元进一步用于:在接收到用户指定特定源的包括源因特网协议IP地址和组IP地址的报告报文时,判断存储单元是否存在未处理的以指定特定源的报告报文中组IP地址为索引的端口集合,如果存在,则在建立所述源IP地址、组IP地址以及与指定特定源的用户所对应的端口之间的映射关系时,将未处理的以指定特定源的报告报文中组IP地址为索引的端口集合一并添加到建立的映射关系中。
综上所述,本发明提出一种转发组播数据的方法和设备,由于将指定任意源的报告报文按照建立特定源映射关系的形式写入硬件子系统,从而实现即可以将组播数据报文转发给指定特定源的用户,也可以转发给指定任意源的用户,满足了不同用户的需求,有利于组播业务的进一步推广应用。
附图说明
图1是利用现有技术方案用于组播业务的网络结构示意图。
图2是本发明方法实施例中用于组播业务的网络结构示意图。
图3是本发明方法实施例一的流程图。
图4是本发明方法实施例二的流程图。
图5是本发明方法实施例三的流程图。
图6是实现本发明方案的设备结构示意图。
图7是实现本发明方案的设备中软件子系统内部结构的一个实施例。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
本发明的技术方案是:在接收到用户指定任意源的包括组IP地址的报告报文时,查询硬件子系统中是否存在与所述指定任意源的报告报文包含有相同组IP地址的映射关系,如果存在,则将所述指定任意源的用户所对应 的端口添加到硬件子系统被查询出的所有映射关系中;在接收到包括源IP地址和组IP地址的组播数据报文时,硬件子系统按照事先设置的特定源组播模式将组播数据报文中的源IP地址和组IP地址分别与映射关系中的源IP地址和组IP地址进行匹配,并将组播数据报文从匹配成功的映射关系中各端口转发给对应的用户。
也就是说,本发明的硬件子系统按照特定源组播模式进行工作。那么,为了同时满足指定从特定源和从任意源接收组播数据的不同用户需求,本发明在接收到用户指定任意源的包括组IP地址的报告报文时,并不像现有技术一样建立指定任意源的映射关系,而是将其转化为指定特定源的映射关系保存在硬件子系统中。这样,建立的映射关系中的端口可能是指定特定源的用户对应的端口,也可能是指定任意源的用户对应的端口,还可能既包括指定特定源的用户对应的端口,又包括指定任意源的用户对应的端口。那么,在硬件子系统接收到组播数据报文并匹配成功时,只需要按照特定源组播模式匹配映射关系,就可以达到在确定的工作模式下同时满足多种用户需求的目的。
实际应用中,同样组播组的数据可以由不同的源提供,比如:若干服务器提供某一个相同的组播节目。在这种情况下,如果硬件子系统中并没有建立针对其中某个服务器的映射关系,那么在接收到该服务器提供的组播数据报文时,将无法与自身已经建立的任何映射关系匹配上。针对上述情况,本发明可以进一步考察匹配不成功的组播数据是否是指定任意源的用户要求接收的数据,如果是,则可以建立相应的映射关系,并将所有指定从任意源接收该组播数据的用户对应的端口添加到映射关系中。当然,为了准确添加用户对应的端口,可以先将指定任意源的用户记录下来,其方法具体为:
在接收到用户指定任意源的包括组IP地址的报告报文时,可以判断是否建立了以所述指定任意源的报告报文中组IP地址为索引的端口集合,如果没有建立,则建立一个并将所述指定任意源的用户所对应的端口记录在该端口集合中;否则,直接将所述指定任意源的用户所对应的端口添加到已建 立的端口集合中。相应地,在所述硬件子系统匹配不成功时,该方法进一步包括:接收由硬件子系统上报的匹配不成功的组播数据报文,查询是否存在以匹配不成功的组播数据报文中组IP地址为索引的端口集合,如果存在,则根据所述匹配不成功的组播数据报文建立源IP地址、组IP地址以及以匹配不成功的组播数据报文中组IP地址为索引的端口集合之间的映射关系,并将建立的映射关系写入硬件子系统中;否则,丢弃上报的组播数据报文。
也就是说,指定任意源的用户对应的端口不但可以添加到已有的特定源的映射关系中,然后根据硬件子系统中已有的映射关系接收组播数据,还可以创建新的映射关系,根据新创建的映射关系来接收组播数据,从而可以更好的满足用户从任意源接收组播数据的需求。当然,如果网络中并没有多个提供相同组播数据的源,或者提供相同组播数据的源在硬件子系统中都存在相应的映射关系,那么,就不会存在接收到组播数据报文无法匹配的情况,针对该情况的优化方法就可以相应省略。
另外,在接收到用户指定任意源的包括组IP地址的报告报文后,如果查询到硬件子系统中不存在与所述指定任意源的报告报文包含有相同组IP地址的映射关系,该方法进一步包括:将建立的以指定任意源的报告报文中组IP地址为索引的端口集合标记为未处理的端口集合。这样,虽然没有能够及时将端口集合中的端口添加到硬件子系统中,但如果后续在硬件子系统中创建了与之符合的映射关系,可以再将其添加到硬件子系统中。其方法具体为:
在接收到用户指定特定源的包括源因特网协议IP地址和组IP地址的报告报文时,判断是否存在未处理的以指定特定源的报告报文中组IP地址为索引的端口集合,如果存在,则在建立所述源IP地址、组IP地址以及与指定特定源的用户所对应的端口之间的映射关系时,将未处理的以指定特定源的报告报文中组IP地址为索引的端口集合一并添加到建立的映射关系中。这里,在接收到用户指定特定源的包括源因特网协议IP地址和组IP地址的报告报文时,建立所述源IP地址、组IP地址以及与指定特定源的用户所对 应的端口之间的映射关系,并写入硬件子系统属于现有技术,只是在本发明实施例中,可以将未处理的以指定特定源的报告报文中组IP地址为索引的端口集合一并添加到建立的映射关系中。
为了更好地说明本发明方案,下面用实施例进行详细描述。
方法实施例一
假设本实施例实现组播业务的网络结构示意图如图2所示。其中,服务器A~D是节目源,服务器A、C、D提供组G1的组播数据,服务器B提供组G2的组播数据;交换机E是转发组播数据的二层网络设备,假设其硬件子系统为Marvell公司的系列芯片PUMA/CH3/xCAT中的一种,并将其设置为特定源组播模式;用户F、H、I、J是接收组播节目的终端;交换机E的端口X1~X4分别对应用户F、H、I和J。
另外,为了描述方便,本实施例假设用户F先要求从服务器A接收组播组G1的组播数据,用户H要求从服务器C接收组播组G1的组播数据,用户I再要求从任意源接收组播组G1的组播数据,然后交换机E接收到服务器C提供的组播组G1的组播数据。
图3是本实施例的流程图。如图3所示,本实施例包括以下步骤:
步骤301:用户F向交换机E发送指定特定源的report报文,所述report报文携带有源IP地址和组IP地址,其中源IP地址为服务器A的IP地址,所述组IP地址为组播组G1的组IP地址。
本步骤表示用户F要求接收来自服务器A的组G1的组播数据。
步骤302:交换机E建立源IP地址、组IP地址以及与用户F所对应的端口之间的映射关系,并将建立的映射关系写入硬件子系统。
本步骤中,假设在硬件子系统中建立的映射关系如表一所示:
序号 | 映射关系 |
… | … |
10 | (A,G1)->X1 |
[0067]
… | … |
表一
步骤303:用户H向交换机E发送指定特定源的report报文,所述report报文携带有源IP地址和组IP地址,其中源IP地址为服务器C的IP地址,所述组IP地址为组播组G1的组IP地址。
本步骤表示用户F要求接收来自服务器C的组G1的组播数据。
步骤304:交换机E建立源IP地址、组IP地址以及与用户H所对应的端口之间的映射关系,并将建立的映射关系写入硬件子系统。
本步骤中,假设在硬件子系统中建立的映射关系如表二所示:
序号 | 映射关系 |
… | … |
10 | (A,G1)->X1 |
11 | (C,G1)->X2 |
… | … |
表二
步骤305:用户I向交换机E发送指定任意源的report报文,report报文携带有组IP地址,所述组IP地址为组播组G1的组IP地址。
本步骤表示用户I要求接收来自任意一个服务器的组G1的组播数据。
步骤306:交换机E查询硬件子系统中保存的映射关系,在查询出包含组播组G1的组IP地址的映射关系时,将用户I所对应的端口添加到硬件子系统被查询出的所有映射关系中。
本步骤中,交换机E查询到表二中第10条和第11条映射关系都是包含组播组G1的组IP地址的映射关系,将用户I对应的端口X3添加到这两条映射关系中。此时,硬件子系统中的映射关系如表三所示:
序号 | 映射关系 |
… | … |
[0080]
10 | (A,G1)->X1、X3 |
11 | (C,G1)->X2、X3 |
… | … |
表三
上述步骤301~步骤306是本实施例建立映射关系的过程,而实际应用中,用户在何时发送何种report报文是不确定的,与实际情况相关,建立的映射关系也可能与表三是不同的。但不管实际情况如何,只要按照本发明方案就可以建立类似的映射关系即可。另外,本实施例中所建立的表项在实际应用中也可能还包括其它信息,比如VLAN等信息,此处不再赘述。
步骤307:交换机E接收到包括源IP地址和组IP地址的组播数据报文,所述源IP地址为服务器C的IP地址,所述组IP地址为组播组G1的组IP地址。
步骤308:交换机E中的硬件子系统将组播数据报文中的源IP地址和组IP地址分别与映射关系中的源IP地址和组IP地址进行匹配,并将组播数据报文从匹配成功的映射关系中各端口转发给对应的用户。
本步骤中,由于组播数据报文中的源IP地址为服务器C的IP地址,组IP地址为组播组G1的组IP地址,那么与之匹配的映射关系应该为表三的第11条映射关系,硬件子系统就应该将组播数据报文从该映射关系中的端口X2和端口X3分别转发给用户H和用户I。其中,用户H是要求从特定源接收组播数据的用户,而用户I是要求从任意源接收组播数据的用户,但都在硬件子系统工作在特定源组播模式下获得了组G1的组播数据。
应用本实施例方案,在不对硬件子系统进行任何改变的情况下,由于将指定任意源的报告报文按照建立特定源映射关系的形式写入硬件子系统,从而实现即可以将组播数据报文转发给指定特定源的用户,也可以转发给指定任意源的用户,满足了不同用户的需求,有利于组播业务的进一步推广应用。
方法实施例二
方法实施例一的方案是不考虑接收到的组播数据报文无法与自身保存 的任何映射关系匹配的情况,但如果某个服务器也可以提供相同的组播数据,而之前并没有任何用户要求从该服务器接收其组播数据,硬件子系统也就可能没有将包括该服务器IP地址的映射关系记录下来,造成匹配不成功的情况,从而无法很好地满足指定任意源用户的需求。
另外,本实施例的网络结构示意图仍然如图二所示,还假设用户F先要求从服务器A接收组播组G1的组播数据,用户H要求从服务器C接收组播组G1的组播数据,用户I再要求从任意源接收组播组G1的组播数据,然后交换机E接收到服务器D提供的组播组G1的组播数据。
在上述这种情况下,转发组播数据方法的第二个实施例流程可以如图4所示,包括:
步骤401:用户F向交换机E发送指定特定源的report报文,所述report报文携带有源IP地址和组IP地址,其中源IP地址为服务器A的IP地址,所述组IP地址为组播组G1的组IP地址。
步骤402:交换机E建立源IP地址、组IP地址以及与用户F所对应的端口之间的映射关系,并将建立的映射关系写入硬件子系统。
步骤403:用户H向交换机E发送指定特定源的report报文,所述report报文携带有源IP地址和组IP地址,其中源IP地址为服务器C的IP地址,所述组IP地址为组播组G1的组IP地址。
步骤404:交换机E建立源IP地址、组IP地址以及与用户H所对应的端口之间的映射关系,并将建立的映射关系写入硬件子系统。
步骤405:用户I向交换机E发送指定任意源的report报文,report报文携带有组IP地址,所述组IP地址为组播组G1的组IP地址。
上述步骤401~405与步骤301~305相同,此处不再赘述。
步骤406:交换机E确定当前未建立组播组G1的组IP地址为索引的端口集合,建立一个并将用户I对应的端口X3记录在该端口集合中。
本步骤中,建立的端口集合可以表示为:G1:{X3}。当然,实际应用中如果已经建立,则直接在端口集合中添加端口即可。
步骤407:交换机E查询硬件子系统中保存的映射关系,在查询出包含组播组G1的组IP地址的映射关系时,将用户I所对应的端口添加到硬件子系统被查询出的所有映射关系中。
本步骤执行后,硬件子系统中的映射关系与表三相同,此处不再赘述。
步骤408:交换机E接收到包括源IP地址和组IP地址的组播数据报文,所述源IP地址为服务器D的IP地址,所述组IP地址为组播组G1的组IP地址。
步骤409:交换机E中的硬件子系统将组播数据报文中的源IP地址和组IP地址分别与映射关系中的源IP地址和组IP地址进行匹配,确定匹配不成功后上报接收到的组播数据报文。
实际应用中,如果硬件子系统匹配成功,则可以直接从对应的端口转发组播数据报文,如果匹配不成功,则需要上报给交换机E的软件子系统处理。这里所述的软件子系统是交换机除专门用于数据转发的硬件子系统的其它部分,由于硬件子系统通常是固定的芯片,无法对其进行更改,而其它部分可以由设备厂商通过软件编程处理,故在本实施例中称为软件子系统。
步骤410:交换机E查询到当前存在以匹配不成功的组播数据报文中组IP地址为索引的端口集合,则根据匹配不成功的组播数据报文建立源IP地址、组IP地址以及以匹配不成功的组播数据报文中组IP地址为索引的端口集合之间的映射关系,并将建立的映射关系写入硬件子系统中。
本实施例中,由于匹配不成功的组播数据报文是来自服务器D的组G1的数据报文,其组IP地址为组播组G1的组IP地址,那么,交换机E经过查询,可以确定在步骤406中建立了以组播组G1的组IP地址为索引的端口集合G1:{X3},于是建立映射关系(D,G1)->X3,并写入硬件子系统中。此时,硬件子系统中的映射关系可以如表四所示:
序号 | 映射关系 |
… | … |
[0107]
10 | (A,G1)->X1、X3 |
11 | (C,G1)->X2、X3 |
12 | (D,G1)->X3 |
… | … |
表四
通过组播数据报文建立映射关系之后,用户I后续不但可以从服务器A和C接收组播组G1的组播数据报文,还可以从服务器D来接收,更好地满足了用户I作为指定任意源的用户需求。
步骤411:交换机E接收到包括源IP地址和组IP地址的组播数据报文,所述源IP地址为服务器D的IP地址,所述组IP地址为组播组G1的组IP地址。
步骤412:交换机E中的硬件子系统将组播数据报文中的源IP地址和组IP地址分别与映射关系中的源IP地址和组IP地址进行匹配,并将组播数据报文从匹配成功的映射关系中各端口转发给对应的用户。
本步骤中,由于组播数据报文中的源IP地址为服务器D的IP地址,组IP地址为组播组G1的组IP地址,那么与之匹配的映射关系应该为表四第12条映射关系,硬件子系统就应该将组播数据报文从该映射关系中的端口X3转发给用户I。当然,本实施例还可以接收到其它服务器的组播数据报文,并按照匹配的映射关系进行转发,其情况如步骤307和308,此处不再赘述。
方法实施例三
上述实施例一和实施例二没有考虑在接收到用户指定任意源的报告报文后,在硬件子系统中查询不到与所述指定任意源的报告报文包含有相同组IP地址的映射关系的情况。实际应用中,如果存在上述情况,其转发组播数据方法则可以利用实施例三实现。
另外,实施例三的网络结构示意图仍然如图2所示,还假设用户F先要求从服务器A接收组播组G1的组播数据,用户J要求从任意源接收组播组G2的组播数据,用户H再要求从服务器B接收组播组G2的组播数据,然 后交换机E接收到来自服务器B提供组播组G2的组播数据。
本实施例实现组播数据转发的流程图如图5所示,包括:
步骤501:用户F向交换机E发送指定特定源的report报文,所述report报文携带有源IP地址和组IP地址,其中源IP地址为服务器A的IP地址,所述组IP地址为组播组G1的组IP地址。
步骤502:交换机E建立源IP地址、组IP地址以及与用户F所对应的端口之间的映射关系,并将建立的映射关系写入硬件子系统。
上述步骤501~502与步骤301~302相同,建立的映射关系如表一所示,此处不再赘述。
步骤503:用户J向交换机E发送指定任意源的report报文,report报文携带有组IP地址,所述组IP地址为组播组G2的组IP地址。
本步骤表示用户J要求接收来自任意一个服务器的组G2的组播数据。
步骤504:交换机E确定当前未建立组播组G2的组IP地址为索引的端口集合,建立一个并将用户J对应的端口X4记录在该端口集合中,然后将该端口集合标记为未处理的端口集合。
本步骤中,建立的端口集合可以表示为:G2:{X4},并将该端口集合标记为未处理的端口集合。至于如何标记,是本领域技术人员比较容易实现的,此处不再赘述。
步骤505:交换机E查询硬件子系统中保存的映射关系,查询出其中不包含组播组G2的组IP地址的映射关系,则继续执行步骤506。
实际应用中,如果硬件子系统包含组播组G2的组IP地址的映射关系,则可以如步骤306一样处理,将指定任意源的用户所对应的端口添加到被查询出的所有映射关系中。
步骤506:用户H向交换机E发送指定特定源的report报文,所述report报文携带有源IP地址和组IP地址,其中源IP地址为服务器B的IP地址,所述组IP地址为组播组G2的组IP地址。
本步骤表示用户H要求接收来自服务器B的组G2的组播数据。
步骤507:交换机E判断出当前存在未处理的以指定特定源的report报文中组IP地址为索引的端口集合,建立所述源IP地址、组IP地址以及与指定特定源的用户所对应的端口之间的映射关系,并将未处理的以指定特定源的报告报文中组IP地址为索引的端口集合一并添加到建立的映射关系中。
本步骤中,如果仅根据步骤506接收到的report报文建立映射关系,该映射关系应该为:(B,G2)->X2,但当前还存在未处理的端口集合G2:{X4},那么,还需要将该端口集合添加到映射关系中,即:(B,G2)->X2、X4。此时,写入硬件子系统的映射关系可以用表五表示:
序号 | 映射关系 |
… | … |
10 | (A,G1)->X1 |
11 | (B,G2)->X2、X4 |
… | … |
表五
步骤508:交换机E接收到包括源IP地址和组IP地址的组播数据报文,所述源IP地址为服务器B的IP地址,所述组IP地址为组播组G2的组IP地址。
步骤509:交换机E中的硬件子系统将组播数据报文中的源IP地址和组IP地址分别与映射关系中的源IP地址和组IP地址进行匹配,并将组播数据报文从匹配成功的映射关系中各端口转发给对应的用户。
本步骤中,由于组播数据报文中的源IP地址为服务器B的IP地址,组IP地址为组播组G2的组IP地址,那么与之匹配的映射关系应该为表五中第11条映射关系,硬件子系统应该将组播数据报文从该映射关系的端口X2和端口X4分别转发给用户H和用户J。其中,用户H是要求从特定源接收组播数据的用户,而用户J是要求从任意源接收组播数据的用户。
针对上述方法,本发明还提供一种转发组播数据的设备。本发明提供的设备如图6所示,包括:
收发单元601,用于通过端口接收和发送设备自身与外部交互的报文。
硬件子系统602,用于在接收到包括源IP地址和组IP地址的组播数据报文时,按照事先设置的特定源组播模式将组播数据报文中的源IP地址和组IP地址分别与映射关系中的源IP地址和组IP地址进行匹配,并将组播数据报文从匹配成功的映射关系中各端口转发给对应的用户;还用于将自身无法处理的报文转发给软件子系统603处理。
软件子系统603,用于在接收到用户指定特定源的包括源因特网协议IP地址和组IP地址的报告报文时,建立源IP地址、组IP地址以及与所述指定特定源的用户所对应的端口之间的映射关系,并将建立的映射关系写入硬件子系统602;在接收到用户指定任意源的包括组IP地址的报告报文时,查询硬件子系统中是否存在与所述指定任意源的报告报文包含有相同组IP地址的映射关系,如果存在,则将所述指定任意源的用户所对应的端口添加到硬件子系统602被查询出的所有映射关系中。
如图7所示,软件子系统603可以包括:
第一处理单元6031,用于在接收到用户指定特定源的包括源因特网协议IP地址和组IP地址的报告报文时,建立源IP地址、组IP地址以及与所述指定特定源的用户所对应的端口之间的映射关系,并将建立的映射关系写入硬件子系统602。
第一判别单元6032,用于在接收到用户指定任意源的包括组IP地址的报告报文时,查询硬件子系统中是否存在与所述指定任意源的报告报文包含有相同组IP地址的映射关系,如果存在,则将所述指定任意源的用户所对应的端口添加到硬件子系统被查询出的所有映射关系中。
实际应用中,同样组播组的数据可以由不同的源提供,比如:若干服务器提供某一个相同的组播节目。在这种情况下,如果硬件子系统602中并没有建立针对其中某个服务器的映射关系,那么在接收到该服务器提供的组播数据报文时,将无法与自身已经建立的任何映射关系匹配上。
针对上述情况,所述软件子系统603还可以包括:
存储单元6033,用于保存建立的端口集合。
第二判别单元6034,用于在接收到用户指定任意源的包括组IP地址的报告报文时,判断存储单元6033中是否建立了以所述指定任意源的报告报文中组IP地址为索引的端口集合,如果没有建立,则建立一个并将所述指定任意源的用户所对应的端口记录在该端口集合中;否则,直接在存储单元6033中将所述指定任意源的用户所对应的端口添加到已建立的端口集合中。
相应地,所述第一处理单元6031还进一步用于:
接收由硬件子系统602上报的匹配不成功的组播数据报文,查询存储单元6033是否存在以匹配不成功的组播数据报文中组IP地址为索引的端口集合,如果存在,则根据所述匹配不成功的组播数据报文建立源IP地址、组IP地址以及以匹配不成功的组播数据报文中组IP地址为索引的端口集合之间的映射关系,并将建立的映射关系写入硬件子系统602中;否则,丢弃上报的组播数据报文。
实际应用中,在第一判断单元6032接收到用户指定任意源的包括组IP地址的报告报文后,如果查询到硬件子系统602不存在与所述指定任意源的报告报文包含有相同组IP地址的映射关系,则还可以先将建立的以指定任意源的报告报文中组IP地址为索引的端口集合标记为未处理的端口集合。这样,虽然没有能够及时将端口集合中的端口添加到硬件子系统中,但如果后续在硬件子系统中创建了与之符合的映射关系,可以再将其添加到硬件子系统中。
在上述情况下,所述第一判别单元6032进一步用于:
在接收到用户指定任意源的包括组IP地址的报告报文后,如果查询到硬件子系统中不存在与所述指定任意源的报告报文包含有相同组IP地址的映射关系,则将所述建立的以指定任意源的报告报文中组IP地址为索引的端口集合标记为未处理的端口集合。
相应地,所述第一处理单元6031进一步用于:在接收到用户指定特定源的包括源因特网协议IP地址和组IP地址的报告报文时,判断存储单元是 否存在未处理的以指定特定源的报告报文中组IP地址为索引的端口集合,如果存在,则在建立所述源IP地址、组IP地址以及与指定特定源的用户所对应的端口之间的映射关系时,将未处理的以指定特定源的报告报文中组IP地址为索引的端口集合一并添加到建立的映射关系中。
应用本发明方案,在不对硬件子系统进行任何改变的情况下,由于将指定任意源的报告报文按照建立特定源映射关系的形式写入硬件子系统,从而实现即可以将组播数据报文转发给指定特定源的用户,也可以转发给指定任意源的用户,满足了不同用户的需求,有利于组播业务的进一步推广应用。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种转发组播数据的方法,其特征在于,该方法包括以下步骤:
在接收到用户指定任意源的包括组IP地址的报告报文时,查询硬件子系统中是否存在与所述指定任意源的报告报文包含有相同组IP地址的映射关系,如果存在,则将所述指定任意源的用户所对应的端口添加到硬件子系统被查询出的所有映射关系中;
在接收到包括源IP地址和组IP地址的组播数据报文时,硬件子系统按照事先设置的特定源组播模式将组播数据报文中的源IP地址和组IP地址分别与映射关系中的源IP地址和组IP地址进行匹配,并将组播数据报文从匹配成功的映射关系中各端口转发给对应的用户。
2.根据权利要求1所述的方法,其特征在于,该方法进一步包括:
在接收到用户指定特定源的包括源因特网协议IP地址和组IP地址的报告报文时,建立源IP地址、组IP地址以及与所述指定特定源的用户所对应的端口之间的映射关系,并将建立的映射关系写入硬件子系统。
3.根据权利要求2所述的方法,其特征在于,在接收到用户指定任意源的包括组IP地址的报告报文时,该方法进一步包括:
判断是否建立了以所述指定任意源的报告报文中组IP地址为索引的端口集合,如果没有建立,则建立一个端口集合,并将所述指定任意源的用户所对应的端口记录在该端口集合中;否则,直接将所述指定任意源的用户所对应的端口添加到已建立的端口集合中。
4.根据权利要求3所述的方法,其特征在于,在所述硬件子系统匹配不成功时,该方法进一步包括:
接收由硬件子系统上报的匹配不成功的组播数据报文,查询是否存在以匹配不成功的组播数据报文中组IP地址为索引的端口集合,如果存在,则根据所述匹配不成功的组播数据报文建立源IP地址、组IP地址以及以匹配不成功的组播数据报文中组IP地址为索引的端口集合之间的映射关系,并将建立的映射关系写入硬件子系统中;否则,丢弃上报的组播数据报文。
5.根据权利要求3所述的方法,其特征在于,在接收到用户指定任意源的包括组IP地址的报告报文后,如果查询到硬件子系统中不存在与所述指定任意源的报告报文包含有相同组IP地址的映射关系,该方法进一步包括:
将所述建立的以指定任意源的报告报文中组IP地址为索引的端口集合标记为未处理的端口集合。
6.根据权利要求5所述的方法,其特征在于,在所述标记未处理的端口集合后,当后续接收到用户指定特定源的包括源因特网协议IP地址和组IP地址的报告报文时,该方法进一步包括:
判断是否存在未处理的以指定特定源的报告报文中组IP地址为索引的端口集合,如果存在,则在所述建立源IP地址、组IP地址以及与指定特定源的用户所对应的端口之间的映射关系时,将未处理的以指定特定源的报告报文中组IP地址为索引的端口集合一并添加到建立的映射关系中。
7.一种转发组播数据的设备,其特征在于,该设备包括:
收发单元,用于通过端口接收和发送设备自身与外部交互的报文;
硬件子系统,用于在通过收发单元接收到包括源IP地址和组IP地址的组播数据报文时,按照事先设置的特定源组播模式将组播数据报文中的源IP地址和组IP地址分别与映射关系中的源IP地址和组IP地址进行匹配,并将组播数据报文从匹配成功的映射关系中各端口转发给对应的用户;还用于将自身无法处理的报文透传给软件子系统处理;
软件子系统,在接收到用户指定任意源的包括组IP地址的报告报文时,查询硬件子系统中是否存在与所述指定任意源的报告报文包含有相同组IP地址的映射关系,如果存在,则将所述指定任意源的用户所对应的端口添加到硬件子系统被查询出的所有映射关系中。
8.根据权利要求7所述的设备,其特征在于,所述软件子系统包括:
第一判别单元,用于在接收到用户指定任意源的包括组IP地址的报告报文时,查询硬件子系统中是否存在与所述指定任意源的报告报文包含有相同组IP地址的映射关系,如果存在,则将所述指定任意源的用户所对应的端口添加到硬件子系统被查询出的所有映射关系中。
9.根据权利要求8所述的设备,其特征在于,所述软件子系统还包括:
第一处理单元,用于在接收到用户指定特定源的包括源因特网协议IP地址和组IP地址的报告报文时,建立源IP地址、组IP地址以及与所述指定特定源的用户所对应的端口之间的映射关系,并将建立的映射关系写入硬件子系统。
10.根据权利要求9所述的设备,其特征在于,所述软件子系统进一步包括:
存储单元,用于保存建立的端口集合;
第二判断单元,用于在接收到用户指定任意源的包括组IP地址的报告报文时,判断存储单元中是否建立了以所述指定任意源的报告报文中组IP地址为索引的端口集合,如果没有建立,则建立一个端口集合,并将所述指定任意源的用户所对应的端口记录在该端口集合中;否则,直接在存储单元中将所述指定任意源的用户所对应的端口添加到已建立的端口集合中;
所述第一处理单元还用于:接收由硬件子系统上报的匹配不成功的组播数据报文,查询存储单元是否存在以匹配不成功的组播数据报文中组IP地址为索引的端口集合,如果存在,则根据所述匹配不成功的组播数据报文建立源IP地址、组IP地址以及以匹配不成功的组播数据报文中组IP地址为索引的端口集合之间的映射关系,并将建立的映射关系写入硬件子系统中;否则,丢弃上报的组播数据报文。
11.根据权利要求10所述的设备,其特征在于,
所述第一判别单元还用于:在接收到用户指定任意源的包括组IP地址的报告报文后,如果查询到硬件子系统中不存在与所述指定任意源的报告报文包含有相同组IP地址的映射关系,则将所述建立的以指定任意源的报告报文中组IP地址为索引的端口集合标记为未处理的端口集合;
所述第一处理单元进一步用于:在接收到用户指定特定源的包括源因特网协议IP地址和组IP地址的报告报文时,判断存储单元是否存在未处理的以指定特定源的报告报文中组IP地址为索引的端口集合,如果存在,则在建立所述源IP地址、组IP地址以及与指定特定源的用户所对应的端口之间的映射关系时,将未处理的以指定特定源的报告报文中组IP地址为索引的端口集合一并添加到建立的映射关系中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100765375A CN101459620B (zh) | 2009-01-06 | 2009-01-06 | 一种转发组播数据的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100765375A CN101459620B (zh) | 2009-01-06 | 2009-01-06 | 一种转发组播数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101459620A CN101459620A (zh) | 2009-06-17 |
CN101459620B true CN101459620B (zh) | 2011-01-19 |
Family
ID=40770257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100765375A Active CN101459620B (zh) | 2009-01-06 | 2009-01-06 | 一种转发组播数据的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101459620B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101827037A (zh) * | 2010-05-20 | 2010-09-08 | 中兴通讯股份有限公司 | 组播数据流的发送方法、装置和二层交换设备 |
CN102761474A (zh) * | 2011-04-28 | 2012-10-31 | 华为技术有限公司 | 一种报文的过滤方法和接入设备 |
CN102724049B (zh) * | 2012-07-02 | 2015-07-08 | 上海市共进通信技术有限公司 | 跨硬件平台兼容的无源光网络设备组播功能实现方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1188272B1 (en) * | 1999-06-02 | 2004-08-04 | Nortel Networks Limited | Method for engineering paths for multicast traffic |
CN1586053A (zh) * | 2001-11-13 | 2005-02-23 | 诺基亚公司 | 多路接入网络中的物理分区组播 |
CN1881931A (zh) * | 2005-06-13 | 2006-12-20 | 中兴通讯股份有限公司 | 组播转发路由聚合方法 |
-
2009
- 2009-01-06 CN CN2009100765375A patent/CN101459620B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1188272B1 (en) * | 1999-06-02 | 2004-08-04 | Nortel Networks Limited | Method for engineering paths for multicast traffic |
CN1586053A (zh) * | 2001-11-13 | 2005-02-23 | 诺基亚公司 | 多路接入网络中的物理分区组播 |
CN1881931A (zh) * | 2005-06-13 | 2006-12-20 | 中兴通讯股份有限公司 | 组播转发路由聚合方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101459620A (zh) | 2009-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100463447C (zh) | 控制组播数据转发的交换设备及方法 | |
CN101521927B (zh) | 一种组播转发路径收敛的方法和系统 | |
CN102057623A (zh) | 用于获得终端状态的网络设备和方法 | |
CN105897444B (zh) | 一种组播组的管理方法和装置 | |
CN100456684C (zh) | 一种组播业务的实现方法和网络设备 | |
CN102938794A (zh) | 地址解析协议arp消息转发方法、交换机和控制器 | |
CN102067525B (zh) | 用于发现对等覆盖网络的方法和装置 | |
US20050195817A1 (en) | Switching device and multicast packet processing method therefor | |
CN102647355A (zh) | Lacp协商处理方法、中继节点及系统 | |
WO2022262465A1 (zh) | 基于opc ua的时间敏感网络集中用户配置方法及系统 | |
CN100558109C (zh) | 基于会话初始协议的负载均衡实现方法及系统 | |
CN101079728B (zh) | 一种优化组管理协议的方法、服务器及系统 | |
CN101110730A (zh) | 基于网际分组管理协议第三版的以太网组播实现方法 | |
CN102638453A (zh) | 一种基于Linux系统服务器的语音数据内核转发方法 | |
CN102474425A (zh) | 对于具有多播能力的路由器上的轻主机管理协议的方法和装置 | |
CN102739542B (zh) | 一种组播报文传输方法及装置 | |
CN101459620B (zh) | 一种转发组播数据的方法和装置 | |
EP2765741B1 (en) | Download method and system by way of broadcast in ubiquitous network | |
CN104168338A (zh) | 一种网络地址转换装置和方法 | |
CN101312400B (zh) | 四以太网口调制解调器设备上实现igmp侦听功能的方法 | |
CN102355358B (zh) | 一种组播实现的方法和设备 | |
WO2018019305A1 (zh) | 控制组播接入的方法及系统、云桌面、云终端 | |
CN103023668B (zh) | 一种发现并控制嵌入式入网设备的方法、装置及系统 | |
CN102594941B (zh) | 楼宇对讲系统中设备接入和设备通信的方法 | |
US10938591B2 (en) | Multicast system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |