一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

报文转发的方法、设备以及系统与流程

2022-02-22 07:39:53 来源:中国专利 TAG:

报文转发的方法、设备以及系统
1.本技术要求于2020年7月14日提交中国专利局、申请号为202010671831.7、发明名称为“一种组播转发方法、设备及系统”的中国专利申请的优先权,其全部内容通过引用结合在本技术中。
技术领域
2.本技术涉及网络通信领域,并且更具体地,涉及一种报文转发的方法、设备以及系统。


背景技术:

3.组播(multicast)是一种通过使用一个组播地址将数据在同一时间以高效的方式发往处于传输控制协议(transmission control protocol,tcp)/互联网协议(internet protocol,ip)网络上的多个接收者的数据传输方式。组播源经由网络中的链路向组播组中的组播组成员发送组播流,该组播组中的组播组成员均可以接收到该组播流。组播传输方式实现了组播源和组播组成员之间的点对多点的数据连接。由于组播流在每条网络链路上只需传递一次,且只有在链路出现支路时,该组播才会被复制。因此,组播传输方式提高了数据传输效率和减少了骨干网络出现拥塞的可能性。
4.ip组播技术以组播组地址作为报文的目的地址,使用独立多播协议(protocal independent multicast,pim)信令建立组播转发树。并利用组播转发树将网络平面逻辑树状,以实现组播点到多点的数据转发。这种以构建组播转发树的ip组播技术可以实现ip网络中点到多点的高效数据传送,能够有效地节约网络带宽、降低网络负载。
5.相关的技术方案中,网络中的各个设备为多个组播树需要预留多个地址,不同的地址用于区分不同的组播树,这样,存在较大的地址空间的浪费。


技术实现要素:

6.本技术提供一种报文转发的方法、设备以及系统,可以减少地址空间的浪费。
7.第一方面,提供了一种报文转发的方法,包括:第一网络设备获取第一报文,所述第一报文包括组播报文;所述第一网络设备根据源地址sa以及第一对应关系确定述组播报文的下一跳目的地址da,其中,所述sa用于标识所述组播报文对应的组播路径,所述第一对应关系包括所述sa与所述组播路径上所述第一网络设备的所述下一跳da;所述第一网络设备根据所述下一跳da获得第二报文,所述第二报文是对所述组播报文进行ipv6封装后的单播报文;所述第一网络设备根据所述下一跳da,将所述第二报文沿着所述组播路径进行转发。
8.上述技术方案中,只需要根节点(入口设备)为多个组播树预留对应的多个地址,其余设备无需为多个组播树预留对应的多个地址,这样,以入口设备为根节点建立多个组播树时,可以减少ipv6地址空间的浪费。
9.在一种可能的实现方式中,在第一网络设备根据源地址sa以及第一对应关系确定
下一跳目的地址da之前,所述方法还包括:所述第一网络设备确定所述sa。
10.在另一种可能的实现方式中,所述第一网络设备为入口设备,所述第一报文为所述组播报文,所述第一网络设备确定所述组播报文对应的所述组播路径;所述第一网络设备根据所述组播路径以及组播路径和sa的对应关系确定所述sa。
11.在另一种可能的实现方式中,所述第一网络设备为中间设备或出口设备,所述第一报文是对所述组播报文进行ipv6封装后的单播报文,所述第一网络设备确定所述第一报文的da是否为所述第一网络设备的地址;如果所述第一报文的da为所述第一网络设备的ipv6地址,所述第一网络设备根据所述第一报文的da读取所述第一报文的sa。
12.在另一种可能的实现方式中,所述方法还包括:所述第一网络设备从控制设备接收配置信息,所述配置信息包括所述sa和组播报文对应的组播路径;所述第一网络设备根据所述配置信息建立所述第一对应关系。
13.在另一种可能的实现方式中,所述组播路径包含所述第一网络设备的下一跳设备的互联网协议第6版ipv6地址,所述第一网络设备根据所述下一跳da为所述下一跳设备的ipv6地址,向所述下一跳设备发送所述第二报文。
14.在另一种可能的实现方式中,所述组播路径指示对报文进行解封装,所述方法还包括:所述第一网络设备对所述第二报文进行解封装,得到所述组播报文;所述第一网络设备对所述组播报文进行转发。
15.在另一种可能的实现方式中,所述sa为ipv6地址。
16.第二方面,提供了一种第一网络设备,包括:
17.接收模块,用于获取第一报文,所述第一报文包括组播报文;
18.处理模块,用于根据源地址sa以及第一对应关系确定所述组播报文的下一跳目的地址da,其中,所述sa用于标识所述组播报文对应的组播路径,所述第一对应关系包括所述sa与所述组播路径上所述第一网络设备的所述下一跳da;
19.所述处理模块,还用于根据所述下一跳da获得第二报文,所述第二报文是对所述组播报文进行ipv6封装后的单播报文;
20.发送模块,用于根据所述下一跳da,将所述第二报文沿着所述组播路径进行转发。
21.在一种可能的实现方式中,所述处理模块还用于:确定所述sa。
22.在另一种可能的实现方式中,所述第一网络设备为入口设备,所述第一报文为所述组播报文,所述处理模块还用于:确定所述组播报文对应的所述组播路径;根据所述组播路径以及组播路径和sa的对应关系确定所述sa。
23.在另一种可能的实现方式中,所述第一网络设备为中间设备或出口设备,所述第一报文是对所述组播报文进行ipv6封装后的单播报文,所述处理模块具体用于:确定所述第一报文的da是否为所述第一网络设备的ipv6地址;如果所述第一报文的da为所述第一网络设备的ipv6地址,根据所述第一报文的da读取所述第一报文的sa。。
24.在另一种可能的实现方式中,所述接收模块,还用于从控制设备接收配置信息,所述配置信息包括所述sa和所述组播报文对应的组播路径;所述处理模块,还用于根据所述配置信息建立所述第一对应关系。
25.在另一种可能的实现方式中,所述组播路径包含所述第一网络设备的下一跳设备的互联网协议第6版ipv6地址,所述发送模块具体用于:根据所述下一跳da为所述下一跳设
备的ipv6地址,向所述下一跳设备发送所述第二报文。
26.在另一种可能的实现方式中,所述组播路径指示对报文进行解封装,所述处理模块,还用于对所述第二报文进行解封装,得到所述组播报文;所述发送模块,还用于对所述组播报文进行转发。
27.在另一种可能的实现方式中,所述sa为ipv6地址。
28.第二方面和第二方面的任意一个可能的实现方式的有益效果和第一方面以及第一方面的任意一个可能的实现方式的有益效果是对应的,对此,不再赘述。
29.第三方面,提供了一种第一网络设备,所述第一网络设备具有实现上述方法中第一网络设备行为的功能。所述功能可以基于硬件实现,也可以基于硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
30.在一个可能的设计中,第一网络设备的结构中包括处理器和接口,所述处理器被配置为支持第一网络设备执行上述方法中相应的功能。所述接口用于支持第一网络设备获取第一报文。
31.所述第一网络设备还可以包括存储器,所述存储器用于与处理器耦合,其保存第一网络设备必要的程序指令和数据。
32.在另一个可能的设计中,所述第一网络设备包括:处理器、发送器、接收器、随机存取存储器、只读存储器以及总线。其中,处理器通过总线分别耦接发送器、接收器、随机存取存储器以及只读存储器。其中,当需要运行第一网络设备时,通过固化在只读存储器中的基本输入/输出系统或者嵌入式系统中的bootloader引导系统进行启动,引导第一网络设备进入正常运行状态。在第一网络设备进入正常运行状态后,在随机存取存储器中运行应用程序和操作系统,使得该处理器执行第一方面或第一方面的任意可能的实现方式中的方法。
33.第四方面,提供一种第一网络设备,所述第一网络设备包括:主控板和接口板,进一步,还可以包括交换网板。所述第一网络设备用于执行第一方面或第一方面的任意可能的实现方式中的方法。具体地,所述第一网络设备包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的模块。
34.第五方面,提供一种第一网络设备,所述第一网络设备包括控制模块和第一转发子设备。所述第一转发子设备包括:接口板,进一步,还可以包括交换网板。所述第一转发子设备用于执行第四方面中的接口板的功能,进一步,还可以执行第四方面中交换网板的功能。所述控制模块中包括接收器、处理器、发送器、随机存取存储器、只读存储器以及总线。其中,处理器通过总线分别耦接接收器、发送器、随机存取存储器以及只读存储器。其中,当需要运行控制模块时,通过固化在只读存储器中的基本输入/输出系统或者嵌入式系统中的bootloader引导系统进行启动,引导控制模块进入正常运行状态。在控制模块进入正常运行状态后,在随机存取存储器中运行应用程序和操作系统,使得该处理器执行第六方面中主控板的功能。
35.可以理解的是,在实际应用中,第一网络设备可以包含任意数量的接口,处理器或者存储器。
36.第六方面,提供了一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述第一方面或第一方面的
任一种可能执行的方法。
37.第七方面,提供了一种计算机可读介质,该计算机可读介质存储有程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述第一方面或第一方面的任一种可能执行的方法。这些计算机可读存储包括但不限于如下的一个或者多个:只读存储器(read-only memory,rom)、可编程rom(programmable rom,prom)、可擦除的prom(erasable prom,eprom)、flash存储器、电eprom(electrically eprom,eeprom)以及硬盘驱动器(hard drive)。
38.第八方面,提供一种芯片,该芯片包括处理器与数据接口,其中,处理器通过该数据接口读取存储器上存储的指令,以执行第一方面或第一方面任意一种可能的实现方式中的方法。在具体实现过程中,该芯片可以以中央处理器(central processing unit,cpu)、微控制器(micro controller unit,mcu)、微处理器(micro processing unit,mpu)、数字信号处理器(digital signal processing,dsp)、片上系统(system on chip,soc)、专用集成电路(application-specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或可编辑逻辑器件(programmable logic device,pld)的形式实现。
39.第九方面,提供了一种报文转发的系统,该系统包括上述第一网络设备。
附图说明
40.图1是本技术实施例提供的一种场景示意图。
41.图2是本技术实施例提供的一种报文转发的方法的示意性流程图。
42.图3是本技术实施例提供的另一种报文转发的方法的示意性流程图。
43.图4是本技术实施例提供的一种第一网络设备400的示意性结构图。
44.图5是本技术实施例的第一网络设备2000的硬件结构示意图。
45.图6为本技术实施例的另一种第一网络设备2100的硬件结构示意图。
具体实施方式
46.下面将结合附图,对本技术中的技术方案进行描述。
47.本技术将围绕包括多个设备、组件、模块等的系统来呈现各个方面、实施例或特征。应当理解和明白的是,各个系统可以包括另外的设备、组件、模块等,并且/或者可以并不包括结合附图讨论的所有设备、组件、模块等。此外,还可以使用这些方案的组合。
48.另外,在本技术实施例中,“示例的”、“例如”等词用于表示作例子、例证或说明。本技术中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
49.本技术实施例中,“相应的(corresponding,relevant)”和“对应的(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
50.本技术实施例描述的网络架构以及业务场景是为了更加清楚地说明本技术实施例的技术方案,并不构成对于本技术实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本技术实施例提供的技术方案对于类似
的技术问题,同样适用。
51.在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
52.本技术中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:包括单独存在a,同时存在a和b,以及单独存在b的情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
53.组播(multicast)是一种通过使用一个组播地址将数据在同一时间以高效的方式发往处于传输控制协议(transmission control protocol,tcp)/互联网协议(internet protocol,ip)网络上的多个接收者的数据传输方式。组播源经由网络中的链路向组播组中的组播组成员发送组播流,该组播组中的组播组成员均可以接收到该组播流。组播传输方式实现了组播源和组播组成员之间的点对多点的数据连接。由于组播流在每条网络链路上只需传递一次,且只有在链路出现支路时,该组播才会被复制。因此,组播传输方式提高了数据传输效率和减少了骨干网络出现拥塞的可能性。
54.ip组播技术以组播组地址作为报文的目的地址,使用独立多播协议(protocol independent multicast,pim)信令建立组播转发树。并利用组播转发树将网络平面逻辑树状,以实现组播点到多点的数据转发。这种以构建组播转发树的ip组播技术可以实现ip网络中点到多点的高效数据传送,能够有效地节约网络带宽、降低网络负载。因此,在实时数据传送、多媒体会议、数据拷贝、交互式网络电视(internet protocol television,iptv)、游戏和仿真等诸多方面都有广泛的应用。
55.一种相关的技术方案中,通过互联网协议第六版(internet protocol version 6,ipv6)单播地址作为报文的目的地址实现上述ip组播技术。在从一个入口(ingress)路由器到多个出口(egress)路由器之间建立点到多点(point to multipoint,p2mp)的转发路径,将组播报文沿着p2mp转发路径进行转发。作为示例,可以将p2mp转发路径作为隧道,ingress路由器将组播报文封装在隧道中,egress路由器将组播报文解封装还原并发送。
56.以图1所示的场景为例。在图1的段路由复制(segment routing replication,sr-replication)域中可以包括:r1、r3、r5、r6、r7、r8。其中,r1为段路由复制域的入口(ingress)设备,负责对组播报文进行ipv6封装,具体的,可以是在组播报文的外层封装一个ipv6头,ipv6头中可以包含目的地址(destination address,da)字段和源地址字段(source address,sa)。r3、r5为段路由复制域的中间(transit)设备,负责根据组播报文外层封装的ipv6头中的目的地址(destination address,da)对报文进行转发。r6、r7、r8为段路由复制域的出口(egress)设备,负责对封装后的组播报文进行解封装,再对内层的组播报文进行转发。
57.当需要以r1为根节点建立多个组播树(也可以称为p2mp树)时,上述相关的技术方案中,图1所示的段路由复制域中的各个节点(r1、r3、r5、r6、r7、r8)均需要在各自的ipv6地址空间中预留出多个地址,从而实现以r1为根节点建立多个组播树的目的。
58.以图1所示的实线标识的组播树为例。控制器下发的实线标识的组播树的信息如下表1所示。
59.表1实线标识的组播树的信息
[0060][0061]
其中,复制标识(replication id,repid)=1为实线标识的组播树。设备的branch信息可以是该设备的一个或多个p2mp的下游设备。应理解,如果该设备为p2mp的叶子(leaf)设备,通常在该设备上要进行报文的解封装,再对内层组播报文进行转发。因此,这种叶子设备可以没有下游设备,其对应的branch信息可以使用解封装(decapsulation,decap)表示。
[0062]
图1中的各设备根据控制器下发的实线标识的组播树的信息生成的对应关系如下表2所示。
[0063]
表2实线标识的组播树的对应关系
[0064][0065]
其中,表中的目的地址(destination address,da)r1_1是根据r1的节点标识(node identifier,node id)以及repid=1确定的,在应用于ipv6数据面时,r1_1是一个ipv6地址。其他地址的确定方式与目的地址r1_1的确定方式相同,此处不再赘述。
[0066]
以图1所示的虚线标识的组播树为例。控制器下发的虚线标识的p2mp树的信息如下表3所示。
[0067]
表3虚线标识的组播树的信息
[0068][0069]
其中,复制标识(replication id,repid)=2为虚线标识的组播树。
[0070]
图1中的各设备根据控制器下发的虚线标识的组播树的信息生成的对应关系如下表4所示。
[0071]
表4虚线标识的组播树对应的对应关系
[0072][0073]
以r1为例,如果获取到报文的外层ipv6头中的目的地址为r1_1,转发面进一步查da=r1_1的转发表,查到如前所描述的p2mp的表项,获知报文要“复制”给r3_1,因此转发面将报文的目的地址再改为r3_1并发送给r3。此后报文就会沿着实线标识的p2mp树发送给各leaf节点、并由各leaf节点解封装。
[0074]
如果获取到报文的外层ipv6头中的目的地址为r1_2,转发面进一步查da=r1_2的转发表,查到如前所描述的p2mp的表项,获知报文要“复制”给r3_2,因此转发面将报文的目的地址再改为r3_2并发送给r3。此后报文就会沿着虚线标识的p2mp树发送给各leaf节点、并由各leaf节点解封装。
[0075]
也就是说,在上述相关的技术方案中,网络中的各个设备为多个组播树预留多个地址,不同的地址用于区分不同的组播树。例如,如果以r1为根节点建立2个组播树,以r5为例,r5预留2个地址,分别为r5_1、r5_2,其中,r5_1代表以r1为根节点的实线标识的组播树,r5_2代表以r1为根节点的虚线标识的组播树。
[0076]
如果网络中有100个设备,要以r1为根节点建立1000个组播树。上述相关的技术方案下,每个设备需要在各自ipv6地址空间预留1000个地址,总共需要预留100*1000个地址,存在较大的地址空间的浪费。
[0077]
有鉴于此,本技术实施例提供了一种报文转发的方法,只需要根节点r1为多个组播树预留对应的多个地址,其余设备无需为多个组播树预留对应的多个地址,这样,在以r1为根节点建立多个组播树时,可以减少ipv6地址空间的浪费。
[0078]
下面结合图2,对本技术实施例提供的一种报文转发的方法进行详细描述。
[0079]
图2是本技术实施例提供的一种报文转发的方法的示意性流程图。如图2所示,该方法可以包括步骤210-230,下面分别对步骤210-230进行详细描述。
[0080]
步骤210:第一网络设备获取第一报文,该第一报文包括组播报文。
[0081]
第一网络设备可以是入口(ingress)设备,或者也可以是中间转发设备,或者还可以是出口(egress)设备,本技术对此不做具体限定。
[0082]
以第一网络设备为入口(ingress)设备为例,第一网络设备获取到的第一报文可以是组播报文。
[0083]
以第一网络设备为中间转发设备或出口(egress)设备为例,第一网络设备获取到的第一报文可以是一个ipv6报文,该ipv6报文是对组播报文进行ipv6封装的报文,且该ipv6报文是一个单播报文。
[0084]
步骤220:第一网络设备根据源地址(source address,sa)以及第一对应关系确定
组播报文的下一跳目的地址(destination address,da)。
[0085]
本技术实施例中,sa可以用于标识所述组播报文对应的组播路径。也就是说,不同的sa可以对应不同的组播路径,可以通过不同的sa来区分不同的组播路径。
[0086]
应理解,组播路径指组播报文的入口节点到出口节点之间的整个转发路径,该出口节点可以是一个,或者也可以是多个,本技术对此不做具体限定。作为示例,当组播报文的出口节点有多个时,组播路径也可以称为点到多点路径,其中,点表示组播报文的入口节点,多点可以表示组播报文的多个出口节点。
[0087]
可选的,在步骤220之前,第一网络设备还可以确定sa。具体的实现方式多种,本技术对此不做具体限定,下面对可能的实现方式进行详细描述。
[0088]
一种可能的实现方式中,以第一网络设备可以是入口(ingress)设备为例,第一网络设备接收到组播报文之后,可以根据组播报文的组播流信息确定组播报文转发的组播路径,再根据组播路径和sa的对应关系确定组播报文的sa。第一网络设备将该sa封装在组播报文外层的ipv6头中,得到封装后的ipv6报文。
[0089]
另一种可能的实现方式中,以第一网络设备为中间转发设备或出口(egress)设备为例,第一网络设备接收到的是一个ipv6报文(第一报文),该第一报文包括外层ipv6头以及组播报文,其中,第一报文的外层ipv6头中包括sa和da。如果第一报文外层ipv6头的da为第一网络设备的地址(例如,ipv6地址),第一网络设备根据第一报文外层ipv6头的da确定需要读取第一报文外层ipv6头的sa。第一网络设备可以根据读取的第一报文外层ipv6头的sa查找第一对应关系并确定组播报文的下一跳da,其中,第一对应关系包括sa与所述组播路径上所述第一网络设备的所述下一跳da。
[0090]
应理解,第一对应关系中的下一跳da是一个da列表(list),该list中包括一个或多个下一跳da。也就是说,第一对应关系中包括所述sa与组播路径上所述第一网络设备的一个或多个下一跳da。
[0091]
还应理解,本技术实施例中根据sa和第一对应关系确定的组播报文的下一跳da是所述list的全部下一跳da。
[0092]
需要说明的是,所述组播报文的下一跳da为第一网络设备的下一跳设备的地址,例如,下一跳设备的ipv6地址。所述下一跳设备为支持基于ipv6报文的单播目的地址进行组播报文转发的设备。所述下一跳设备可以是和第一网络设备直连的设备、也可以是通过网络中的其他节点和第一网络设备间接相连的设备,本技术对此不做具体限定。
[0093]
以图1所示的场景为例,r1为第一网络设备,r3为第一网络设备的下一跳设备,r3可以基于ipv6报文的单播目的地址进行组播报文的转发。如果r1和r3之间还存在不进行基于ipv6报文的单播目的地址进行组播报文转发的设备r13(图1中未示出),一种可能的情况,r13是不支持如上所述的基于单播地址进行组播转发的设备,因此在生成相应的转发表时要穿越(或称为跳过)这样的设备。另一种可能的情况,r13是支持如上所述的基于单播地址进行组播转发的设备,但在生成相应的转发表时穿越(或称为跳过)这样的设备以提升其转发性能,本技术对此不做具体限定。对于r13而言,其接收到的报文的下一跳da不是自己,因此,会对报文进行透传,根据报文中的下一跳da将报文转发给第一网络设备的下一跳设备。
[0094]
可选地,在步骤220之前,第一网络设备还可以建立上述第一对应关系。作为示例,
第一网络设备可以从控制设备接收配置信息,所述配置信息包括所述sa和组播报文对应的组播路径。第一网络设备根据配置信息建立上述第一对应关系。
[0095]
需要说明的是,控制设备可以是一个独立的设备,例如,一个独立的控制器,还可以是对报文进行转发的某个转发设备执行的控制功能(例如,某个转发设备的控制面),本技术对此不做具体限定。
[0096]
第一对应关系的形式可以有多种,一种可能的实现方式中,该第一对应关系中包括标识组播路径对应的sa以及该组播路径。该组播路径包括第一网络设备沿着所述组播路径进行转发的下一跳设备的列表,该列表中包括一个或多个下一跳设备的ip地址。例如,该组播路径为组播树的分叉(branch)信息,用于指示将报文复制给所述列表中的一个或多个下一跳设备。另一种可能的实现方式中,该第一对应关系中包括标识组播路径的sa、第一网络设备沿着所述组播路径进行转发的下一跳设备的列表以及指示信息,该指示信息用于指示将报文复制给所述列表中的一个或多个下一跳设备。
[0097]
可选地,在一些实施例中,当第一网络设备为egress节点时,上述列表中没有下一跳设备的ip地址,组播树的分叉(branch)信息或表中的指示信息指示对报文进行解封装。
[0098]
可选地,在一些实施例中,当第一网络设备为egress节点并且同时还作为另一些节点的transit节点时,上述branch列表中既有下一跳设备的ip地址、又有指示对报文进行解封装的指示信息。
[0099]
第一网络设备根据源地址sa以及第一对应关系确定的组播报文的下一跳da可以是第一网络设备沿着所述组播路径进行转发的下一跳设备的ipv6地址。
[0100]
步骤230:第一网络设备根据下一跳da获得第二报文。
[0101]
以第一网络设备为入口(ingress)设备为例,第一网络设备获取到的第一报文是组播报文,第一网络设备通过步骤220获得组播报文的下一跳da(第一网络设备的下一跳设备的地址)后,可以将该下一跳da封装在组播报文外层的ipv6头中,得到第二报文,该第二报文是对组播报文进行ipv6封装后的单播报文。
[0102]
以第一网络设备为中间转发设备或出口(egress)设备为例,第一网络设备获取到的第一报文是一个ipv6报文,其中,第一报文的外层ipv6头中包括sa和da。第一网络设备通过步骤220获得组播报文的下一跳da(第一网络设备的下一跳设备的地址)后,可以将接收到的第一报文外层ipv6头中的da确定为组播报文的下一跳da,从而得到第二报文。
[0103]
具体的有关下一跳da、第一网络设备的下一跳设备的地址的描述,请参考步骤220中的说明,此处不再赘述。
[0104]
步骤240:第一网络设备根据下一跳da,将所述第二报文沿着所述组播路径进行转发。
[0105]
第一网络设备根据下一跳da,将所述第二报文沿着上述确定的组播路径进行转发。一个示例,组播路径包含所述第一网络设备的下一跳设备的ipv6地址,第一网络设备根据下一跳da为所述下一跳设备的ipv6地址,向所述第一网络设备的下一跳设备发送所述第二报文。
[0106]
可选地,如果第一网络设备为出口(egress)设备,组播路径指示第一网络设备对报文进行解封装。第一网络设备根据该组播路径,对第二报文进行解封装,得到所述组播报文,并对组播报文进行转发。
[0107]
上述技术方案中,只需要组播树的根节点为多个组播树预留对应的多个ipv6地址,其余的设备只需要配置一个ipv6地址作为目的地址就可以实现多个组播树下的组播转发。如果网络中有100个设备,要以根节点建立1000个组播树,相关的技术方案下,每个设备需要在各自ipv6地址空间预留1000个地址,总共需要预留100*1000个地址;而本技术中只需要根节点为1000个组播树分配1000个地址即可,从而可以减少ipv6地址空间浪费的问题。
[0108]
下面以图1所示的场景为例,结合图3对本技术实施例提供的报文转发的方法的一种具体实现过程进行详细描述。
[0109]
应理解,图3的例子仅仅是为了帮助本领域技术人员理解本技术实施例,而非要将申请实施例限制于所示例的具体数值或具体场景。本领域技术人员根据下面所给出的图3的例子,显然可以进行各种等价的修改或变化,这样的修改和变化也落入本技术实施例的范围内。
[0110]
图3是本技术实施例提供的另一种报文转发的方法的示意性流程图。如图3所示,该方法可以包括步骤310-330,下面分别对步骤310-330进行详细描述。
[0111]
应理解,上文所述的组播路径也可以称为组播树,图3中以组播树为例进行描述。
[0112]
步骤310:网络中的各个设备接收组播树的信息。
[0113]
本技术实施例中,建立以r1为根节点的多个组播树时,在r1上需要为每个组播树分别分配一个地址。
[0114]
一种可能的实现方式中,以需要建立图1所示的,以r1为根节点的实线标识的组播树为例,需要分配一个r1的地址r1_1。向该组播树下的各个节点发送地址r1_1,并发送各个节点上该组播树的branch信息。
[0115]
需要说明的是,上述分配和下发的过程可以通过控制器完成,也可以通过设备控制面的消息完成,本技术对此不做具体限定。
[0116]
以r1为根节点的实线标识的组播树下的节点可以包括:r1、r3、r5、r6、r7、r8。上述各个节点接收到的实线标识的组播树的信息如表5所示。
[0117]
表5实线标识的组播树的信息
[0118][0119]
以r1为例,“tree=r1_1”表示组播树为图1所示的实线标识的组播树及组播树与源地址r1_1的对应关系,“branch=r3”表示r1的下游设备为r3。
[0120]
以r5为例,组播树为图1所示的实线标识的组播树,r3的下游设备为r7和r8。对于r6而言,组播树为图1所示的实线标识的组播树,“branch=decap”表示r6为叶子(leaf)设备,其需要对封装后的组播报文进行解封装,再对内层的组播报文进行转发。
[0121]
另一种可能的实现方式中,以需要建立图1所示的,以r1为根节点的虚线标识的组播树为例,需要分配一个r1的地址r1_2。向该组播树下的各个节点发送地址r1_2,并发送各
个节点上该组播树的branch信息。
[0122]
需要说明的是,上述分配和下发过程可以是通过控制器完成,也可以通过控制面的消息完成,本技术对此不做具体限定。
[0123]
以r1为根节点的虚线标识的组播树下的节点可以包括:r1、r3、r5、r6、r7、r8。上述各个节点接收到的虚线标识的组播树的信息如表6所示。
[0124]
表6虚线标识的组播树的信息
[0125][0126]
以r1为例,“tree=r1_2”表示组播树为图1所示的虚线标识的组播树及组播树与源地址r1_2的对应关系,“branch=r3”表示r1的下游设备为r3。
[0127]
以r5为例,组播树为图1所示的虚线标识的组播树,r3的下游设备为r7。对于r6而言,组播树为图1所示的虚线标识的组播树,“branch=decap”表示r6为叶子(leaf)设备,其需要对封装后的组播报文进行解封装,再对内层的组播报文进行转发。
[0128]
步骤320:网络中的各个设备根据组播树的信息建立对应关系。
[0129]
以图1所示的实线标识的组播树为例,网络中的各个设备根据表5所示的组播树信息建立的对应关系如表7所示。
[0130]
表7实线标识的组播树的对应关系
[0131][0132]
应理解,网络中的设备各自分别配置一个第一地址作为报文的目的地址,该第一地址用于指示根据报文的目的地址查找该报文对应的源地址。当设备上收到的报文目的地址为该第一地址时,设备会对报文的源地址进行查找。
[0133]
作为示例,r1、r3、r5、r6、r7、r8分配的第一地址分别为r1_0、r3_0、r5_0、r6_0、r7_0、r8_0。当r1上收到的报文目的地址为r1_0时,r1会对报文的源地址进行查找。当r3上收到的报文目的地址为r3_0时,r3会对报文的源地址进行查找。以此类推。
[0134]
以r1为例,由于组播树为图1所示的实线标识的组播树,r1的下游设备为r3,因此,r1建立的对应关系中的“sa=r1_1”表示的源地址为r1_1,“branch_ip=r3_0”表示r1下游设备的ip地址为r3分配的第一地址r3_0。
[0135]
以r5为例,由于组播树为图1所示的实线标识的组播树,r5的下游设备为r7和r8,因此,r5建立的对应关系中的“sa=r1_1”表示的源地址为r1_1,“branch_ip=r7_0/r8_0”表示r5下游设备的ip地址为r7分配的第一地址r7_0以及为r8分配的第一地址r8_0。
[0136]
以图1所示的虚线标识的组播树为例,网络中的各个设备根据表6所示的组播树信息建立的对应关系如表8所示。
[0137]
表8虚线标识的组播树的对应关系
[0138][0139]
步骤330:网络中的各个设备基于建立的对应关系对ipv6报文进行转发。
[0140]
一种可能的实现方式中,以图1所示的实线标识的组播树为例,基于表7所示的对应关系,对网络中的设备转发ipv6报文的过程进行详细描述。
[0141]
r1从某个隶属于虚拟路由转发(virtual routing forwarding,vrf)实例vrf1的接口上收到组播源组(s1,g1)的组播报文。r1的转发面可以将组播流(vrf1,s1,g1)导入到实线标识的组播树上,并沿着实线标识的组播树对该组播流(vrf1,s1,g1)进行转发。
[0142]
作为示例,r1可以根据如下的配置信息将组播流信息(vrf1,s1,g1)导入到实线标识的组播树上。
[0143]
r1:(vrf1,s1,g1,tree=r1_1)
[0144]
r1还可以根据如下的对应关系对组播源组(s1,g1)的组播报文进行封装,使得组播源组(s1,g1)的组播报文可以沿着实线标识的组播树进行转发。具体的,r1对组播报文封装一个外层ipv6头,该外层ipv6头的源地址为r1_1,目的地址为r1分配的第一地址r1_0。
[0145]
r1:(vrf1,s1,g1,sa=r1_1,da=r1_0)
[0146]
r1获取到报文外层ipv6头的目的地址为r1_0,根据r1_0的指示查找报文的源地址sa。r1确定报文的源地址sa为r1_1,并根据表7所示的对应关系确定sa=r1_1对应的branch_ip为r3_0。因此,r1获知报文要“复制”给r3_0,r1的转发面可以将报文的目的地址修改为r3_0并发送给r3节点。
[0147]
r3接收到的报文的目的地址为r3_0,r3根据目的地址为r3_0的指示查找报文的源地址sa。r3确定报文的源地址sa为r1_1,并根据表7所示的对应关系确定sa=r1_1对应的branch_ip为r5_0/r6_0。因此,r3获知报文要“复制”给r5_0以及r6_0,r3的转发面可以将报文的目的地址修改为r5_0发送给r5节点,并将报文的目的地址修改为r6_0发送给r6节点。
[0148]
r5接收到的报文的目的地址为r5_0,r5根据目的地址为r5_0的指示查找报文的源地址sa。r5确定报文的源地址sa为r1_1,并根据表7所示的对应关系确定sa=r1_1对应的branch_ip为r7_0/r8_0。因此,r5获知报文要“复制”给r7_0以及r8_0,r5的转发面可以将报文的目的地址修改为r7_0发送给r7节点,并将报文的目的地址修改为r8_0发送给r8节点。
[0149]
r6接收到的报文的目的地址为r6_0,r6根据目的地址为r6_0的指示查找报文的源地址sa。r6确定报文的源地址sa为r1_1,并根据表7所示的对应关系确定sa=r1_1对应的branch_ip为decap。因此,r6确定其自己为叶子(leaf)设备,r6对封装后的组播报文进行解封装,再对内层的组播报文进行转发。
[0150]
r7接收到的报文的目的地址为r7_0,r7根据目的地址为r7_0的指示查找报文的源
地址sa。r7确定报文的源地址sa为r1_1,并根据表7所示的对应关系确定sa=r1_1对应的branch_ip为decap。因此,r7确定其自己为叶子(leaf)设备,r7对封装后的组播报文进行解封装,再对内层的组播报文进行转发。
[0151]
r8接收到的报文的目的地址为r8_0,r8根据目的地址为r8_0的指示查找报文的源地址sa。r8确定报文的源地址sa为r1_1,并根据表7所示的对应关系确定sa=r1_1对应的branch_ip为decap。因此,r8确定其自己为叶子(leaf)设备,r8对封装后的组播报文进行解封装,再对内层的组播报文进行转发。
[0152]
另一种可能的实现方式中,以图1所示的虚线标识的组播树为例,基于表8所示的对应关系,对网络中的设备转发ipv6报文的过程进行详细描述。
[0153]
r1从某个隶属于虚拟路由转发(virtual routing forwarding,vrf)实例vrf2的接口上收到组播源组(s2,g2)的组播报文。r1的转发面可以将组播流信息(vrf2,s2,g2)导入到虚线标识的组播树上,并沿着虚线标识的组播树对该组播流信息(vrf2,s2,g2)进行转发。
[0154]
作为示例,r1可以根据如下的配置信息将组播流信息(vrf2,s2,g2)导入到实线标识的组播树上。
[0155]
r1:(vrf2,s2,g2,tree=r1_2)
[0156]
r1还可以根据如下的对应关系对组播源组(s2,g2)的组播报文进行封装,使得组播源组(s2,g2)的组播报文可以沿着虚线标识的组播树进行转发。具体的,r1对组播报文封装一个外层ipv6头,该外层ipv6头的源地址为r1_2,目的地址为r1分配的第一地址r1_0。
[0157]
r1:(vrf2,s2,g2,sa=r1_2,da=r1_0)
[0158]
r1获取到报文外层ipv6头的目的地址为r1_0,根据r1_0的指示查找报文的源地址sa。r1确定报文的源地址sa为r1_2,并根据表8所示的对应关系确定sa=r1_2对应的branch_ip为r3_0。因此,r1获知报文要“复制”给r3_0,r1的转发面可以将报文的目的地址修改为r3_0并发送给r3节点。
[0159]
r3接收到的报文的目的地址为r3_0,r3根据目的地址为r3_0的指示查找报文的源地址sa。r3确定报文的源地址sa为r1_2,并根据表8所示的对应关系确定sa=r1_2对应的branch_ip为r5_0/r6_0。因此,r3获知报文要“复制”给r5_0以及r6_0,r3的转发面可以将报文的目的地址修改为r5_0发送给r5节点,并将报文的目的地址修改为r6_0发送给r6节点。
[0160]
r5接收到的报文的目的地址为r5_0,r5根据目的地址为r5_0的指示查找报文的源地址sa。r5确定报文的源地址sa为r1_2,并根据表8所示的对应关系确定sa=r1_2对应的branch_ip为r7_0。因此,r5获知报文要“复制”给r7_0,r5的转发面可以将报文的目的地址修改为r7_0发送给r7节点。
[0161]
r6接收到的报文的目的地址为r6_0,r6根据目的地址为r6_0的指示查找报文的源地址sa。r6确定报文的源地址sa为r1_2,并根据表8所示的对应关系确定sa=r1_2对应的branch_ip为decap。因此,r6确定其自己为叶子(leaf)设备,r6对封装后的组播报文进行解封装,再对内层的组播报文进行转发。
[0162]
r7接收到的报文的目的地址为r7_0,r7根据目的地址为r7_0的指示查找报文的源地址sa。r7确定报文的源地址sa为r1_2,并根据表8所示的对应关系确定sa=r1_2对应的branch_ip为decap。因此,r7确定其自己为叶子(leaf)设备,r7对封装后的组播报文进行解
封装,再对内层的组播报文进行转发。
[0163]
上文结合图1至图3,详细描述了本技术实施例提供的一种报文转发的方法,下面将结合图4至图6,详细描述本技术的装置的实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
[0164]
图4是本技术实施例提供的一种第一网络设备400的示意性结构图。图4所示的该第一网络设备400可以执行上述实施例的方法中第一网络设备执行的相应步骤。如图4所示,所述第一网络设备400包括:接收模块410、处理模块420,发送模块430,
[0165]
接收模块410,用于获取第一报文,所述第一报文包括组播报文;
[0166]
处理模块420,用于根据源地址sa以及第一对应关系确定所述组播报文的下一跳目的地址da,其中,所述sa用于标识所述组播报文对应的组播路径,所述第一对应关系中包括sa与所述组播路径上所述第一网络设备的所述下一跳da;
[0167]
所述处理模块420,还用于根据所述下一跳da获得第二报文,所述第二报文是对所述组播报文进行ipv6封装后的单播报文;
[0168]
发送模块430,用于根据所述下一跳da,将所述第二报文沿着所述组播路径进行转发。
[0169]
可选地,所述处理模块420还用于:确定所述sa。
[0170]
可选地,所述第一网络设备为入口设备,所述第一报文为所述组播报文,所述处理模块420具体用于:确定所述组播报文对应的所述组播路径;根据所述组播路径以及组播路径和sa的对应关系确定所述sa。
[0171]
可选地,所述第一网络设备为中间设备或出口设备,所述第一报文是对所述组播报文进行ipv6封装后的单播报文,所述处理模块420具体用于:确定所述第一报文的da是否为所述第一网络设备的ipv6地址;如果所述第一报文的da为所述第一网络设备的ipv6地址,根据所述第一报文的da读取所述第一报文的sa。
[0172]
可选地,所述接收模块410还用于从控制设备接收配置信息,所述配置信息包括所述sa和所述组播报文对应的组播路径;所述处理模块420还用于根据所述配置信息建立所述第一对应关系。
[0173]
可选地,所述组播路径包含所述第一网络设备的下一跳设备的互联网协议第6版ipv6地址,所述发送模块430具体用于:根据所述下一跳da为所述下一跳设备的ipv6地址,向所述下一跳设备发送所述第二报文。
[0174]
可选地,所述组播路径指示对报文进行解封装,所述处理模块,还用于对所述第二报文进行解封装,得到所述组播报文;所述发送模块430还用于对所述组播报文进行转发。
[0175]
可选地,所述sa为ipv6地址。
[0176]
图5是本技术实施例的第一网络设备2000的硬件结构示意图。图5所示第一网络设备2000可以执行上述实施例的方法中第一网络设备执行的相应步骤。
[0177]
如图5所示,所述第一网络设备2000包括处理器2001、存储器2002、接口2003和总线2004。其中接口2003可以通过无线或有线的方式实现,具体来讲可以是网卡。上述处理器2001、存储器2002和接口2003通过总线2004连接。
[0178]
所述接口2003具体可以包括发送器和接收器,用于第一网络设备实现上述收发。例如,所述接口2003用于获取第一报文,或者用于发送第二报文。
[0179]
所述处理器2001用于执行上述实施例中由第一网络设备进行的处理。例如,用于根据源地址sa以及第一对应关系确定组播报文的下一跳da;根据所述下一跳da获得第二报文;和/或用于本文所描述的技术的其他过程。存储器2002包括操作系统20021和应用程序20022,用于存储程序、代码或指令,当处理器或硬件设备执行这些程序、代码或指令时可以完成方法实施例中涉及第一网络设备的处理过程。可选的,所述存储器2002可以包括只读存储器(read-only memory,rom)和随机存取存储器(random access memory,ram)。其中,所述rom包括基本输入/输出系统(basic input/output system,bios)或嵌入式系统;所述ram包括应用程序和操作系统。当需要运行第一网络设备2000时,通过固化在rom中的bios或者嵌入式系统中的bootloader引导系统进行启动,引导第一网络设备2000进入正常运行状态。在第一网络设备2000进入正常运行状态后,运行在ram中的应用程序和操作系统,从而,完成方法实施例中涉及第一网络设备2000的处理过程。
[0180]
可以理解的是,图5仅仅示出了第一网络设备2000的简化设计。在实际应用中,第一网络设备可以包含任意数量的接口,处理器或者存储器。
[0181]
图6为本技术实施例的另一种第一网络设备2100的硬件结构示意图。图6所示的第一网络设备2100可以执行上述实施例的方法中第一网络设备执行的相应步骤。
[0182]
如图6所述,第一网络设备2100包括:主控板2110、接口板2130、交换网板2120和接口板2140。主控板2110、接口板2130和2140,以及交换网板2120之间通过系统总线与系统背板相连实现互通。其中,主控板2110用于完成系统管理、设备维护、协议处理等功能。交换网板2120用于完成各接口板(接口板也称为线卡或业务板)之间的数据交换。接口板2130和2140用于提供各种业务接口(例如,pos接口、ge接口、atm接口等),并实现数据包的转发。
[0183]
接口板2130可以包括中央处理器2131、转发表项存储器2134、物理接口卡2133和网络处理器2132。其中,中央处理器2131用于对接口板进行控制管理并与主控板上的中央处理器进行通信。转发表项存储器2134用于保存表项,例如,上文中的bift。物理接口卡2133用于完成流量的接收和发送。
[0184]
应理解,本技术实施例中接口板2140上的操作与所述接口板2130的操作一致,为了简洁,不再赘述。
[0185]
应理解,本实施例的第一网络设备2100可对应于上述方法实施例所具有的功能和/或所实施的各种步骤,在此不再赘述。
[0186]
此外,需要说明的是,主控板可能有一块或多块,有多块的时候可以包括主用主控板和备用主控板。接口板可能有一块或多块,第一网络设备的数据处理能力越强,提供的接口板越多。接口板上的物理接口卡也可以有一块或多块。交换网板可能没有,也可能有一块或多块,有多块的时候可以共同实现负荷分担冗余备份。在集中式转发架构下,第一网络设备可以不需要交换网板,接口板承担整个系统的业务数据的处理功能。在分布式转发架构下,第一网络设备可以有至少一块交换网板,通过交换网板实现多块接口板之间的数据交换,提供大容量的数据交换和处理能力。所以,分布式架构的第一网络设备的数据接入和处理能力要大于集中式架构的设备。具体采用哪种架构,取决于具体的组网部署场景,此处不做任何限定。
[0187]
本技术实施例还提供了一种计算机可读介质,该计算机可读介质存储有程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述第一网络设备执行的方
法。这些计算机可读存储包括但不限于如下的一个或者多个:只读存储器(read-only memory,rom)、可编程rom(programmable rom,prom)、可擦除的prom(erasable prom,eprom)、flash存储器、电eprom(electrically eprom,eeprom)以及硬盘驱动器(hard drive)。
[0188]
本技术实施例还提供了一种芯片系统,应用于第一网络设备中,该芯片系统包括:至少一个处理器、至少一个存储器和接口电路,所述接口电路负责所述芯片系统与外界的信息交互,所述至少一个存储器、所述接口电路和所述至少一个处理器通过线路互联,所述至少一个存储器中存储有指令;所述指令被所述至少一个处理器执行,以进行上述各个方面的所述的方法中所述第一网络设备的操作。
[0189]
在具体实现过程中,该芯片可以以中央处理器(central processing unit,cpu)、微控制器(micro controller unit,mcu)、微处理器(micro processing unit,mpu)、数字信号处理器(digital signal processing,dsp)、片上系统(system on chip,soc)、专用集成电路(application-specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或可编辑逻辑器件(programmable logic device,pld)的形式实现。
[0190]
本技术实施例还提供了一种计算机程序产品,应用于第一网络设备中,所述计算机程序产品包括一系列指令,当所述指令被运行时,以进行上述各个方面的所述的方法中所述第一网络设备的操作。
[0191]
应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0192]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0193]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0194]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0195]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0196]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以
是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0197]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0198]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献