网络处理器设计的复杂性_第1页
网络处理器设计的复杂性_第2页
网络处理器设计的复杂性_第3页
网络处理器设计的复杂性_第4页
网络处理器设计的复杂性_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-网络处理器设计的复杂性华伟网络处理器Network Processor,简称NP是面向网络应用领域的专用指令处理器Application Specific Instruction Processor,是面向数据分组处理的、具有特定电路的软件可编程器件。它将RISCReduced Instruction Set puter-精简指令集处理器的低本钱、灵活性与ASICApplication-Specific Integrated Circuits-专用集成电路专用网络处理芯片的高性能、可扩展性很好地结合在一起,提供了适应网络开展新协议、新应用的能力。NP的出现,标志着设备对数据分组的处理能力从低

2、层粗放式处理过渡到高层细化处理。基于NP开发的网络系统可以缩短进入市场时间time-to-market,而且由于其可编程性使其具有较长的市场寿命。本文将重点围绕网络处理器设计的复杂性、设计中所需要权衡的各种因素进展分析。1. 网络处理器的功能网络处理器的功能是由它所需要实施的操作以及它在目标网络系统中的任务决定的。一方面,NP需要有足够的分组处理能力。另一方面,NP确切的功能依赖于使用它的系统的体系构造。或者换句话说,目标系统中NP与其他组成局部之间的分工方式决定了NP的功能。工业界对于协议栈中各层次协议功能及其特殊需求的实现已经相当有经历了。然而,NP不是为*个特定的协议而设计的,它的指令集

3、并不需要包含处理*个协议所需的所有指令。NP的目标是具有足够的功能来处理“任何协议,也就是具有网络协议处理的通用性。NP的协议处理通用性不是通过设计的全面性来保障的。尽管设计人员可以针对需要处理的协议的每个特征,穷尽所需要的指令,但毫无疑问这种方式将产生笨拙的设计并带来芯片面积的浪费。反过来,抽取最小化的功能集能够使设计精简并高效。为此,设计者必须分析不同协议的特征,识别它们的共性,推导出可以高效处理所有特征的最小指令集。因此,确定“最小化的功能集就成为NP设计的一大挑战。1.1 分组处理功能设计一个通用的网络处理器的第一步是识别多数协议所需要的功能。一般来说,完成分组处理任务包括下面一些功能

4、:检错和纠错、流量测量和策略、帧和协议的分解、地址查找和包转发、分段和重组、包分类、流量整形、定时和调度、排队、平安认证和私有。尽管这些功能都可以在一个传统的通用指令集CPU上完成,但增加特定的指令可以提高完成这些功能的性能。例如就排队来说,NP只需要关心包的队列,而不是其他任意的队列,因此NP可以针对包队列进展优化,设计专用指令。类似的,由于大多数协议都需要CRCCyclic Redundancy Check,循环冗余校验或校验和进展过失检测,NP可以包含相关的专用指令以提高运算速度。NP设计者需要考虑以下一些问题:1上述功能是否足以涵盖所有协议处理.2哪一项功能的优化最重要.3如何将上述功

5、能映射到一个典型网络系统的硬件单元.4一个典型网络系统的哪些硬件单元可以用一个NP来替代.5实现上述功能的最小完备指令集是什么.所有这些问题都不容易答复,它们构成了研究网络处理器设计的根底问题。1.2 入口和出口处理为了降低设计的复杂性,可以将一个复杂问题分解成几个小的子问题一一加以解决。这种分而治之divide-and-conquer的方法在很多领域都受到欢迎,NP设计也不例外。最常用的一种方式是将分组处理任务分成入口和出口处理两局部。入口处理关注包的到达过程,出口处理关注包的离开过程。入口处理:Ø 过失检测和平安验证Ø 分类或协议分解Ø 流量测量和策略

6、6; 地址查找和包转发Ø *修改和传输层处理Ø 重组或流终止Ø 转发、排队和调度出口处理:Ø 过失检测码插入Ø 地址查找和包转发Ø 分段或分片Ø 流量整形Ø 定时、调度、排队和缓冲Ø *修改Ø 输出平安处理物 理 接 口交 换 矩 阵包到达包离开图1 典型网络系统中入口和出口处理的示意图图1是典型网络系统中入口和出口处理的示意图。典型情况是包通过且仅通过交换矩阵一次,因此交换矩阵成为入口和出口处理自然的分水岭。入口方面,数据包到达一个输入端口后,首先需要进展过失检测,然后通过协议分解或分类来确定

7、系统需要对包实施何种操作。系统有时候需要维护一些状态信息,例如历史流量的记录、数据片段的收集重组等。入口处理还需要包含对排队、调度、转发的支持。为了使包通过交换矩阵,有时需要将数据包分成固定大小的数据块传送。最后,入口处理还包括的修改、传输层的一些处理等。出口方面,从交换矩阵获得包,有时需要对数据片断进展收集。出口处理包括:确定输出端口、根据输出端口信息对数据包进展分段、进展流量整形及相关的排队调度操作、进展修改、过失检测、进展加密等输出平安处理。2. 网络处理器与网络系统2.1 并行和分布式构造如果采用集中式设计,让一个网络处理器在快速数据通路上完成所有分组处理任务,将系统收到的每一个包转发

8、到输出端口上,这样所得到的NP与传统的处理器一样,可扩展性较差。即使这个NP中包含针对协议处理的优化硬件设计,NP本身的时钟频率将成为限制吞吐量的关键因素。为了防止性能瓶颈,可以采用三种通用的技术提高可扩展性。首先,一个典型的NP可以包含各种硬件单元,对每个硬件单元进展专门设计来完成一个特定的功能;第二,为了提高总的处理速度,在NP上复制多个可以独立工作的关键的硬件单元,使NP可以并行或以流水线的方式实施多个操作;第三,将NP设计成分布式构造。这样,当多个NP连接起来时,它们可以共同工作以获得更高的总的吞吐量。总的来说,对可扩展性的要求给NP的设计带来了很大的困难,设计者必须考虑设计或选择处理

9、专门任务的硬件单元、能够并行操作的可重复的硬件单元、以及支持分布式执行的硬件。2.2 网络处理器在系统中的角色在网络系统的总体构造中,NP并不固定地处于单一的位置上,相反,它可以承担系统中多种角色任务,这使得NP的设计进一步复杂化。NP可以设计成替代网络系统中的功能单元,或者作为附加功能单元对*项功能进展强化。一般来说,NP在网络系统的总体构造中可以作为下述角色:n 替代一个传统的CPU:为此,NP必须具有传统的CPU指令;为了与传统的CPU区别开来,NP需要增加专用的指令以实现优化的分组处理功能。n 附加在一个传统的CPU上:由传统的CPU完成大多数分组处理任务。由NP完成特殊的任务。这种附

10、加可以用预处理或协处理两种方式实现。预处理一般在入口处理阶段实施,例如对来自硬件端口的包进展分类,再交给传统的CPU进展处理。协处理方式则功能更强大,任何可能通过专门硬件加速的分组处理功能都可以设计协处理器完成。使用附加在一个传统的CPU上的NP,主要好处是降低了设计的复杂性。设计者可以专注于分组处理功能而不需要考虑传统的指令;其难点在于需要额外的硬件处理CPU与NP的接口问题,为CPU调用NP提供有效机制。n 在网络接口卡的输入通路上,承担入口分组处理任务:NP的可编程性提供灵活的、可改变的入口处理。n 在网络接口卡与交换矩阵之间作为网络接口卡和交换矩阵的中介:NP与交换矩阵的控制器进展交互

11、,以建立通路、传输数据和释放通路。n 在交换矩阵和输出接口之间控制输出端口的:*些交换矩阵采用分布式控制机制,由每个输出端口控制对它自己的。当一个输入端口需要使用交换矩阵时,它需要使用一种独立的机制例如独立的总线通知相应的输出端口;输出端口对需求进展调度,通知潜在的发送者发送数据。这些功能可以设计NP来完成。n 在网络接口卡的输出通路上承担出口分组处理任务:NP从交换矩阵承受包、管理队列、实现流量整形、发送分组到输出端口。n 像其它端口一样连接在交换矩阵上作为一个中间站:数据包可以从输入端口通过交换矩阵到达NP,再从NP通过交换矩阵到达输出端口。由于交换矩阵允许扩展,因此作为中间站的NP集合也

12、很容易扩展。这样,为了获得最大程度的并行,系统可以将到达的包分布在整个NP集合中进展处理。我们可以设想一种宏观的数据流水线,流水线的每个阶段用一个NP来实现,这些NP通过交换矩阵连接起来:NPi实现第i个阶段的功能,把处理后的包通过交换矩阵传输到实现第i+1个阶段功能的处理器NPi+1。由于NP可在系统中胜任多种角色,如今它已不再局限于作为核心交换和路由设备中ASIC的取代品而向更广泛的应用领域扩展。2003年,多效劳接入网和企业网是网络处理器的主要应用领域。来自消费电子市场的需求将会延伸网络处理器的涵,为其带来新的活力。面向接入层的各种媒体网关,包括用于家庭的接入媒体网关将会是网络处理器最重

13、要的应用之一。其它存在商机的领域包括无线根底设备、IP效劳交换机、存储区域网等。网络处理器在平安方面也有着广泛应用,如VPNVirtual Private Network虚拟专网、防火墙和入侵侦测业务等。在电信方面,多效劳宽带接入领域,如第三代无线网络控制器RNC- Radio Network Controller、媒体网关、光纤环网的宽带接入等都将是网络处理器的重要应用领域。2.3 平台NP和专用NP我们可以从NP在系统中的角色看到设计NP的两种思路和目前市场上NP的两种产品类型。一种是实现一个通用的网络处理器,试图解决所有分组处理任务,由此产生了平台NP产品。另一种则针对分组处理功能中*一

14、具体操作进展优化,由此产生了各种专用NP产品。平台NP应该能够实现所有的分组处理功能而不是对*种具体处理功能优化。今天,所有的NP厂商几乎都在围绕着性价比,以及应用功能的广泛性进展竞争。未来将要求所有的平台NP厂商都必须能够提供真正意义的“平台。顾名思义,平台NP应该能够容纳所有分组交换处理功能部件,安置第三方提供给网络设备制造商的一切软件和硬件,并成为它们运行的根底。为此,平台NP应该为网络设备制造商和第三方的开发人员提供编写应用软件开发环境。此外,平台NP还应该成为连接和控制有关硬件如外围用NP、专用协处理器、存储器电路、PHYPhysical layer层的芯片、交换矩阵等等的枢纽。专用

15、NP则是针对分组处理功能中*一具体操作进展了优化的NP,它的作用仅仅限制于该项操作。例如,用于加密或压缩的专用处理器。加密和压缩操作要用到相当特殊的算法。这些操作最好由经过优化的专门适合于处理此项操作的集成电路来执行。再如查表/分类操作。如果这类操作运用比较频繁,就有必要采用一个单独的专用NP来处理,以便平台NP能集中精力处理其它的分组处理操作。此外,还有一些专用NP是优化后用在第二层协议上,处理语法分析/帧形成操作。例如,以太网MACMedia Access Control帧,HDLCHigh Level Data Link ControlProtocol帧,或ATMAsynchronous

16、 Transmission Mode单元。有时又把专用NP称为外围NP。所谓“外围的意义在于它需要和负责处理总体分组交换处理任务的主要处理器相配合。可以担任主要处理器的器件有RISC、CPU、ASIC或者平台NP。外围NP厂商所提供的开发工具只针对此外围NP所担负功能有关的操作。为外围NP编写的程序必须通过APIApplication Program Interface与担负总体分组处理的处理器进展通信。例如,设计用来加速查表/分类操作的外围NP必须将其处理结果通知平台NP,平台NP再根据此结果执行一定的动作。3. 网络处理器的硬件体系构造网络处理器的硬件体系构造一般具有如下一些特征:n 采用

17、多核并行处理器构造:片处理器按任务分为控制平面处理器和数据分组协处理器。控制平面处理器通常负责非实时的管理任务;数据分组处理器进展实时、线速数据分组处理。n 优化指令集,设计专用硬件加速处理单元:通常采用RISC技术,结合多级流水线技术,大局部指令在一个时钟周期完成。并针对网络协议处理特点,设置专用硬件加速处理单元,提供专用指令如压缩指令、哈希查找、状态判断、数据读写指令。n 优化存管理和分级存储器组织:NP需要进展大量的数据分组的接收、存储、复制、转发,存操作成为系统开销的一大瓶颈。为了解决这个问题,通常采用块数据移动技术和特殊的优化存储接口。同时对数据进展分类存储:SRAM用于存放需要快速

18、查找的各种表构造;SDRAM用于存放数据分组信息。n 支持硬件多线程:为了提高NP资源利用率,每个数据分组处理器还支持多个硬件线程。每个线程都有一套专门的硬件来存放上下文Conte*t,以获得线程切换的零开销。n 多个高速I/O接口:包括物理链路接口、交换接口、存储器接口、PCI总线接口。n 可扩展性:多个NP之间可以互连,构成网络处理器簇,以支持更为大型高速的网络处理。由于一个NP上包括许多处理器共同工作,处理器层次是NP最重要的硬件特征。NP一般有如下处理器层次:1一个或多个嵌入式RISC处理器,通常工作在控制平面提供总的控制,处理高层协议,可编程; 2多个I/O处理器又称为包引擎、微引擎

19、,工作在数据平面,实施入口和出口线速处理,可编程;3一个或多个专用协处理器,优化设计完成特定的分组处理功能,通常被I/O处理器调用,不可编程;4一个或多个交换矩阵接口,不可编程;5一个或多个数据传输单元,处理I/O设备和存储器之间的数据移动,不可编程。一个网络系统中完全的处理层次还应包括:6传统的通用CPU,工作在控制平面,处理管理任务,包括监视系统性能、运行路由协议、给系统管理员提供配置界面等,可编程;7成帧器和物理传输器件,实现低层次I/O处理,有时也在NP中实现,不可编程。4. 网络处理器的软件体系构造许多NP厂商为他们的NP提供参考应用系统,帮助用户了解如何设计NP的软件。用户通常不需

20、要从头设计软件,只需在厂商提供的参考软件根底上进展修改。因此,NP设计者可以影响NP的软件体系构造。大多数软件体系构造遵循下面*种模式:n 主程序把协处理器当作子例程调用。n 主程序与可编程I/O处理器上运行的代码互相作用。n 使用通信线程。n 使用事件驱动程序。n 使用流水线。n 使用远程过程调用风格程序组件分布在不同处理器上。n 使用上述模式的组合。很显然,有些软件体系构造是与底层的硬件相匹配的。例如,NP芯片上如果存在用于异步事件的硬件分派单元,则很自然地就有事件驱动的软件体系构造。相应的,NP提供的对线程的支持和数据传输机制为通信线程体系构造奠定了根底。流水线体系构造则并不一定要求底层

21、硬件使用流水线。例如,通过不同线程实现分组处理的不同阶段,可以构建分组处理的流水线,数据包在不同线程中的相继处理表达了它在流水线不同阶段之间的移动。线程可以在一组并行处理器上执行,这些并行处理器本身不需要配置成一条流水线,甚至完全可以在单个处理器上通过创立多个线程来实现软件流水线。远程过程调用风格的体系构造不是创立互相独立的程序,而是建立单个程序,使其不同组件运行在多个处理器上。例如,使程序的主要组件运行在一个嵌入式RISC处理器上,处理复杂计算;而它的子组件则运行在多个I/O处理器上,处理入口和出口操作。NP的软件体系构造必须与NP在处理器层次上很好地匹配。为了获得高性能,分配给每个处理器的

22、任务需要和它的处理能力相匹配。数据平面任务的描述非常简明,协议简单、传输速率高,因此需要的代码较少,但是处理能力较强。而控制平面处理的协议较为复杂,所以任务的描述也较为复杂,不需要很强处理能力,但需要执行更多的代码。处理层次越低往往操作速度越高。例如,物理传输层次决定了系统的线速度,即数据进入和离开整个系统的最大速率。为了尽可能防止瓶颈存在,数据传输、交换矩阵接口、协处理器硬件都需要设计成以线速操作,从而保证包全速流入I/O处理器。I/O处理器上运行的指令操作的层次低于嵌入式处理器,因此前者的时钟频率常常高于后者。为了使性能最正确化,任务应该尽可能在I/O处理器上完成。在嵌入式处理器与外部通用

23、处理器之间的任务分配同样应该使任务尽可能在嵌入式处理器上完成。总的来说,为了获得最优的性能,分组处理任务应该尽可能被分配到能够完成该任务的最低层次处理器上。5. 网络处理器设计与软件仿真设计一个通用的网络处理器是相当复杂的。为了控制复杂性,NP设计通常需要依赖于软件仿真。在硬件设计开场之前,设计者花大量时间来建立软件仿真器,用来验证设计的功能和评估性能。为此,需要有运行在目标芯片上针对各种应用的基准程序,把这些程序编译后使用软件仿真器来测量可获得的性能。然而,与传统的处理器不同,NP的评估不能使用传统的处理器基准程序。这是因为NP的设计涉及许多低层次的硬件细节,不同NP的在体系构造是不同的,应

24、用程序和基准程序无法在不同NP之间简单地共享。因此,针对每一特定NP,必须重新设计软件以匹配目标体系构造。而且,当软件从一种体系构造移植到另一种体系构造时,有时甚至需要完全重组代码,这给性能的比较带来困难。这里,设计者还面临类似于“鸡生蛋还是“蛋生鸡的问题。一旦创立了一个硬件体系构造,程序设计人员可以设计软件来针对这个构造,编写优化的程序;反过来,一旦有了软件,硬件设计人员可以选择一个更好的体系构造来匹配软件设计。在设计NP时,设计者面临多种可能的体系构造方案,软硬件设计必须严密集成在一起,互相依赖。NP上运行的软件必须和硬件一起进展设计,这进一步增加了设计的复杂性和工作量。6. 网络处理器设

25、计需要权衡的各种因素由于网络处理器是个复杂的器件,可能用于多种目的,因此设计NP需要权衡的因素相当多。作为本文的总结,这里分析其中一些重要因素,特别是我们在NP设计中遇到的一些难点。n 可编程性和处理速度:可编程性所提供的灵活性和高度适应性在高速开展的网络领域尤其重要。另一方面,专用的硬件提供了更高的处理速度。假设干年以前,可编程性和处理速度的权衡表达在选择传统的通用指令集CPU还是选择专用芯片上,前者用在低速系统中,后者用在高速系统中。现在这种选择成为NP设计者需要考虑的重要因素,它与NP的体系构造和指令集设计息息相关。设计者需对应用目标有准确的把握,才能在体系构造的设计中对可编程性与处理速

26、度做出恰当的考虑。n 速度和功能:为了高速处理网络领域特定的任务,需要对NP的指令集进展优化。随着任务的扩展,需要增加更多的指令,这样NP的功能就增强了。但是,不同的指令可能需要不同的执行时间,处理器必须包含复杂的调度和同步机制,反过来增加了时间开销和设计复杂性。因此,速度和功能之间必须有很好的折衷。n 性能-数据速率、包速率和包的突发性的综合考虑:在NP的系统设计阶段,性能的评估是必不可少的。通常有两种衡量性能的指标:最大的数据速率和最大的包速率。最大的数据速率是数据能够到达和离开一个网络系统的最大速率,它限制了系统能够匹配的网络端口的容量,一般使用的计量单位是Mbps或Gbps。如果系统能

27、在所有网络端口满负荷的情况下无阻塞地完成分组处理和转发,我们称系统能够进展线速处理,并以端口容量描述线速处理的性能。另一方面,由于许多协议处理操作是以包为单位进展的,尽管每个数据包的大小是不一样的,但对每个包的处理需要的CPU时间是固定的,因此,包速率通常比数据速率更重要。然而,准确的性能评估非常困难。首先,由于NP应用的围很广,不存在可特征化NP操作的小任务集合,于是需要在大量的任务模式下测量NP的性能,而基准程序在不同NP之间不可重用见本文第5局部进一步给测量带来了困难。第二,NP的测量需要在流通负载下进展,而包的突发性使得流量特征很难刻画。稳定的包流与现实网络的情况是不一致的,准确的评估

28、需要采用突发分布。不幸的是尽管这方面的研究很多,人们从来没有对流量特征达成一致意见。网络流量模型一直是困扰网络领域的一大问题。于是用于性能测试的流量负载选择的困难性就可想而知了。n 协处理器设计:协处理器硬件有两种工作方式-旁路调用与数据通路。以旁路调用方式工作的协处理器类似于过程调用,由主处理器根据需要调用。而数据通路上的协处理器则以流水线方式处理数据,在数据通过它时对数据进展修改。后者有两个问题。首先,为了防止成为瓶颈,数据通路上的协处理器必须以线速度工作;第二,由于这些协处理器更严密地集成在设计中,很难进展改变。以旁路调用方式工作的协处理器有着模块化的优势,可以根据需要扩展,增加新的协处

29、理器,不需要对体系构造作太大改动。但是,旁路调用时主处理器与协处理器之间大量数据传输产生的开销将影响性能。n 流水线-均衡与同步:在一个均衡的流水线上,功能单元处理包的时间是一样的,从而减少了数据缓冲和同步开销。但是,对分组处理功能的分解很难做到完全均衡,强制的均衡结果是快速阶段必须等待慢速阶段。可是如果流水线设计成不均衡的,最慢的阶段会成为流水线的瓶颈。n 并行-吞吐量与包的乱序:并行体系构造通常都要有维护包的顺序的同步机制。但另一方面,如果放宽对包序的要求,可以简化复杂的同步操作,减少硬件需求,减少处理器的停滞和输出端口的等待,从而提高系统总的吞吐量。n 并行-速度与状态信息共享:并行工作

30、的处理器为了防止干扰,必须同步共享的状态信息。由于在任何特定时刻只有一个特定处理器可以修改共享的信息,这必然导致并行速度降低。网络系统中状态的频繁更新,使得状态信息共享对速度的影响变得更严重。包的分类是一个典型的例子。静态的包分类即的值只需要与常数进展比较能够获得并行带来的N倍速度;而动态的包分类即由一组数据流来决定类别由于要保存状态信息,性能必然要下降。n 存储器-速度与可编程性:存储器通常被划分成几个存储体,允许同时不同的存储体。在多数情况下,为了获得最大的访存速度,必须刻意地把数据放到存储体中以防止访存冲突。这自然会影响可编程性:程序员需要了解存储体,给编程带来困难。n 编程语言设计的权

31、衡:对NP的编程语言来说,必须在易编程性、功能与代码速度之间找到平衡点。如果以高速为目的,需要在易编程性与功能之间进展折衷。包含为特定任务裁减的高级构件的集合的编程语言虽然容易使用,但对任意任务的适应性差。而具有足够的特征面向多种任务的编程语言可用性差因为程序员处理每个任务都面临多种选择。因此,NP设计者必须选择既容易编程又提供足够功能的编程语言。如果想获得强大的功能,就需要在易编程性与速度之间进展折衷。高级语言虽然容易使用,但映射到底层硬件构造时效率较低。因此,使用高级语言产生的代码往往不如使用低级语言产生的代码更有效。这也是为什么许多NP要求程序员使用汇编语言来获得最大的吞吐量。如果强调易

32、编程性,则需要在速度与功能之间进展折衷。如果将一种语言限制在*个特定应用上,编译器能够产生高度优化的代码。随着一种语言功能的扩展,其所产生的代码优化也越来越困难。因此,语言设计者需要在功能与代码的优化之间作出权衡。n 多线程-吞吐量与可编程性:为了获得较高的吞吐量NP必须支持多线程。通过允许程序员指定多个计算,使得即使在一个线程阻塞、等待协处理器或I/O处理的情形下,处理器仍然可以继续执行其它线程。多线程的主要缺点是程序员必须协助线程的活动,从而增加了编程的复杂性。即使在硬件能够自动处理线程的抢占和切换时,程序员也许还是需要确保线程与共享资源使用之间的协调。因此,在高吞吐量和可编程性之间需要作出权衡。n 流量管理与设计本钱:对网络效劳收费的ISP和其他组织需要网络系统能够管理流量,通过按优先级给流量提供效劳以获得最高的利益。从体系构造的角度来看,这意味着流量管理、速度与本钱的折衷。嵌入式RISC处理器能够在较低的速度实施流量管理。如果需要高速的流量管理,就必须由专门的硬件来完成,这将会

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论