组播数据的发送方法和接收方法
【专利摘要】本发明公开了一种组播数据的发送方法和接收方法,其中,该发送方法包括:将需要发送的组播数据拆分为多个组播包;在每个组播包的包头添加参数信息,参数信息用于表示当前组播包在组播数据中的位置;对添加参数信息后的组播包进行组播发送。本发明通过拆分组播数据,然后发送拆分后的组播包能提供高效的组播通信机制,并且减少数据延时,此外,通过给拆分后的组播包添加具有确定每个组播包在组播数据中的位置的包头,有利于组播包发送的完整性和有序性,进一步提高通信效率。
【专利说明】组播数据的发送方法和接收方法
【技术领域】
[0001]本发明涉及计算机领域,并且特别地,涉及一种组播数据的发送方法和接收方法。【背景技术】
[0002]InfiniBand架构是一种支持多并发链接的“线缆转换”技术,主要用于底层的输入/输出通信,在串行链路上实现高速率、低延时的效果。InfiniBand架构作为一种统一的互联架构,不仅可以用于存储I/O和网络1/0,而且也可以用于进程间通信。InfiniBand架构的主要特点是高带宽,单条链路的SDR (Single Date Rate,单数据率)带宽为2.5Gbps,DDR (Double Date Rate,双数据率)带宽为 5Gbps, QDR (Quad Date Rate,四位数据率)带宽为lOGbps,如果需要更大的带宽,只需要增加链路数量即可,比如4倍的QDR带宽可以达到40Gbps)、低时延(交换机延时140ns、应用程序延时3 μ S、新的网卡技术将使应用程序延时降低到I μ s水平)、系统扩展性好(可轻松实现完全无拥塞的数万端设备的InfiniBand网络)。另外,InfiniBand 标准支持 RDMA (Remote Direct Memory Access,远程直接存储器存取),使得在使用InfiniBand构筑服务器、存储器网络时比万兆以太网以及FC (FibreChannel,网状通道)具有更高的性能、效率和灵活性。
[0003]基于InfiniBand的多客户端的实现,即在服务器端接收到多个客户端的连接请求后,与多个客户端建立连接,然后服务器端依次将同一份数据发送给多个客户端。如图1所示,InfiniBand的组播可以基于硬件实现,服务器节点(发送方)与多个客户端建立连接后,与客户端交护必要的信息,将接收到的数据加入QP(Queue paar,即队列队,未在图中示出,包括发送队列和接收队列)的接收队列中,位于发送队列中的组播数据可以经过交换机同时有效地传送至多个接收者(图1中仅列如三个客户端作为示例),然后,服务器节点将已发送完成的数据加入CQ(Completion queue,完成队列)。当交换机接收到服务器端发送的组播包后,会复制该组播包,并向加入该组播组的多个接收者发送该组播包,接收者将接收到的数据加入QP的接收队列中,然后将接收队列中的数据经过发送队列提交给用户,已提交完成的数据加入CQ。
[0004]虽然InfiniBand具有高速率、低延时的特性,但通过分析和实际的测试可知,在对多客户端支持的设计方案中,传输时的数据延时会随着客户端数量的增长而基本上呈线性增长。
[0005]针对相关技术中传输组播数据至多客户端引起的数据延时的问题,目前尚未提出有效的解决方案。
【发明内容】
[0006]针对相关技术中传输组播数据至多客户端引起的数据延时的问题,本发明提出一种组播数据的发送方法和接收方法、以及服务器数据传输的管理装置和接收端数据传输的管理装置,能够减少传播组播数据时的数据延时,提高通信效率。
[0007]本发明的技术方案是这样实现的:[0008]根据本发明的一个方面,提供了 一种组播数据的发送方法。
[0009]该传送方法包括:
[0010]将需要发送的组播数据拆分为多个组播包;
[0011]在每个组播包的包头添加参数信息,参数信息用于表示当前组播包在组播数据中的位置;
[0012]对添加参数信息后的组播包进行组播发送。
[0013]其中,每个组播包的参数信息包括:
[0014]第一数据头和第二数据头,其中,第一数据头用于表示由组播数据拆分得到的组播包的数量,第二数据头用于表示当前组播包在多个组播包中的排序。
[0015]优选地,该组播包的长度小于2K。
[0016]进一步地,对添加参数信息后的组播包进行组播发送包括:
[0017]基于远程直接存储器存取RDMA协议发送封装后的组播包。
[0018]并且,对添加参数信息后的组播包进行组播发送包括:
[0019]将组播包发送至交换机,由交换机对组播包进行复制并将复制的组播包发送至接收端。
[0020]根据本发明的一个方面,提供了 一种组播数据的接收方法。
[0021]该接收方法包括:
[0022]接收预先由组播数据拆分得到的多个组播包;
[0023]根据每个组播包的包头的参数信息确定当前组播包在组播数据中的位置;
[0024]根据每个组播包的位置将该组播包加入接收队列。
[0025]进一步地,每个组播包的参数信息包括:
[0026]第一数据头和第二数据头,其中,第一数据头用于表示由组播数据拆分得到的组播包的数量,第二数据头用于表示当前组播包在多个组播包中的排序。
[0027]根据本发明的一个方面,提供了 一种服务器数据传输的管理装置。
[0028]该服务器数据传输的管理装置包括:
[0029]主控模块,用于在对服务器进行初始化的情况下,配置监听模块、发送模块、查询发送状态模块;
[0030]监听模块用于建立并维持与接收方的通信;
[0031]发送模块用于将需要发送的组播数据拆分为多个组播包,并在每个组播包的包头添加参数信息,参数信息用于表示当前组播包在组播数据中的位置,以及对添加参数信息后的组播包进行组播发送;
[0032]查询发送状态模块用于查询每个组播包的发送状态,并控制发送模块对多个组播包进行逐个发送。
[0033]其中,上述监听模块用于建立并维持与接收方的通信包括:
[0034]基于远程直接存储器存取RDMA协议建立并维持与接收方的通信。
[0035]进一步地,每个组播包的参数信息包括:
[0036]第一数据头和第二数据头,其中,第一数据头用于表示由组播数据拆分得到的组播包的数量,第二数据头用于表示当前组播包在多个组播包中的排序。
[0037]此外,发送模块用于对添加参数信息后的组播包进行组播发送包括:[0038]将组播包发送至交换机,由交换机对组播包进行复制并将复制的组播包发送至接收端。
[0039]根据本发明的一个方面,提供了一种接收端数据传输的管理装置。
[0040]该接收端数据传输的管理装置包括:
[0041]主控模块,用于在对接收端进行初始化的情况下,配置接收模块、查询模块;
[0042]接收模块用于接收预先由组播数据拆分得到的多个组播包,根据每个组播包的包头的参数信息确定当前组播包在组播数据中的位置,并根据每个组播包的位置将该组播包加入接收队列;
[0043]查询模块用于在查询到接收队列中存在数据的情况下,提交接收队列中的数据。
[0044]其中,每个组播包的参数信息包括:
[0045]第一数据头和第二数据头,其中,第一数据头用于表示由组播数据拆分得到的组播包的数量,第二数据头用于表示当前组播包在多个组播包中的排序。
[0046]本发明通过拆分组播数据,然后发送拆分后的组播包能提供高效的组播通信机制,并且减少数据延时,此外,通过给拆分后的组播包添加具有确定每个组播包在组播数据中的位置的包头,有利于组播包发送的完整性和有序性,进一步提高通信效率。
【专利附图】
【附图说明】[0047]图1是现有技术中传输组播数据的示意图;[0048]图2是根据本发明实施例的组播数据的发送方法的流程图;[0049]图3是根据本发明的一个实施例的发送组播数据的示意图;[0050]图4是根据本发明实施例的服务器数据传输的管理装置的框图;[0051]图5是根据本发明的另一个实施例的服务器端运行的示意图;[0052]图6是根据本发明实施例的组播数据的接收方法的流程图;[0053]图7是根据本发明的又一个实施例的组播数据的接收方法的流程图;[0054]图8是根据本发明实施例的接收端数据传输的管理装置的框图;[0055]图9是为根据本发明的再一个实施例的服务器端接收步骤的流程图;[0056]图10是根据本发明实施例的CS模型的原理图。【具体实施方式】[0057]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完
整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
[0058]根据本发明的实施例,提供了 一种组播数据的发送方法。
[0059]如图2所示,根据本发明实施例的发送方法可以包括:
[0060]步骤S201,将需要发送的组播数据拆分为多个组播包,每个组播包需要满足长度要求,优选地,该组播包的长度小于2K ;
[0061]步骤S203,在每个组播包的包头添加参数信息,参数信息用于表示当前组播包在组播数据中的位置。[0062]步骤S205,对添加参数信息后的组播包进行组播发送,并且优选地,基于远程直接存储器存取RDMA协议发送封装后的组播包,将组播包发送至交换机(可以存储至交换机的缓存中),由交换机对组播包进行复制并将复制的组播包发送至多个接收端,并且,基于需要接收组播包的客户端的数量确定复制的份数,此外,可以将多个需要接收组播数据的接收端加入一个组播组,通过设置组播组可以避免重发或是漏发现象。
[0063]其中,文中所述的组播包的参数信息均可以包括:第一数据头和第二数据头,其中,第一数据头用于表示由组播数据拆分得到的组播包的数量,第二数据头用于表示当前组播包在多个组播包中的排序,并且,接收方可以根据第一数据头判断多个组播包是否接收完成,进一步地,接收方可以根据第二数据头将多个数据进行正确排序。
[0064]如图3所示,在实际应用中,根据本发明实施例的组播数据的发送方法可以应用为以下步骤:
[0065]主线程执行初始化设置,进行缓冲资源分配,成生发送线程、查询线程、等待线程和删除线程,在成功之后将数据挂在队列,在需要结束时取消其它线程,如果不结束,则继续将数据挂在队列;
[0066]等待线程随时监听客户端发来的连接,然后接收,在成功地与客户端交换数据之后,将客户端加入全局客户链表,如果交换数据失败,则主线程执行取消其它线程;
[0067]发送线程判断队列上是否有数据,如果无,则休眠,如果有,则获取组播缓存,取队列数据拷贝到组播缓存中,再将组播缓存持在QP发送队列;
[0068]查询线程判断数据是否发送成功,如果成功,则继续查询,如果没有发送成功则休眠;
[0069]删除线程判断客户端是否断开连接,如果是则将该断开连接的客户端从全局客户端链表中删除,如果否,则删除线程休眠。
[0070]根据本发明的实施例,提供了 一种服务器数据传输的管理装置。
[0071]如图4所示,根据本发明实施例的服务器数据传输的管理装置可以包括:
[0072]主控模块41,用于在对服务器进行初始化的情况下,配置监听模块、发送模块、查询发送状态模块;
[0073]监听模块42,用于建立并维持与接收方的通信;
[0074]发送模块43,用于将需要发送的组播数据拆分为多个组播包并在每个组播包的包头添加参数信息,参数信息用于表示当前组播包在组播数据中的位置,以及对添加参数信息后的组播包进行组播发送;
[0075]查询发送状态模块44,用于查询每个组播包的发送状态,并控制发送模块对多个组播包进行逐个发送。
[0076]其中,监听模块42用于建立并维持与接收方的通信可以包括:基于远程直接存储器存取RDMA协议建立并维持与接收方的通信。
[0077]进一步地,每个组播包的参数信息可以包括:第一数据头和第二数据头,其中,第一数据头用于表示由组播数据拆分得到的组播包的数量,第二数据头用于表示当前组播包在多个组播包中的排序。
[0078]此外,在发送模块43用于对添加参数信息后的组播包进行组播发送时,可以将组播包发送至交换机,由交换机对组播包进行复制并将复制的组播包发送至接收端。[0079]如图5所示,为根据本发明的一个实施例的服务器端运行的示意图。为了支持一个服务器多个客户端(即,本文中所述的接收端),服务器端需要按多线程/多进程的方式设计,其中,多线程/多进程主要包括:主线程、监听线程、发送线程、查询发送状态线程、删除上下文线程。以下主要描述每个线程的角色用途。
[0080]1、主线程。用户通过主线程设定RDMA Lib的一些配置参数、创建监听线程、发送线程、查询线程和删除上下文线程,分配缓冲区,以及做必要的退出清理工作。其中,配置参数主要包括监听线程的端口、IB (InfiniBand)设备名和端口号、每帧的长度、帧缓冲区的数目、组播组的IP地址、本地IB卡的IP地址等等。此外,在主线程生成其它线程之后,每个线程彼此独立运作。
[0081]2、监听线程。也称为等待连接线程。用于与随时可能发起连接请求的客户端建立初始连接,双方交换RDMA通信的必要信息。由于在RDMA双方通信之前,必须通过另外一种通信通道交换彼此的身份和认证信息,否则RDMA连接将无法建立。其中,另外一种通信通道通常指socket信道,本文也采用socket信道。
[0082]3、发送线程。用于将每帧数据发送至客户端,并写至存储加速卡(SysCache )设备。本线程的主要任务是将用户的组播数据(可以为10MB)拆分成小包(优选地,单个小包的长度可以为2KB),并进行封装包头,然后发送到交换机/路由器。由交换机/路由器进行复制,并转发到组播组里的各个客户端。
[0083]其中,在监听线程和发送线程之间,包括异步发送数据步骤,用于将组播数据入队,然后数据出除列后进入发送线程。
[0084]4、查询发送状态线程。在将每一帧数据发送交换机后,查询发送状态线程用于查询数据是否发送成功,如果发送成功,则可以进行下一帧数据的发送,否则,需要等待该数据帧发送成功。采用并行的两个线程执行,即,将查询发送状态线程和发送线程的分离,可以提高数据发送的速率。
[0085]5、删除上下文线程。在服务器端,通过链表来维护客户端与服务器进行RDMA通信的必要信息(也可以称为上下文信息),用于RDMA Write操作定时发送心跳。在客户端断开后,服务器向客户端发送的心跳得不到回应,则服务器可以认定该客户端已断开通信连接,因此,服务器会将这些信息从链表中删除,并释放本地的资源。由于在操作链表之前需要获取锁,而释放本地资源比较耗时,因此,在实际操作中,服务器端还维护了一个移除链表,用于将链接断开客户端(也可称为死掉客户端)的上下文信息从激活链表中删除,放入移除链表中。删除上下文线程主要是负责定时检测移除链表中是否有元素,如果有,则删除移除链表中的元素,释放断开客户端对应的本地IB资源,否则,睡眠后继续检测。
[0086]根据本发明的实施例,提供了 一种组播数据的接收方法。
[0087]如图6所示,根据本发明实施例的接收方法可以包括:
[0088]步骤S601,接收预先由组播数据拆分得到的多个组播包;
[0089]步骤S603,根据每个组播包的包头的参数信息确定当前组播包在组播数据中的位置,进一步地,每个组播包的参数信息可以包括:第一数据头和第二数据头,其中,第一数据头用于表示由组播数据拆分得到的组播包的数量,第二数据头用于表示当前组播包在多个组播包中的排序;
[0090]步骤S605,根据每个组播包的位置将该组播包加入接收队列,并且,需要将第一数据头和第二数据头从每个组播包中剥离出来之后,根据组播包在多个组播包中的位置封装剥离后的多个组播包。
[0091]在实际应用中,根据本发明实施例的组播数据的发送和接收方法可以采用CS(Client-Server)模型来支持单服务器与多客户端的通信来实现,并且,可以在服务器和客户端采用不同的开发平台,例如,服务器端使用Linux操作系统,而客户端可以采用Windows系统,也可以使用计算机领域公知的一些其它操作系统。
[0092]如图7所示,在实际应用中,根据本发明实施例的组播数据的接收方法可以应用为以下步骤:
[0093]主线程与服务器端进行socket通信从而进行必要的信息交互,然后进行初始化设置、缓冲资源分配、生成查询线程和、从队列中获取数据,询问获取数据是否结束,如果结束则关闭其它线程,如果未结束则继续从队列中获取数据。
[0094]接收线程询问本地是否有空缓存,如果否则将缓存挂到QP接收队列,如果有则休眠1ms,然后继续询问本地是否有空缓存。
[0095]生成查询线程获取用户缓存,在判断是否收到数据,如果未接收到数据,则休眠Ims,然后继续判断是否完成一帧数据重组,如果接收到数据,则复制用户缓存,判断是否完成一帧数据重组,如果未完成一帧数据重组,由继续接收数据,如果完成一帧数据重组,则将数据挂入队列。
[0096]根据本发明的实施例,提供了 一种接收端数据传输的管理装置。
[0097]如图8所示,根据本发明实施例的管理装置可以包括:
[0098]主控模块81,用于在对接收端进行初始化的情况下,配置接收模块、查询模块;
[0099]接收模块82,用于接收预先由组播数据拆分得到的多个组播包,根据每个组播包的包头的参数信息确定当前组播包在组播数据中的位置,并根据每个组播包的位置将该组播包加入接收队列;
[0100]查询模块83,用于在查询到接收队列中存在数据的情况下,提交接收队列中的数据。
[0101]其中,每个组播包的参数信息可以包括:
[0102]第一数据头和第二数据头,其中,第一数据头用于表示由组播数据拆分得到的组播包的数量,第二数据头用于表示当前组播包在多个组播包中的排序。
[0103]客户端程序总体框架如图5所示。为了达到低延时的性能要求,客户端也采用了多线程的设计。
[0104]如图9所示,为根据本发明的一个实施例的服务器端接收步骤的示意图。为了达到低延时的性能要求,客户端也采用了多线程的设计。线程的角色描述如下:
[0105]1、主线程。通过 socket 与服务器端建立 TCP (Transmission Control Protocol传输控制协议)连接并与服务器进行必要的数据通信,获取服务器发送的组播数据包的控制信息和组播组信息,然后分配本地的IB资源及缓冲区。最后创建接收线程和查询线程,以及做必要的退出清理工作。
[0106]2、接收线程。接收来自服务器的组播数据包,获取包头中关于数据位置信息后,将包头剔除掉后拷贝到预先分配好的数据接收缓存中。如果该缓存被填充满,则加入接收队列中,等待下一步操作。[0107]其中,建立连接后,在存接收线程之后,存在异步获取数据步骤,接收线程将数据除队之后,用于将组播数据进行异步接收,从而取出队列,同时进行超时处理。
[0108]3、查询线程。该线程会被周期性的唤醒,来检查接收队列上是否有数据,如果有数据,则将数据提交给用户;否则,继续会进入睡眠状态,等待下一次被唤醒。
[0109]如图10所示,为根据本发明实施例的CS模型的原理图,其中,CS模型分为服务器端、交换机端和客服端。
[0110]服务器端的操作包括:将等待发送的数据(即文中所说的组播数据)进行数据包的拆分,可以根据组播包的大小要求将组播包分为O号包至N号包,拆分后的小包(即文中所说的组播包,)能够满足组播包的大小要求,例如,在一个实施例中,组播包的长度可以小于2K ;此外,并根据组播包的总数计算出一个组播包数量的总值,并将该总值序列化作为第一数据头,接收方可以根据总值判断一个组播数据所包含的组播包是否完全接收完成,利用总值进行丢包检测,可以防止漏发组播包;然后对拆分后的多个组播包再进行计算并序列化得出第二数据头,该第二数据头能表示每个组播包在多个组播包中的位置,第二数据头的设置主要目的是为了方便客户端在收到组播包后可以根据该序列号进行数据的重组;最后将两个数据头与拆分好的对应的组播包进行合并后通过RDMA协议写入交换机的缓存中。图4中由总值序列化得到的数据头为第一数据头,由序列号序列化得到的数据头为第 数据头。
[0111]交换机的操作包括:将收到的数据包进行复制,然后通过InfiniBand发送至组播组的各个客户端的缓存中,预先建立组播组,将需要相同组播数据的多个客户加入一个组播组。
[0112]客户端的操作包括:在收到组播包后,通过剥离数据包头(即两个数据头),通过两个数据头确定组播包在接收多个组播包中的位置后,将由一个组播数据拆分得到的多个组播包组合后返回给客户端。
[0113]进一步地,可以根据本发明实施例,将数据传输分为服务器和客户端两部分,服务器负责将数据发往已注册并加入组播组的所有客户端;客户端负责接收这些数据。
[0114]综上所述,借助于本发明的上述技术方案,本发明通过拆分组播数据,然后发送拆分后的组播包能提供高效的组播通信机制,并且减少数据延时,此外,通过给拆分后的组播包添加具有确定每个组播包在组播数据中的位置的包头,有利于组播包发送的完整性和有序性,进一步提高通信效率。此外,本发明中则采用InfiniBand的组播技术提供了一种高效的单服务器、多客户端的通信机制,几乎可以将数据同时高速的发送到多客户端,而且延时不会随客户端的增长而线性递增。
[0115]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种组播数据的发送方法,其特征在于,包括: 将需要发送的所述组播数据拆分为多个组播包; 在每个组播包的包头添加参数信息,所述参数信息用于表示当前组播包在所述组播数据中的位置; 对添加参数信息后的组播包进行组播发送。
2.根据权利要求1所述的发送方法,其特征在于,每个组播包的参数信息包括: 第一数据头和第二数据头,其中,所述第一数据头用于表示由所述组播数据拆分得到的组播包的数量,所述第二数据头用于表示当前组播包在所述多个组播包中的排序。
3.根据权利要求1所述的发送方法,其特征在于,所述组播包的长度小于2K。
4.根据权利要求1所述的发送方法,其特征在于,对添加参数信息后的组播包进行组播发送包括: 基于远程直接存储器存取RDMA协议发送封装后的组播包。
5.根据权利要求1所述的发送方法,其特征在于,对添加参数信息后的组播包进行组播发送包括: 将组播包发送至交换机,由所述交换机对组播包进行复制并将复制的组播包发送至接收端。
6.—种组播数据的接收方法,其特征在于,包括: 接收预先由所述组播 数据拆分得到的多个组播包; 根据每个组播包的包头的参数信息确定当前组播包在所述组播数据中的位置; 根据每个组播包的位置将该组播包加入接收队列。
7.根据权利要求6所述的发送方法,其特征在于,每个组播包的参数信息包括: 第一数据头和第二数据头,其中,所述第一数据头用于表示由所述组播数据拆分得到的组播包的数量,所述第二数据头用于表示当前组播包在所述多个组播包中的排序。
8.一种服务器数据传输的管理装置,其特征在于,包括: 主控模块,用于在对服务器进行初始化的情况下,配置监听模块、发送模块、查询发送状态模块; 所述监听模块用于建立并维持与接收方的通信; 所述发送模块用于将需要发送的所述组播数据拆分为多个组播包,并在每个组播包的包头添加参数信息,所述参数信息用于表示当前组播包在所述组播数据中的位置,以及对添加参数信息后的组播包进行组播发送; 所述查询发送状态模块用于查询每个组播包的发送状态,并控制所述发送模块对所述多个组播包进行逐个发送。
9.根据权利要求8所述的管理装置,其特征在于,所述监听模块用于建立并维持与接收方的通信包括: 基于远程直接存储器存取RDMA协议建立并维持与接收方的通信。
10.根据权利要求8所述的管理装置,其特征在于,每个组播包的参数信息包括: 第一数据头和第二数据头,其中,所述第一数据头用于表示由所述组播数据拆分得到的组播包的数量,所述第二数据头用于表示当前组播包在所述多个组播包中的排序。
11.根据权利要求8所述的管理装置,其特征在于,所述发送模块用于对添加参数信息后的组播包进行组播发送包括: 将组播包发送至交换机,由所述交换机对组播包进行复制并将复制的组播包发送至接收端。
12.一种接收端数据传输的管理装置,其特征在于,包括: 主控模块,用于在对接收端进行初始化的情况下,配置接收模块、查询模块; 所述接收模块用于接收预先由所述组播数据拆分得到的多个组播包,根据每个组播包的包头的参数信息确定当前组播包在所述组播数据中的位置,并根据每个组播包的位置将该组播包加入接收队列; 所述查询模块用于在查询到所述接收队列中存在数据的情况下,提交所述接收队列中的数据。
13.根据权利要求12所述的管理装置,其特征在于,每个组播包的参数信息包括: 第一数据头和第二数据头,其中,所述第一数据头用于表示由所述组播数据拆分得到的组播包的数量,所述第二数 据头用于表示当前组播包在所述多个组播包中的排序。
【文档编号】H04L12/953GK103441937SQ201310366935
【公开日】2013年12月11日 申请日期:2013年8月21日 优先权日:2013年8月21日
【发明者】张建斌, 袁清波, 苗艳超, 刘新春, 邵宗有 申请人:曙光信息产业(北京)有限公司