首页 / 抓包方法、白盒交换机、存储介质及程序产品

抓包方法、白盒交换机、存储介质及程序产品实质审查 发明

技术领域

[0001] 本申请涉及网络技术领域,特别是指一种抓包方法、白盒交换机、存储介质及程序产品。

相关背景技术

[0002] 随着业务产品不断增多、用户量呈指数级的增长,数据中心中核心交换机、汇聚交换机所承担的网络流量也与日俱增;与此同时,网络传输中出现的问题也随之增多,此时网络管理员们需要一个有效、可行的办法,对网络中传输的数据包进行截获、转存、分析,以快速的进行故障诊断。
[0003] 目前的抓包方式如图1所示,采用流量镜像的方法,将通过交换机某一端口(如以太网4(Ethernet4))的流量镜像到另一个端口(Ethernet X),将该另一端口连接到一台服务器(抓包服务器),并在该服务器上进行抓包、转存、分析。然而,这种方法需要运维人员配置额外的服务器,增加运维人员工作量,且这种方法需要镜像端口(前述另一端口)接收全部流量,可能会出现流量损失的情况。

具体实施方式

[0040] 为使本申请要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
[0041] 应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
[0042] 在本申请的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
[0043] 另外,本文中术语“系统”和“网络”在本文中常可互换使用。
[0044] 在本申请所提供的实施例中,应理解,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
[0045] 在对本申请实施例进行说明之前,首先对相关技术点进行说明:
[0046] 中央处理器(Central Processing Unit,CPU)与交换芯片的操作模式包括如图2所述的用户空间模式(User‑Space Mode)和如图3所示的内核空间模式(Kernel‑Space Mode);其中,User‑Space Mode下,使用操作系统(如linux)驱动交换芯片(如图2中的tofino)的模块(如bf_kdrv工具),运行在CPU上的应用程序通过bf_kdrv工具中的bf_pkt APIs(包管理程序接口)与交换芯片(如tofino)上的网口(Ethernet0、Ethernet4、…、Ethernet N等)进行数据传输;Kernel‑Space Mode下,使用内核包管理驱动模块(kernel packet driver,如bf_kpkt工具),将交换芯片(如tofino)上的网口(图3中实线标识的Ethernet0、Ethernet4、…、Ethernet N等)映射到操作系统(如linux)内核中,该模式可以在操作系统上看到(例如使用ip_addr命令)所有的虚拟网口(图3中虚线标识的Ethernet0、Ethernet4、…、Ethernet N等)。其中,图3中的bf_pci0是在系统层映射外设部件互联标准(Peripheral Component Interconnect,PCI)接口的资源,bf_knet为内核网络模块。
[0047] 下面,结合附图,对本申请实施例的抓包方法、白盒交换机、存储介质及程序产品的实现过程进行详细的说明。
[0048] 本申请的实施例提供一种抓包方法,所述抓包方法应用于白盒交换机,所述白盒交换机包括:代理模块、交换芯片以及CPU,如图4所示,所述方法包括:
[0049] 步骤401,所述代理模块获取控制平台设备的第一请求,所述第一请求用于请求在第一时长内抓取目标类型的数据包;这里,控制平台设备为用于管控白盒交换机的设备,所述控制平台设备上设置有与用户交互的可视化界面(如网络(web)界面),用户可以通过在所述可视化界面上的操作对所述白盒交换机进行管控,如抓包,即,用户可以通过“白屏操作”的方式控制白盒交换机抓包,相对于现有的“黑屏操作”,该方式能够杜绝用户误操作产生的风险,减少生产设备的不安全因素;另外,本步骤中数据包的类型可以用数据包的目的网络协议(Internet Protocol,IP)地址表示;
[0050] 步骤402,响应于所述第一请求,所述代理模块触发所述交换芯片执行第一命令,所述第一命令用于将所述目标类型的数据包复制到所述CPU;本步骤具体可以是:所述代理模块向所述交换芯片下发规则,所述规则用于触发所述交换芯片执行所述第一命令,其中,该规则可以表述为:以所述第一请求中的目标类型作为匹配条件,执行复制到CPU(copy_to_CPU)方法。例如,在所述交换芯片为前述的tofino时,本步骤具体可以是所述代理模块通过bfrt(Barefoot runtime,barefoot开发的运行时)方式向所述tofino下发所述规则,所述tofino基于接收到的所述规则执行所述第一命令,以对目标类型的数据包进行复制。在此基础上,所述交换芯片通过与所述CPU之间的高速串行计算机扩展(Peripheral Component Interconnect express,PCIe)总线将复制的数据包传输给所述CPU;
[0051] 步骤403,所述代理模块通过访问所述白盒交换机的存储空间获取第一文件,所述第一文件与复制到所述CPU的所述目标类型的数据包相关;这里,所述存储空间例如为所述白盒交换机的磁盘/硬盘、存储器等能够存储数据的区域;也就是说,在将所述目标类型的数据包复制到所述CPU之后,运行在所述CPU上的操作系统可以根据所述目标类型的数据包生成所述第一文件,并将所述第一文件存储到所述存储空间内。其中,所述第一文件可以由所述目标类型的数据包组成,所述第一文件也可以是对所述目标类型的数据包进行处理之后生成的文件;
[0052] 步骤404,所述代理模块向所述控制平台设备发送所述第一文件。
[0053] 应用本申请实施例的抓包方法的白盒交换机包括代理模块、交换芯片以及CPU,其中,所述抓包方法包括:首先,所述代理模块获取控制平台设备的第一请求,所述第一请求用于请求在第一时长内抓取目标类型的数据包;其次,响应于所述第一请求,所述代理模块触发所述交换芯片执行第一命令,所述第一命令用于将所述目标类型的数据包复制到所述CPU;再次,所述代理模块通过访问所述白盒交换机的存储空间获取第一文件,所述第一文件与复制到所述CPU的所述目标类型的数据包相关;最后,所述代理模块向所述控制平台设备发送所述第一文件。如此,实现了所述白盒交换机基于所述控制平台设备的第一请求,对特定的数据包(目标类型的数据包)进行抓包,并将与抓取的数据包对应的所述第一文件反馈给所述控制平台设备,这样,无需抓取全量数据包,避免出现流量损失的情况,且无需配置额外的服务器抓包,节约了抓包成本且减少了运维人员的工作量。
[0054] 这里,需要说明的是,执行本申请实施例的抓包方法的前提是白盒交换机完成初始化过程,且白盒交换机初始化后处于Kernel‑Space Mode,如此,交换芯片复制到CPU中的数据包才能够通过相应的虚拟网口发送到操作系统中。以图6为例,tofino通过PCIe将目标类型的数据包复制到CPU之后,利用bf_kpkt工具,将所述目标类型的数据包显示在bf_pci0中,bf_knet工具对bf_pci0中的所述目标类型的数据包进行解析,获取所述目标类型的数据包的源端口信息(如图6中实线标识的Ethernet4),之后,通过与该源端口有映射关系的虚拟端口(如图6中虚线标识的Ethernet4)将所述目标类型的数据包发送到运行在所述CPU上的所述操作系统。其中,若操作系统(网络操作系统(Network Operating System,NOS))为开源网络操作系统(Software for Open Networking in the Cloud,SONiC),根据SONiC的相关规定,agent需要运行在开源的应用容器引擎(docker)容器中,在docker启动agent时,需要使用host模式,才可以在docker容器中查看到由bf_kpkt映射到操作系统内核上的网卡,因此,需要在docker启动参数中加入网络参数为host(net=host),其中,host模式为docker容器中的一种网络模式,在该host模式下,docker容器与宿主机在网络层面上共享同一套网络命名空间(Network Namespace)。这意味着docker容器的网络配置(如IP地址)是基于宿主机的,而不是像在其他模式下那样为每个容器单独设置。
[0055] 作为一个可选的实现方式,步骤401包括:
[0056] 所述代理模块获取所述控制平台设备通过调用所述代理模块暴露的表现层状态转换应用接口(Representational State Transfer Application Programming Interface,RestAPI)接口向所述代理模块传入的所述第一请求。
[0057] 也就是说,相关人员在开发/编写代理模块(图6和图8中的agent)时,会封装RestAPI,因此,agent会对外暴露RestAPI,即agent会对外提供RestAPI,这样,所述控制平台设备会调用agent对外提供的RestAPI,以向agent传入所述第一请求,其中,所述第一请求包括一个或多个数据包类型和抓包时间,其中,所述数据包类型可以用数据包的目的IP地址标识,所述抓包时间用于指示抓包时间限制最大值,如10min,即在agent接收到所述第一请求之后的10min内对目的IP地址为所述第一请求中携带的目的IP地址的数据包进行抓包。
[0058] 这里,需要说明的是,在控制平台设备侧,运维人员可以基于所述控制平台设备的可视化界面与所述控制平台设备交互,运维人员输入期望抓获的数据包类型及抓包时间,并点击所述可视化界面中的抓包图标/按钮等,以触发所述控制平台设备调用agent提供的RestAPI,如此,实现了白屏化抓包,降低了运维人员的误操作风险。
[0059] 作为一个可选的实现方式,步骤404包括:
[0060] 所述代理模块通过所述RestAPI接口,向所述控制平台设备反馈所述第一文件。也就是说,所述代理模块在从所述存储空间中获取到所述第一文件之后,再利用所述代理模块暴露的所述RestAPI接口将所述第一文件返回给所述控制平台设备,以使得运维人员利用所述控制平台设备查看所述第一文件,从而快速的进行故障诊断。
[0061] 进一步地,作为一个可选的实现方式,步骤403之前,所述方法还包括:
[0062] 所述代理模块通过第一命令行解释器shell命令,触发所述白盒交换机的操作系统运行第一程序,所述第一程序用于获取复制到所述CPU的所述目标类型的数据包,并将所述目标类型的数据包转存为所述第一文件,其中,所述第一文件为数据包抓取(Packet Capture,pcap)格式的文件。
[0063] 这里,shell是指一个面向用户的命令接口,也可以理解为命令行解释器,可以通过shell启动一个程序,具体的,本可选的实现方式中,所述代理模块通过第一shell命令,启动所述第一程序。具体的,所述第一程序为网络包分析软件,所述网络包分析软件可以将数据包保存为(pcap)文件。
[0064] 具体的,本可选的实现方式中,操作系统的实现过程为:操作系统运行第一程序,从虚拟网口(以图6为例,所述虚拟网口为虚线标识的Ethernet4)获取到目标类型的数据包,之后,将获取到的数据包转存为pcap文件,并将该pcap文件存储在存储空间(磁盘/硬盘或存储器)中。
[0065] 作为一个具体的实现方式,所述第一程序包括抓包工具(具体例如tcpdump软件,其中,tcpdump软件是一个运行在命令行下的抓包工具,用于抓取如传输协议控制(Transmission Control Protocol,TCP)包、用户数据报协议(User Datagram Protocol,UDP)包、因特网控制报文协议(Internet Control Message Protocol,ICMP)包及其他报文等)或网络封包分析软件(如wireshark软件)。具体的,本申请实施例中,具体基于tcpdump软件或wireshark软件将目标类型的数据包转存为pcap文件。
[0066] 进一步地,作为一个可选的实现方式,所述方法还包括:
[0067] 在第二时刻,所述代理模块通过第二shell命令,触发所述白盒交换机的操作系统停止运行所述第一程序,其中,所述第二时刻与第一时刻之间的时间间隔为所述第一时长,所述第一时刻为所述代理模块触发所述交换芯片执行所述第一命令的时刻。
[0068] 也就是说,在执行抓包的时间达到运维人员设置的抓包时间(如10min)时,所述代理模块通过所述第二shell命令与所述操作系统进行交互,以指示所述操作系统停止运行所述第一程序,提升白盒交换机的性能。
[0069] 进一步地,作为另一个可选的实现方式,步骤402之后,所述方法还包括:
[0070] 在第二时刻,所述代理模块触发所述交换芯片停止执行所述第一命令,其中,所述第二时刻与第一时刻之间的时间间隔为所述第一时长,所述第一时刻为所述代理模块触发所述交换芯片执行所述第一命令的时刻。
[0071] 也就是说,在所述代理模块触发所述交换芯片执行所述第一命令之后,所述代理模块开始计时(计时时长为运维人员设置的抓包时长(如10分钟)),在计时结束后,所述代理模块通过所述交换芯片停止执行copy_to_CPU的操作。如此,能够解决现有的抓包方式中,由于没有停止执行copy_to_CPU的操作,导致交换芯片在长时间内将大量的数据包复制到所述CPU,对白盒交换机的性能造成影响的问题。具体的,本可选的实现方式的一个具体示例为:在所述第二时刻,所述代理模块向所述交换芯片发送第一指令,所述第一指令指示所述交换芯片停止执行所述规则(以所述第一请求中的目标类型作为匹配条件,执行copy_to_CPU方法),并删除所述规则。
[0072] 下面,结合图5、图6、图7和图8,对本申请实施例的抓包方法中,所述代理模块(agent)、所述交换芯片(以tofino为例)、所述CPU和所述控制平台设备的交互过程进行详细说明。
[0073] 步骤701,agent收到API请求;本步骤具体为:agent收到控制平台设备通过agent提供的RestAPI接口(如图8所示)发送API请求(前述的第一请求);其中,控制平台设备在运维人员基于可视化操作界面输入待抓取的数据包的类型和抓取时长之后,响应于运维人员在所述可视化界面上点击抓包图标/按钮的操作,通过所述RestAPI向所述agent发送所述API请求;如此,实现了通过“白屏操作”执行抓包流程,减少了运维人员操作失误的情况。
[0074] 步骤702,通过bfrt向tofino下发copu_to_CPU指令;本步骤具体为:agent在接收到所述API请求后,响应于所述API请求,向所述tofino下发所述copy_to_CPU指令,其中,所述tofino以所述API请求中的数据包类型(如前所述可以用数据包的目的IP地址标识)作为匹配条件,执行copy_to_CPU操作,也就是说,agent向所述tofino下发的所述copy_to_CPU指令是带条件的指令(只将特定的数据包复制到CPU)。
[0075] 这里,结合图5,对tofino执行copy_to_CPU操作的过程进行说明。其中,如图5所示,tofino主要由收包(Packet Ingress)模块、包复制引擎(Packet Replication Engine,PRE)和流量控制(Traffic Manager,TM)模块(即图5中的PRE&TM模块)、发包(Packet Egress)模块组成。数据包在tofino中的一般传输过程为:数据包先经过Packet Ingress模块,进行报文头的拆解和分析;后进入PRE&TM模块;最后由Egress模块重新组装输出到对应端口。在此基础上,在接收到agent发送的copu_to_CPU指令后,在Packet Ingress模块中可以对需要抓取的数据包进行筛选,并对筛选后的数据包(目标类类型的数据包)标记copy_to_CPU方法。在经过PRE&TM模块时,tofino会将标记后的数据包拷贝,并将输出端口标记为内部连接CPU的端口(如图5中的Port64),同时在拷贝后的数据包中加入源端口信息(如图6中的Ethernet4),数据包在经过Packet Egress模块后,会将该数据包拷贝到CPU中。其中,由于该抓包过程是将拷贝的数据包上送给CPU,因此,该操作不会影响原有的业务流量。
[0076] 步骤703,通过tcpdump获取报文并保存pcap文件;本步骤具体为:agent通过第一shell命令运行tcpdump,以将复制到CPU中的数据包转存为pcap文件,并将pcap文件放置在指定的磁盘路径下。
[0077] 这里,需要说明的是,操作系统(如linux)运行在CPU上,如图3所示,内核包管理驱动模块(bf_kpkt)运行在操作系统中。当CPU接收到tofino上送的数据包后,该数据包会在bf_kpkt工具的处理下出现在bf_pci0中,bf_knet工具会解析数据包中的源端口信息(如图6中的实线标识Ethernet4),并通过映射的虚拟端口(如图6中的虚线标识的Ethernet4)发送到操作系统,操作系统在接收到所述第一shell命令时,运行tcpdump软件,以将接收到的数据包转存为pcap文件,之后,将pcap文件存储在白盒交换机的存储空间内。
[0078] 相反的,如果操作系统向映射的Ethernet4(图6中虚线Ethernet4)发送数据包(数据包在图6中由上向下),bf_knet也会在数据包中加入端口信息,通过bf_pci0、bf_kpkt传入tofino中,此时tofino能获取到来源的端口信息。
[0079] 步骤704,按给定时间进行计时;这里,给定时间为API请求中携带的抓包时间/时长;本步骤具体为,agent在通过bfrt向tofino下发copu_to_CPU指令并通过第一shell命令运行tcpdump之后,开始计时,计时时长为API请求中携带的抓包时间。
[0080] 步骤705,计时结束后停止tcpdump;本步骤具体为,agent在计时结束后,通过第二shell命令停止操作系统运行tcpdump。
[0081] 步骤706,通过bfrt删除tofino中copy_to_CPU规则;本步骤具体为,在计时结束后,agent通过bfrt删除tofino中copy_to_CPU规则,以指示tofino停止向CPU发送复制的数据包;这里,需要说明的是,步骤705和步骤706均是在计时接收后执行的步骤,两者的执行顺序不做限定,可以如图7所示,先执行步骤705,也可以限制性步骤706,还可以同时执行步骤705和步骤706。
[0082] 步骤707,将抓取到的pcap文件返回;本步骤具体为,agent将抓取的pcap文件通过RestAPI返回给控制平台设备。
[0083] 本申请的实施例还提供一种白盒交换机,如图9所示,所述白盒交换机包括:代理模块901、交换芯片902以及中央处理器CPU 903,其中,所述代理模块901用于执行以下步骤:
[0084] 获取控制平台设备的第一请求,所述第一请求用于请求在第一时长内抓取目标类型的数据包;
[0085] 响应于所述第一请求,触发所述交换芯片902执行第一命令,所述第一命令用于将所述目标类型的数据包复制到所述CPU 903;
[0086] 通过访问所述白盒交换机的存储空间获取第一文件,所述第一文件与复制到所述CPU 903的所述目标类型的数据包相关;
[0087] 向所述控制平台设备发送所述第一文件。
[0088] 可选地,所述代理模块901在用于获取控制平台设备的第一请求时,具体用于:获取所述控制平台设备通过调用所述代理模块暴露的表现层状态转换应用接口RestAPI接口向所述代理模块901传入的所述第一请求。
[0089] 可选地,所述代理模块901在用于向所述控制平台设备发送所述第一文件时,具体用于:通过所述RestAPI接口,向所述控制平台设备反馈所述第一文件。
[0090] 所述代理模块901通过访问所述白盒交换机的存储空间获取第一文件之前,所述代理模块901还用于:
[0091] 通过第一命令行解释器shell命令,触发所述白盒交换机的操作系统运行第一程序,所述第一程序用于获取复制到所述CPU 903的所述目标类型的数据包,并将所述目标类型的数据包转存为所述第一文件,其中,所述第一文件为数据包抓取pcap格式的文件。
[0092] 可选地,所述代理模块901还用于:在第二时刻,通过第二shell命令,触发所述白盒交换机的操作系统停止运行所述第一程序,其中,所述第二时刻与第一时刻之间的时间间隔为所述第一时长,所述第一时刻为所述代理模块901触发所述交换芯片902执行所述第一命令的时刻。
[0093] 可选地,所述第一程序包括抓包工具或网络封包分析软件。
[0094] 可选地,所述代理模块901在响应于所述第一请求,触发所述交换芯片执行第一命令之后,所述代理模块901还用于:
[0095] 在第二时刻,触发所述交换芯片902停止执行所述第一命令,其中,所述第二时刻与第一时刻之间的时间间隔为所述第一时长,所述第一时刻为所述代理模块901触发所述交换芯片902执行所述第一命令的时刻。
[0096] 在此需要说明的是,本申请实施例提供的上述白盒交换机,能够实现上述抓包方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
[0097] 本申请的实施例还提供一种白盒交换机,如图10所示,包括收发机1010、处理器1000、存储器1020及存储在所述存储器1020上并可在所述处理器1000上运行的程序或指令;所述处理器1000执行所述程序或指令时实现上述抓包方法。
[0098] 所述收发机1010,用于在处理器1000的控制下接收和发送数据。
[0099] 其中,在图10中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器1000代表的一个或多个处理器和存储器1020代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发机
1010可以是多个元件,即包括发送机和接收机,提供用于在传输介质上与各种其他装置通信的单元。处理器1000负责管理总线架构和通常的处理,存储器1020可以存储处理器1000在执行操作时所使用的数据。
[0100] 需要说明的是,本申请实施例提供的上述白盒交换机,能够实现上述抓包方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。
[0101] 本申请实施例的实施例还提供一种可读存储介质,其上存储有程序或指令,所述程序或指令被处理器执行时实现如上所述的抓包方法中的步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0102] 其中,所述处理器为上述实施例中所述的白盒交换机中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器(Read‑Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
[0103] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。根据这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁盘、光盘)中,包括若干指令用以使得一台白盒交换机执行本申请各个实施例所述的方法。
[0104] 因此,本申请的实施例还提供一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行时实现如上所述的抓包方法中的步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0105] 另外,本申请实施例中,模块可以用软件实现,以便由各种类型的处理器执行。举例来说,一个标识的可执行代码模块可以包括计算机指令的一个或多个物理或者逻辑块,举例来说,其可以被构建为对象、过程或函数。尽管如此,所标识模块的可执行代码无需物理地位于一起,而是可以包括存储在不同位里上的不同的指令,当这些指令逻辑上结合在一起时,其构成模块并且实现该模块的规定目的。
[0106] 实际上,可执行代码模块可以是单条指令或者是许多条指令,并且甚至可以分布在多个不同的代码段上,分布在不同程序当中,以及跨越多个存储器设备分布。同样地,操作数据可以在模块内被识别,并且可以依照任何适当的形式实现并且被组织在任何适当类型的数据结构内。所述操作数据可以作为单个数据集被收集,或者可以分布在不同位置上(包括在不同存储设备上),并且至少部分地可以仅作为电子信号存在于系统或网络上。
[0107] 在模块可以利用软件实现时,考虑到现有硬件工艺的水平,所以可以以软件实现的模块,在不考虑成本的情况下,本领域技术人员都可以搭建对应的硬件电路来实现对应的功能,所述硬件电路包括常规的超大规模集成(VLSI)电路或者门阵列以及诸如逻辑芯片、晶体管之类的现有半导体或者是其它分立的元件。模块还可以用可编程硬件设备,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等实现。
[0108] 上述范例性实施例是参考该些附图来描述的,许多不同的形式和实施例是可行而不偏离本申请精神及教示,因此,本申请不应被建构成为在此所提出范例性实施例的限制。更确切地说,这些范例性实施例被提供以使得本申请会是完善又完整,且会将本申请范围传达给那些熟知此项技术的人士。在该些图式中,组件尺寸及相对尺寸也许基于清晰起见而被夸大。在此所使用的术语只是基于描述特定范例性实施例目的,并无意成为限制用。如在此所使用地,除非该内文清楚地另有所指,否则该单数形式“一”、“一个”和“该”是意欲将该些多个形式也纳入。会进一步了解到该些术语“包含”及/或“包括”在使用于本说明书时,表示所述特征、整数、步骤、操作、构件及/或组件的存在,但不排除一或更多其它特征、整数、步骤、操作、构件、组件及/或其族群的存在或增加。除非另有所示,陈述时,一值范围包含该范围的上下限及其间的任何子范围。
[0109] 以上所述是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

当前第1页 第1页 第2页 第3页