基于click自定義協(xié)議軟件路由器的 設(shè)計與實現(xiàn)_第1頁
基于click自定義協(xié)議軟件路由器的 設(shè)計與實現(xiàn)_第2頁
基于click自定義協(xié)議軟件路由器的 設(shè)計與實現(xiàn)_第3頁
基于click自定義協(xié)議軟件路由器的 設(shè)計與實現(xiàn)_第4頁
基于click自定義協(xié)議軟件路由器的 設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、網(wǎng)絡(luò)協(xié)議設(shè)計實驗設(shè)計文檔基于click自定義協(xié)議軟件路由器的設(shè)計與實現(xiàn)二一四年十二月目 錄一、實驗概要及實驗設(shè)計1(一)實驗概要1(二)實驗?zāi)康?(三)實驗分析11、協(xié)議分析12、協(xié)議設(shè)計2二、實驗設(shè)計4(一)實驗流程4(二)click路由器總體設(shè)計51.路由器報文分類概要設(shè)計52.路由器報文轉(zhuǎn)發(fā)概要設(shè)計63.Label標(biāo)簽信息庫結(jié)構(gòu)94.優(yōu)先級調(diào)度概要設(shè)計95.基于優(yōu)先級的限速功能的概要設(shè)計10(三)click路由器轉(zhuǎn)發(fā)流程設(shè)計111.PSP路由轉(zhuǎn)發(fā)流程詳細設(shè)計112.Label報文轉(zhuǎn)發(fā)詳細設(shè)計12(四)主要組件設(shè)計141.Fastpspsource組件142.LableRouteTable

2、153.LableLookup154.RateLimit16三、實驗演示17(一)PSP路由轉(zhuǎn)發(fā)測試171.實驗拓撲圖172.實驗測試方法173.配置文件174.測試結(jié)果185.結(jié)果總結(jié)20(二)基于Label的路由轉(zhuǎn)發(fā)測試211.實驗拓撲圖212.配置文件213.測試結(jié)果214.結(jié)果總結(jié)21(三)優(yōu)先級隊列調(diào)度功能測試211.實驗拓撲圖212.實驗測試方法213.配置文件224.測試結(jié)果235.結(jié)果總結(jié)24(四)標(biāo)簽流按優(yōu)先級分別進行限速功能測試241.實驗拓撲圖242.配置文件253.測試結(jié)果264.結(jié)果總結(jié)27四、實驗分工2727一、實驗概要及實驗設(shè)計(一)實驗概要 本實驗?zāi)康臑榛谝延?/p>

3、的click開源軟件實現(xiàn)一個自定義協(xié)議的軟件路由器完整轉(zhuǎn)發(fā)流程,具體包含五個核心任務(wù):報文分類處理;PSP報文分組轉(zhuǎn)發(fā)流程(包含PSP頭檢查、TTL減一、轉(zhuǎn)發(fā)表);定長標(biāo)簽交換流程(包含標(biāo)簽頭解封裝、標(biāo)簽表、標(biāo)簽頭封裝);標(biāo)簽流8個優(yōu)先級隊列調(diào)度;標(biāo)簽流按照優(yōu)先級分別進行限速。(二)實驗?zāi)康耐ㄟ^實驗設(shè)計,深入理解軟件路由器的基本原理、組成和實現(xiàn),掌握計算機網(wǎng)絡(luò)研究所需的基本設(shè)計技能,包括系統(tǒng)設(shè)計能力、軟件編程能力、整體表述能力和新思想的實驗驗證能力,為開展計算機網(wǎng)絡(luò)方向的深入研究奠定實際驗證基礎(chǔ)。(三)實驗分析1、協(xié)議分析一個完整的路由協(xié)議需要完成的功能包含以下內(nèi)容:制定指導(dǎo)數(shù)據(jù)報文分組從一個

4、網(wǎng)絡(luò)到另一個網(wǎng)絡(luò)的規(guī)定和標(biāo)準(zhǔn);創(chuàng)建路由表,并維護網(wǎng)絡(luò)拓撲結(jié)構(gòu);運行路由協(xié)議,執(zhí)行路由選擇和分組轉(zhuǎn)發(fā)功能。這對我們接下來的協(xié)議設(shè)計提出了基本的要求,即對于網(wǎng)絡(luò)中的每一層都需要定義報文的格式,然后對于報文在網(wǎng)絡(luò)中的發(fā)送、接收和轉(zhuǎn)發(fā)都有穩(wěn)定的拓撲結(jié)構(gòu)。2、協(xié)議設(shè)計一個自定義的協(xié)議簇(ABC),包括地址編址結(jié)構(gòu)、網(wǎng)絡(luò)互連與路由轉(zhuǎn)發(fā)等多個簡單協(xié)議,對其進行詳細說明如下:(1) 地址編制結(jié)構(gòu)(64位),其中前16位為網(wǎng)絡(luò)標(biāo)識,后48為接口標(biāo)識。實際操作中,接口標(biāo)識為該接口的MAC地址,與前16位拼接為64位地址。(2) 鏈路層協(xié)議,規(guī)定了以太網(wǎng)的封裝格式如下:其中,IP報文類型定義為0x6000,標(biāo)簽(L

5、ABEL)報文類型定義為0x6001。(3) 2.5層標(biāo)簽交換協(xié)議,規(guī)定了標(biāo)簽交換頭的封裝格式,并約定標(biāo)簽交換頭后默認為PSP格式的報文。(4) 網(wǎng)絡(luò)層協(xié)議,定義了網(wǎng)絡(luò)層報文頭格式。其中TOS為0-15,表示報文的傳輸優(yōu)先級;標(biāo)識符標(biāo)注報文的序號;載荷長度為不包括報文頭的報文內(nèi)容長度;下一報頭類型為1時表示為ABC_ICMP協(xié)議,為2時表示為ABC_UDP協(xié)議;跳數(shù)限制最大為64,并且每經(jīng)過一個路由器,其值減1,其值為0時報文被丟棄;源地址和目的地址分別記錄發(fā)送方和目的方地址。(5) 定義了ABC_UDP(ABC不可靠傳輸協(xié)議)報文頭格式。(6) 基本實驗拓撲如圖所示,根據(jù)以太網(wǎng)報文頭中包含的

6、以太網(wǎng)的目的地址、源地址和報文類型, ABC協(xié)議就能實現(xiàn)一個簡單的報文收發(fā)過程。(7) 包含轉(zhuǎn)發(fā)過程的實驗拓撲一個簡單的轉(zhuǎn)發(fā)過程包含以下的步驟:從發(fā)送方接收報文;更改報文的源地址以及目的地址;通過端口發(fā)出報文。示意圖如下:二、實驗設(shè)計(一)實驗流程 1. 準(zhǔn)備工作a) 下載修改后的Click源代碼;b) 安裝Fedora虛擬機,配置開發(fā)、測試環(huán)境;c) 編譯源碼,運行Demo實驗;d) 學(xué)習(xí)Click基礎(chǔ)知識,查看源碼,了解組件的設(shè)計方法和組件的配置文件。2. 系統(tǒng)概要設(shè)計充分了解實驗任務(wù),進行初步的概要設(shè)計,設(shè)計包括組件的功能和組織。3. 編碼4. 實驗環(huán)境搭建5. 代碼集成和測試首先各個組

7、件需要通過單元測試,最后集成起來進行系統(tǒng)測試。6. 編寫實驗報告文檔(二)click路由器總體設(shè)計1. 路由器報文分類概要設(shè)計報文主要分為四種類型:ARP Query報文、ARP Response報文、PSP報文、Label報文。從輸入組件中獲取數(shù)據(jù)包,發(fā)送到數(shù)據(jù)包分類器。概要圖如下圖所示:其中,根據(jù)以太網(wǎng)頭部類型信息進行分類,如下所示:ARP QueryPSPLabelARP Response類型碼0x08060x60000x60010x08062. 路由器報文轉(zhuǎn)發(fā)概要設(shè)計路由器報文轉(zhuǎn)發(fā)的概要設(shè)計圖如下所示,其中包含兩條主線:一是基于PSP協(xié)議的路由轉(zhuǎn)發(fā),二是基于Label標(biāo)簽的路由轉(zhuǎn)發(fā)。兩

8、條主線的公用組件的作用如下表所示:組件/流程名稱組件/流程作用FromDevice從指定端口獲取數(shù)據(jù)包,轉(zhuǎn)發(fā)給下一個組件Classifier數(shù)據(jù)包類型分類器,根據(jù)以太網(wǎng)頭部類型信息把數(shù)據(jù)分為四類:ARP Query 、ARP Response 、PSP 報文、Label 報文TTL - 1將報文的TTL 進行減一操作,當(dāng)TTL為時,不再轉(zhuǎn)發(fā)報文ARP Query查詢目的IP對應(yīng)的Mac地址Modify Ether Header修改以太網(wǎng)頭部ToDevice將數(shù)據(jù)包發(fā)送到指定端口對于PSP報文的路由轉(zhuǎn)發(fā),其中的兩個組件功能如下:組件/流程名稱組件/流程作用Get Dest Address獲取PS

9、P報文的目的地址Lookup Router Table查詢路由表,得到要轉(zhuǎn)發(fā)的端口對于Label報文的路由轉(zhuǎn)發(fā),其中的兩個組件的功能如下:組件/流程名稱組件/流程作用Lookup LIB根據(jù)標(biāo)簽號,查詢標(biāo)簽信息庫,得到新的標(biāo)簽號和轉(zhuǎn)發(fā)端口。Modify Label for next jump修改標(biāo)簽頭部信息中的標(biāo)簽號為查表得到新標(biāo)簽號(1) 對于PSP報文路由轉(zhuǎn)發(fā),首先根據(jù)PSP頭部中的目的地址查詢路由表,得到轉(zhuǎn)發(fā)端口;然后進行TTL-1、修改Ether頭部中的目的Mac,然后從查詢到的轉(zhuǎn)發(fā)端口進行發(fā)送。(2) 對于急于標(biāo)簽的路由轉(zhuǎn)發(fā),首先根據(jù)Label頭部的標(biāo)簽號查詢標(biāo)簽信息庫,得到新的標(biāo)簽

10、號和轉(zhuǎn)發(fā)端口,并修改Label頭部的標(biāo)簽號為新的標(biāo)簽號。然后進行TTL-1,修改Ether頭部中的目的Mac,然后從查詢到的轉(zhuǎn)發(fā)端口進行發(fā)送。3. Label標(biāo)簽信息庫結(jié)構(gòu)標(biāo)簽信息庫維護基于標(biāo)簽交換的路由轉(zhuǎn)發(fā)信息。當(dāng)一個帶有標(biāo)簽的報文進入路由器的時候,首先根據(jù)標(biāo)簽頭部的Label ID查找標(biāo)簽信息庫,得到下一跳的Label ID和轉(zhuǎn)發(fā)端口。其結(jié)構(gòu)信息如下: 4. 優(yōu)先級調(diào)度概要設(shè)計對于標(biāo)簽交換,當(dāng)輸入組件獲取數(shù)據(jù)包,經(jīng)數(shù)據(jù)分類器分類后,確定為Label報文,轉(zhuǎn)發(fā)給優(yōu)先級分類器。優(yōu)先級分類器根據(jù)Label頭部中的QOS字段進行優(yōu)先級判定,分別加入不同優(yōu)先級的隊列中。優(yōu)先級調(diào)度組件根據(jù)優(yōu)先級調(diào)度算

11、法進行調(diào)度,從不同優(yōu)先級的隊列中獲取數(shù)據(jù)包,發(fā)送到待發(fā)送數(shù)據(jù)隊列。其中,調(diào)度算法是為了保證低優(yōu)先級的報文不至于餓死,采用時間片輪轉(zhuǎn)的方式,即給高優(yōu)先的隊列分配更多的時間。5. 基于優(yōu)先級的限速功能的概要設(shè)計(三)click路由器轉(zhuǎn)發(fā)流程設(shè)計1. PSP路由轉(zhuǎn)發(fā)流程詳細設(shè)計組件/流程功能描述FastPSPSource組件按照一定的速度產(chǎn)生PSP報文,模擬發(fā)送端FromDevice組件從指定的端口獲取數(shù)據(jù)包,轉(zhuǎn)發(fā)到下一個組件Classifier組件數(shù)據(jù)包分類器,根據(jù)以太網(wǎng)頭部的類型信息進行分類,PSP報文的類型信息為0x6000Get Dest Address該步驟從PSP報文頭部獲取目的地址,用

12、來查詢路由表,獲取轉(zhuǎn)發(fā)端口Lookup Router table根據(jù)目的地址,查找路由表,獲取轉(zhuǎn)發(fā)端口TTL-1將報文TTL進行減一操作ARP QueryARP查詢,獲取下一跳的目的Mac地址Modify Ethernet Header根據(jù)查詢到的下一跳目的Mac地址,修改報文以太網(wǎng)頭部目的Mac字段Add to Queue添加到待發(fā)送數(shù)據(jù)包的隊列中ToDevice組件從Queue中獲取數(shù)據(jù)包,從指定網(wǎng)口發(fā)送出去2. Label報文轉(zhuǎn)發(fā)詳細設(shè)計發(fā)送者生成PSP報文,經(jīng)過AddLabelHeader組件添加標(biāo)簽頭,發(fā)送到路由器;Click 路由器從網(wǎng)口接受數(shù)據(jù),進過分類器后,確定為基于標(biāo)簽交換的

13、報文。然后查詢標(biāo)簽信息庫,并修改下一條標(biāo)簽號,經(jīng)過TTL-1,目的MAC地址修改,轉(zhuǎn)發(fā)到相應(yīng)端口。接受者從網(wǎng)口獲取數(shù)據(jù)包,丟掉LabelHeader。組件/流程功能介紹AddLabelHeader在普通PSP數(shù)據(jù)包上添加標(biāo)簽頭信息,讓路由器可以基于標(biāo)簽進行交換Lookup LIB查詢標(biāo)簽信息庫,獲取下一跳Label ID和輸出端口Modify Label for next jump修改標(biāo)簽頭 Label ID字段,讓下一跳路由可以轉(zhuǎn)發(fā)Remove Label Header移除Label Header,得到PSP報文(四)主要組件設(shè)計 1. Fastpspsource組件組件名字Fastpsps

14、ource功能描述按照一定的速度生成PSP報文端口類型PORTS_0_1 0個輸入端口,一個輸出端口處理方式PULL方式參數(shù)描述FASTPSPSOURCE(RATE, LIMIT, LENGTH, SRCETH, SRCIP, SPORT, DSTETH, DSTIP, DPORT)RATE:發(fā)送速度;LIMIT:生成最大報文數(shù)量;LENGTH:報文的長度SRCETH:源Mac地址SRCIP:源IP地址SPORT:源端口號DSTETH:目的Mac地址DSTIP:目的IP地址DPORT:目的端口號2. LableRouteTable主要功能:定義標(biāo)簽信息結(jié)構(gòu),維護標(biāo)簽信息庫,可以向里面添加、查詢

15、、刪除標(biāo)簽信息。3. LableLookup組件名字LableLookup功能描述(1) 靜態(tài)配置標(biāo)簽信息庫(2) 實現(xiàn)基于標(biāo)簽的查找轉(zhuǎn)發(fā)端口類型一個輸入端口,多個輸出端口處理方式PUSH方式當(dāng)一個帶有標(biāo)簽的報文發(fā)送到LabelLookup組件,首先獲取Label標(biāo)簽頭部的標(biāo)簽號,查找標(biāo)簽信息庫,以獲取“Out Label”和“Out Port”,然后修改標(biāo)簽頭部的標(biāo)簽號為“Out Label”,并從“Out Port”端口發(fā)送出去。流程圖如下:4. RateLimit組件名字RateLimit功能描述限制一個報文流的速度,即每秒發(fā)送多少報文端口類型PORTS_1_1 1個輸入端口,1個輸出端

16、口處理方式PULL參數(shù)描述RateLimit (RATE)RATE:報文流的最大速率,即最多每秒發(fā)送多少個報文三、實驗演示(一)PSP路由轉(zhuǎn)發(fā)測試1. 實驗拓撲圖2. 實驗測試方法實驗拓撲圖如下所示:Client 從Eth1網(wǎng)口發(fā)送數(shù)據(jù)到Router1 Eth1,Router1轉(zhuǎn)發(fā)到Router2,Router2收到數(shù)據(jù)后再次轉(zhuǎn)發(fā)給Client 的Eth2,Client收到數(shù)據(jù)后打印消息內(nèi)容。3. 配置文件i. Client 發(fā)送報文配置文件FastPSPSource(2,2000,128,00:0C:29:0E:9F:0D,0x0100000A,2345, 00:0C:29:61:C0:3E

17、 , 0x0200000A,2346) -> PSPPrint() -> ToDevice(eth1);ii. Client 接受報文配置文件FromDevice(eth2) -> PSPPrint() -> Discard;iii. Router1 轉(zhuǎn)發(fā)報文配置文件psp : Print("Forward PSP Pkt") -> rt : PSPLookup( 10.0.0.1.0.0.0.0 0, 10.0.0.2.0.0.0.0 0) ;c0 : Classifier(12/0600, -);out0 : Queue(200) ->

18、; todevice0 : ToDevice(eth1);FromDevice(eth1) -> c0;c00->psp;c01->Discard;rt0-> PSPMacap(00:0C:29:F4:DD:E6) -> Print(rt2) -> out0;iv. Router2 轉(zhuǎn)發(fā)報文配置文件psp : Print("Forward PSP Pkt") -> rt : PSPLookup( 10.0.0.1.0.0.0.0 1, 10.0.0.2.0.0.0.0 1) ;c0 : Classifier(12/0600, -);

19、out0 : Queue(200) -> todevice0 : ToDevice(eth2);FromDevice(eth1) -> c0;c00->psp;c01->Discard;rt0->Discard;rt1-> PSPMacap(00:0C:29:0E:9F:17) -> Print(rt2) -> out0;4. 測試結(jié)果v. 客戶端發(fā)送報文vi. Router1 建立路由表以及轉(zhuǎn)發(fā)vii. Router2 建立路由表以及轉(zhuǎn)發(fā)viii. Client 接受到數(shù)據(jù)包并打印5. 結(jié)果總結(jié)實驗采用通過模擬兩臺路由器之間的路由轉(zhuǎn)發(fā)來測試,從

20、實驗結(jié)果來看,Client 從Eth1網(wǎng)口發(fā)送出去的數(shù)據(jù)包,進過Router1和Router2的路由轉(zhuǎn)發(fā)后,能成功到達目的端。該實驗結(jié)果說明,基于PSP報文的路由轉(zhuǎn)發(fā)功能完整實現(xiàn)。(二)基于Label的路由轉(zhuǎn)發(fā)測試1. 實驗拓撲圖2. 配置文件3. 測試結(jié)果4. 結(jié)果總結(jié)(三)優(yōu)先級隊列調(diào)度功能測試1. 實驗拓撲圖2. 實驗測試方法Client發(fā)送優(yōu)先級不同的數(shù)據(jù)包到Router1。Router1在接收到數(shù)據(jù)包后,根據(jù)數(shù)據(jù)包優(yōu)先級不同,放置到相應(yīng)的優(yōu)先級隊列中。由于采用包限流調(diào)度算法,越高的優(yōu)先級隊列能在一秒內(nèi)通過更多的數(shù)據(jù)包,越低的優(yōu)先級隊列通過的數(shù)據(jù)包個數(shù)越少。因此,低優(yōu)先級的數(shù)據(jù)包會被緩

21、存在隊列中,高優(yōu)先級的數(shù)據(jù)包能盡快地從隊列中被讀出,使得從優(yōu)先級隊列中讀出數(shù)據(jù)包的順序和Client發(fā)送數(shù)據(jù)包的順序會有差異。通過對比讀出數(shù)據(jù)包和發(fā)送數(shù)據(jù)包的順序,我們就可以驗證優(yōu)先級隊列調(diào)度的功能是否正常、合理。Client發(fā)送數(shù)據(jù)包順序如下:依次分別發(fā)送5個優(yōu)先級為n的數(shù)據(jù)包,其中n從8變化到1,并循環(huán)往復(fù)。即發(fā)送5個優(yōu)先級為8的數(shù)據(jù)包,再發(fā)送5個優(yōu)先級為7的數(shù)據(jù)包······,并循環(huán)往復(fù)。其中我們設(shè)定數(shù)據(jù)包QoS位的范圍為1-8。其中1代表最高優(yōu)先級,8代表最低優(yōu)先級。3. 配置文件1) Router1接收端部分配置文件如下所示

22、:c : Classifier(14/41, 14/42, 14/43, 14/44, 14/45, 14/46, 14/47, 14/48, -);ps : PrioSched;queue1 : Queue(100);queue2 : Queue(100);queue3 : Queue(100);queue4 : Queue(100);queue5 : Queue(100);queue6 : Queue(100);queue7 : Queue(100);queue8 : Queue(100);queue9 : Queue(100);FromDevice(eth1) -> c;c0-&g

23、t; queue1 -> Shaper(6) -> ps;c1-> queue2 -> Shaper(6) -> 1ps;c2-> queue3 -> Shaper(3) -> 2ps;c3-> queue4 -> Shaper(3) -> 3ps;c4-> queue5 -> Shaper(2) -> 4ps;c5-> queue6 -> Shaper(2) -> 5ps;c6-> queue7 -> Shaper(1) -> 6ps;c7-> queue8 ->

24、; Shaper(1) -> 7ps;c8-> queue9 -> Shaper(10) -> 8ps;ps -> Discard;根據(jù)數(shù)據(jù)包QoS的不同,定義一個輸出端口數(shù)為9的分類器。優(yōu)先級調(diào)度組件PrioSched采用時間片調(diào)度方式。同時,定義了9個大小為100的隊列,最后一個隊列處理其他的數(shù)據(jù)包。4. 測試結(jié)果1) Client數(shù)據(jù)包發(fā)送順序如下圖所示:2) Router1從優(yōu)先級隊列中讀出數(shù)據(jù)包的順序如下圖所示:對比以上數(shù)據(jù)包順序,可以發(fā)現(xiàn),產(chǎn)生數(shù)據(jù)包的優(yōu)先級是從大變化到小,而通過優(yōu)先級隊列的調(diào)度,從隊列中讀出的數(shù)據(jù)包的優(yōu)先級從小變化到大。由于對每秒讀出

25、各隊列的數(shù)據(jù)包數(shù)量進行了限制,因此不會有產(chǎn)生低優(yōu)先級被餓死的現(xiàn)象。5. 結(jié)果總結(jié)(四)標(biāo)簽流按優(yōu)先級分別進行限速功能測試1. 實驗拓撲圖1) 實驗測試方法針對不同的優(yōu)先級,設(shè)置RateLimit組件不同的參數(shù)以達到限速的目的,報文由發(fā)送方產(chǎn)生并在一秒鐘之內(nèi)發(fā)送200個報文給接收方,接收方接收時進行基于優(yōu)先級的限速,并將結(jié)果進行打印。2. 配置文件a) 報文發(fā)送端FastPSPSource(200,200, 128, 00:0c:29:34:3e:ad, 0x800a000a, 2345,00:0C:29:eb:05:0f,0x810a000a,2346) -> ToDevice(eth1

26、);b) 報文接收端: Classifier(13/0041, 13/0042, 13/0043, 13/0044, 13/0045, 13/0046, 13/0047, 13/0048, -);queue1 : Queue(100);queue2 : Queue(100);queue3 : Queue(100);queue4 : Queue(100);queue5 : Queue(100);queue6 : Queue(100);queue7 : Queue(100);queue8 : Queue(100);queue9 : Queue(100);ps : PrioSched;FromDevice(eth1) -> c;c0-> queue1 ->P

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論