高级计算机网络试验报告ns3模拟数据中心_第1页
高级计算机网络试验报告ns3模拟数据中心_第2页
高级计算机网络试验报告ns3模拟数据中心_第3页
高级计算机网络试验报告ns3模拟数据中心_第4页
高级计算机网络试验报告ns3模拟数据中心_第5页
已阅读5页,还剩21页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、Project1-ns3 模拟数据中心实验要求Datacenter network topologyCXnwlimp*IIII根据上面的数据中心拓扑图,完成以下要求:CiustefJ1 Mltvs ig.iJW*CoreI AggregationIII ToR1. 根据给定的数据中心的拓扑结构,利用 ns3进行仿真2. 模拟两种通信模式(traffic pattern)o all-to-all:每个服务器都发送消息给其他服务器消息,由拓扑结构可知,超过50%的消息传送将跨越两个簇(cluster)o many-to-one :每个服务器都发送消息给其中一个服务器3. 测量两种模式下网络的仿真可

2、以达到的吞吐量,找出网络 瓶颈,并且说明如何改进注:拓扑中的网络都是Ethernet网实验内容数据中心模拟实现及主要代码解释a.设置自定义的 attribute为了做实验方便,设置如下自定义attribute pattern :通信模式,all-to-all 或 many-to-one,默认为 1 defaultDst:多对一模式下,接收消息的默认服务器序号,默认为 0 verbose :enable 或者 disable PacketSink 和 OnOffApplication 的日志,默认为 DataRate1 :定义数据中心拓扑第一层的数据传输速率(Mbps),默认为1.0 DataR

3、ate2 :定义数据中心拓扑第二层的数据传输速率(Mbps),默认为1.0 DataRate3 :定义数据中心拓扑第三层的数据传输速率(Mbps),默认为1.5实现代码如下:uint16_t pattern =1;uint16_t nodesNum =8;uint16_t defaultDst =0;float DataRate1 = 1.0;float DataRate2 = 1.0;float DataRate3 = 1.5;uint16_t port =50000;bool verbose = false ;CommandLine cmd;cmd.AddValue( "patt

4、ern" , "number of traffic pattern" , pattern); /pattern1:all-to-all pattern2:many-to-onefalsepatterncmd.AddValue( "defaultDst" , "default destination server node in 2", defaultDst);cmd.AddValue( "DataRatel DataRatel);cmd.AddValue( "DataRate2 DataRate2);cm

5、d.AddValue( "DataRate3 DataRate3);cmd.AddValue ( "verbose" true" , verbose);"data rate of csma network at level 1""data rate of csma network at level 2""data rate of csma network at level 3""Tell sink and onoff applications to log ifcmd.Parse(ar

6、gc, argv);LogComponentEnable ( "DataCenterSimulation" , LOG_LEVEL_INFO); if (verbose) LogComponentEnable ("PacketSink" , LOG_LEVEL_INFO);LogComponentEnable ("OnOffApplication" , LOG_LEVEL_INFO);b.创建结点根据实验要求,总共需要创建15个结点,包括 8 servers 4 ToR switches 2 Aggregation switches

7、1 Core switch实现代码如下:/create nodesNodeContainer n1_8;n1_8.Create( 8);NodeContainer t1_4;t1_4.Create( 4);NodeContainer a12;a12.Create( 2);NodeContainer c1;c1.Create( 1);c.创建CSMA网络节点整个数据中心网络拓扑从下往上可以分为三层,即 第一层:由服务器与 ToR组成的ethernet网络,共有4个,编号为CSMA11,CSMA12,CSMA13,CSMA14第二层:由ToR与Aggregation 组成的ethernet网络,共

8、有2个,编号为CSMA21,CSMA22 第三层:由Aggregation 与Core组成的ethernet网络,共有1个,编号为 CSMA3将创建好的15个网络结点分配到这 7个CSMA网络中,实现代码如下:/create csma nodesNodeContainer csmaNodes11 =1),t1_4.Get( 0);3),t1_4.Get( 1);5),t1_4.Get( 2);7),t1_4.Get( 3);1),a12.Get( 0);3),a12.Get( 1);NodeContainer(n1_8.Get( 0),n1_8.Get( NodeContainer csmaN

9、odes12 =NodeContainer(n1_8.Get( 2),n1_8.Get( NodeContainer csmaNodes13 =NodeContainer(n1_8.Get( 4),n1_8.Get( NodeContainer csmaNodes14 =NodeContainer(n1_8.Get( 6),n1_8.Get( NodeContainer csmaNodes21 =NodeContainer(t1_4.Get( 0),t1_4.Get(NodeContainer csmaNodes22 =NodeContainer(t1_4.Get( 2),t1_4.Get(N

10、odeContainer csmaNodes3 =NodeContainer(a12.Get( 0),a12.Get( 1),c1.Get( 0);d.设置CSMA网络attribute ,并将其安装到相应结点上根据实验要求中的网络拓扑,设置相应网络的属性所有直接相连的两个结点之间的延退都为500ns第一层和第二层 CSMA网络的数据传输速率都为1.0Mbps,第三层为1.5Mbps然后安装到相应的网络结点上,实现代码如下( DataRate可以通过命令行参数设置,默认值即为原实验要求)/create the channels first without any IP addressing i

11、nformation CsmaHelper csma1;sprintf(buf, "%1.1fMbps",DataRate1);csma1.SetChannelAttribute ( "DataRate" , StringValue (buf);csma1.SetChannelAttribute ( "Delay" , StringValue ("500ns");NetDeviceContainer csmaDevices11 = csma1.Install (csmaNodes11);NetDeviceConta

12、iner csmaDevices12 = csma1.Install (csmaNodes12);NetDeviceContainer csmaDevices13 = csma1.Install (csmaNodes13);NetDeviceContainer csmaDevices14 = csma1.Install (csmaNodes14);CsmaHelper csma2;sprintf(buf, "%1.1fMbps",DataRate2);csma2.SetChannelAttribute ( "DataRate" , StringValue

13、 (buf);csma2.SetChannelAttribute ( "Delay" , StringValue ("500ns");NetDeviceContainer csmaDevices21 = csma2.Install (csmaNodes21);NetDeviceContainer csmaDevices22 = csma2.Install (csmaNodes22);CsmaHelper csma3;sprintf(buf, "%1.1fMbps" ,DataRate3);csma3.SetChannelAttribu

14、te ( "DataRate" , StringValue (buf);csma3.SetChannelAttribute ( "Delay" , StringValue ("500ns");NetDeviceContainer csmaDevices3 = csma3.Install (csmaNodes3);e. 分配网络IP根据实验要求,为每个结点安装协议栈,并为7个CSMA网络分配IP,实现代码如下/assign IP addressNS_LOG_INFO ('Assign IP address." );In

15、ternetStackHelper stack;stack .Install (n1_8);stack .Install (t1_4);stack .Install (a12);stack .Install (c1);Ipv4AddressHelper address;address.SetBase ("10.0.1.0" , "255.255.255.0");Ipv4InterfaceContainer csmaInterfacesll = address.Assign(csmaDevicesll);address.SetBase ("10.

16、0.2.0" , "255.255.255.0");Ipv4InterfaceContainer csmaInterfaces12=address.Assign(csmaDevices12);address.SetBase ("10.0.3.0" , "255.255.255.0"Ipv4InterfaceContainer csmaInterfaces13=address.Assign(csmaDevices13);address.SetBase ("10.0.4.0" , "255.255.

17、255.0"Ipv4InterfaceContainer csmaInterfaces14=address.Assign(csmaDevices14);address.SetBase ("10.1.1.0" , "255.255.255.0"Ipv4InterfaceContainer csmaInterfaces21=address.Assign(csmaDevices21);address.SetBase ("10.2.1.0" , "255.255.255.0"Ipv4InterfaceContai

18、ner csmaInterfaces22=address.Assign(csmaDevices22);address.SetBase ("192.168.1.0" , "255.255.255.0"Ipv4InterfaceContainer csmaInterfaces3 =address.Assign(csmaDevices3);f. 初始化路由表这里直接调用了 ns3自带的路由实现,实现代码如下/ Create router nodes, initialize routing database and set up the routing/ tab

19、les in the nodes.Ipv4GlobalRoutingHelper:PopulateRoutingTables ();g. 创建和分配 PacketSink 和 OnOffClient首先,创建sink和OnOff ,实现代码如下/Create sinkApp and OnOffClientApplicationContainer clientAppnodesNum 4;ApplicationContainer sinkAppnodesNum;然后,分配sink到所有的server结点上,实现代码如下(其中nodesNun示server个数):for (unsigned int

20、i = 0;i < nodesNum; i+) (PacketSinkHelper packetSinkHelper ( "ns3:TcpSocketFactory" getAddress(i,port,csmaInterfaces11,csmaInterfaces12,csmaInterfaces13, csmaInterfaces14);sinkAppi = packetSinkHelper.Install (n1_8.Get (i);sinkAppi.Start(Seconds (1.0);sinkAppi.Stop(Seconds (60.0);再然后,分配

21、OnOffClient 到server结点上,并且根据 pattern不同,进行不同的配置 pattern 1:每个服务器都发送消息给其他服务器消息,即发送消息给在另一个簇上面的4个服务器(每个服务器上建立4个OnOffClient ), pattern 2 :每个服务器都发送消息给同一个服务器,可以默认为n1 (每个服务器(n1除夕卜)上建立1个OnOffClient )实现代码如下for (int i = 0; i < nodesNum; i+)(uint16_t dst =0;if (pattern= 1)( /all-to-all patternfor (int j = 0 ;j

22、 <4; j+)(if (i<= 3)dst = j+4;elsedst = j;OnOffHelperclient( "ns3:TcpSocketFactory" ,getAddress(dst,port,csmaInterfaces11,csmaInterfaces12,csmaInterfaces13,csmaInterfaces14);client.SetAttribute ("OnTime",StringValue( "ns3:ConstantRandomVariableConstant=50" );client

23、.SetAttribute ("OffTime",StringValue( "ns3:ConstantRandomVariableConstant=0" );client.SetAttribute ("DataRate" ,DataRateValue (DataRate("1.0Mbps");client.SetAttribute ("PacketSize", UintegerValue (2000);clientAppij = client.Install (n1_8.Get (i);clie

24、ntAppij.Start(Seconds (1.0);clientAppij.Stop (Seconds (51.0);sprintf(buf, "OnOffClient Node %d aims at Server Node %di+ 1 ,dst+ 1);NS_LOG_INFO (buf); else if (pattern= 2) /many-to-one pattern if (i = defaultDst) continue ;dst = defaultDst;OnOffHelperclient( "ns3:TcpSocketFactory" ,get

25、Address(dst,port,csmaInterfaces11,c smaInterfaces12,csmaInterfaces13,csmaInterfaces14);client.SetAttribute ("OnTime",StringValue( "ns3:ConstantRandomVariableConstant=50" );client.SetAttribute ("OffTime",StringValue( "ns3:ConstantRandomVariableConstant=0" );cli

26、ent.SetAttribute ("DataRate" , DataRateValue (DataRate("1.0Mbps");client.SetAttribute ("PacketSize" , UintegerValue (2000);clientAppi0 = client.Install (n1_8.Get (i);clientAppi0.Start(Seconds (1.0);clientAppi0.Stop (Seconds (51.0);sprintf(buf, "OnOffClient Node %d

27、aims at ServerNode %di+ 1 ,dst+ 1);NS_LOG_INFO (buf);这里解释一下一个函数 getAddress :根据server的标号产生相应的IP:port 地址getAddress实现代码如下InetSocketAddress getAddress( int i,uint16_t port,Ipv4InterfaceContainer i1,Ipv4InterfaceContainer i2,Ipv4InterfaceContainer i3,Ipv4InterfaceContainer i4) switch (i) case 0:return In

28、etSocketAddress(i1.GetAddress(0),port);break;case 1:return InetSocketAddress(i1.GetAddress(1),port);break;case 2:returnInetSocketAddress(i2.GetAddress(0),port);breakcase 3:returnInetSocketAddress(i2.GetAddress(1),port);breakcase 4:returnInetSocketAddress(i3.GetAddress(0),port);breakcase 5:returnInet

29、SocketAddress(i3.GetAddress(1),port);breakcase 6:returnInetSocketAddress(i4.GetAddress(0),port);breakcase 7:returnInetSocketAddress(i4.GetAddress(1),port);breakdefault :return InetSocketAddress( "10.0.0.1" ,port);h.配置相应的trace这里采用pcap文件来trace所有的device,方便利用 wireshark 来分析实验结果,实现代码如下csma1.Enab

30、lePcapAll ( "DataCenterSimulation");实验结果与分析a. pattern 1实验结果执行命令./waf -run "scratch/DC -pattern=1"(scratch/DC.cc 为本次实验源程序文件),实验运行结果如下所示I Mur z |wur 1 - VI rtu«lBort:-*/MrkiptiKe/4dvMt/p re) 1i/nt-til lmnie-3.lt/nt-S. 11$ «/wiT - - run "tcr«tdh/X -"patterna

31、i yaf * £n tc tHbO dT-fifttf t-ary /hAH4/mj rz /worlkfifit /pr 11-1-t-1.1B/n s - J. ifi/bu1! Id11H a*r: Leiav tug dl rec tor y ' /hane / wur z/wor kip-* ce/ sd vnie t / proj 1J ri1& -*1L Inaine -3.10/ns - J-lB/buttd Pbui.ld1 finifhc'd 慰酱,Full, t自.7/0%) Create nod&5.Create dhenne

32、ls rAgn IP AMrtsierreatt* sifikpp and OnOffCll#Ht,nof felt entfNode1aims-atServergrtode5OnOffClientHode1Atria.dtServergHodeunorrciicACftiode1*l«5atserver7dnorrctlentdNode1almsServergive dea(JnoffcllentHode2砒混ve rW*o 如§OnOffClient衲id略WScrwr(IHo-de4OnCffCltcntiSNsde2aiins.atScrvr rBHocle7ono

33、fKllenkCNpdeZ砒,5erwerglvodr9klnOf fCl irntfHodr3AtServergHoiirkinOf felt entINode3almsatSer wrggcle03atw?.故5<?r«rf*icbdeTonaf reluct3dtS<rv«rflnOffCltentfNode4almsatServeriNode5buncr TCllent(oMude4almsatServerkd Mg lieunOriTEmt4am客dlS*rw*rMgR7ncrrcittfAtpifide4at£*rwergfwedeaDrn

34、Of fClientdliodeEaxTis-atScrvnerModeOnOffellent,N词蚌Sfllmj砒5«rwcr8*Qcte2flnoffcltent0Modr5ats-prwergHodr3ki-ncf fcltent5alRSat5-errerflivodekunnf relict:6性耳匚5-QfkrergW1g-nofftltefit神。dotatflsSrwrfl 1*5 deW nCf FCllenitfNode6aimsat5erv«r目幅如1|<JnUffCltentfMode6dimstit1vede从上面的结果可以看出,每个结点上的

35、OnOffClient 都有一半以上跨越了两个簇,产生的pcap文件如下所示IvuuriiMurz-VLrtudlBox:*/warlkspace/jdvnet/projl/ns-jllinone-3,18/ns*3.18S li_I grep "pcap DataCenterStnulation-6-0. CBtiCenterSifiulvtion-lS - 6 DataCrntrrSinu'lation -16-1. ndtaCrnterSinulatiori i G. DatdCfnterstnulatton 11 0. oat accnter tnulaton-11-

36、1. Datacenterstnulatton-iz-0* Datacenterstnulatton-12-1. DatatenterSinulation-13-0. DataCenterSinu Lation-13-lx DataCenterSimu Lation-14-&. DataCenterStmulation- 2-ft. DataCenterSinulattan-!-& atiCenterSlnulatton4 0, DatacenterstHulattons e. DatacenterstHulatton t e. |DdtdCenLcr Slriuldtlon

37、7 尊. Datacenterstnulatton-8-a. DatdCenterSlriuldtion-a-l. DataCenterSlciulatian-S-e. OatoCentarStHulfttion-9-1.为了分析patten 1的网络吞吐量,根据all-to-all模式却络的对称性,选取测量位置 CSMA11:通过 server n1 (node 0/device 0) 来估计 CSMA21:通过 ToR t1 (node 8/device 1)来估计 CSMA3 :通过 Aggregation al (node 12/device 1) 来估讨选取的测量标准为吞吐量,具体方

38、法是 使用wireshark分析相应的 pcap文件中的tcp包来查看整个过程中该结点上的 使用 statistics->TCP Stream Graph->Throughput Graph吞吐量变化情况使用statistics->Summary 来查看当前结点上网络平均吞吐量,以此估计相应CSMA网络的吞吐量server n1 上的测量结果如下Throughput GraphT<F sraph 1: Dat«Cant*rSiiniriatiQn'Q'Drp<«p配10.0.3.1:SW?QTirn-R】SummaryTraff

39、icCaptured DisplayedPackets41334133Between Hrst and IM packet48 973 set:46.972 SKAvg. packets/&cS4.51684.395A"vg. packet size377.211 bytes377.665 bytesBytes1S612761550892Avg.bytes/sec318S023531873.061Avg. MBit/sec0,2550-255MarkedToR t1上的测量结果如下Throughput GraphTCP Graph 1; DatiiCeinterSimulat

40、ion>B-l.p£ap 10.0.1.1:491351J>.DB3.1:9ODODTimefiiSummaryTraFficCapturedDisplayedMarkedPackets86048S980Between First dnd last packet 48,986sec48,985 secAvg. packets/sec175.643175.52SAvg. packet size364.747 bytes381971 bytesBytes33103663309982Avg. bytes/5ec67578.36267571.938Avg.MBit/sec0.54

41、10.541Aggregation al上的测量结果如下Throughput GraphTCP Ciraph 1:DdtaiCent<»rSiimLi Is tian-12-1. pcp 10.0>.lBl:49|133-> lo.o.i.i:soa<wThrouHgihpijt 网WOOD &0000 40000_ 3«nD 20000 1OT0D ,Thfoijghput Cfpihi*r*I ik 1|«4I 1A1 一 .j"1,鱼产.' . &. i* fi“ r i 一iI r i i rii

42、ii i i111q151015202530354045nm的TrafficCapturedDisplayedMarkedPackets1584715843aBetween first and last packet48.990 sec48989 SRAvg. packets/sec321476323,399Avg. packet size383.S65 bytes3A3.646 bytesBytes60783586078102Avg. bytes/sec124074.168124070.677Avg, Nl Bit/s ec0.9930.993b. pattern 1实验结果分析首先对实验结

43、果进行简单汇总网络结点带宽(Mbps)网络平均吞吐量(Mbps)CSMA11server n11.00.255CSMA21ToR t11.00.541CSMA3Aggregation a11.50.993从上面的结果可以看出 第1层CSMA网络平均吞吐量是0.255Mbps,带宽利用率为25.5% ;* 第2层CSMA网络平均吞吐量是0.541Mbps,带宽利用率为54.1% ; 第3层CSMA网络平均吞吐量是0.993Mbps,带宽利用率为66.2% 。c. pattern 1瓶颈及改进,瓶颈根据以上的实验结果可以看出来, 从网络的平均吞吐量来看: 第3层CSMA>第2层CSMA>

44、;第1层CSMA2,从带宽利用率上看也是这样,所以作为 core switch连接两个子网络但带宽过小的第三层网络成了整个网络的 瓶颈。改进可以加大第3层网络的带宽,防止数据流量过大出现拥塞的情况发生。因此最后确定的网络带宽如下所示:o CSMA11-14 : 1.0Mbpso CSMA21-22 : 1.0Mbpso CSMA3 : 2.0Mbps改进结果执行命令行./waf -run "scratch/DC -DataRate1=1.0 -DataRate2=1.0-DataRate3=2.0”,以相同方式测量网络,得到的结果如下:网络结点带宽(Mbps)网络平均吞吐量(Mbps

45、)CSMA11server n11.00.306CSMA21ToR t11.00.523CSMA3Aggregation a12.00.990从上面的结果可以看出加大第三层网络的带宽,确实提高了整个网络的吞吐量,尤其是对最底层的server结点来说。d. pattern 2实验结果执行命令./waf -run "scratch/DC -pattern=2" ,实验运行结果如下所示从上面的结果可以看出,8个OnOffClient 都将数据传输到 n1,产生的pcap文件如下所示为了分析patten 2 的网络吞吐量,根据网络拓扑的对称性,选取测量位置CSMA11:通过serv

46、er n1(node 0/device 0)来估计CSMA12:通过server n3(node 2/device 0)来估计CSMA13:通过server n5(node 4/device 0)来估计 CSMA21 :通过 ToR t1 (node 8/device 1)来估计 CSMA22 :通过 ToR t3 (node 10/device 1)来估计 CSMA3 :通过 Aggregation a1 (node 12/device 1) 来估讨选取的测量标准为吞吐量,具体方法是 使用wireshark 分析相应的 pcap文件中的tcp包 使用statistics->TCP St

47、ream Graph->Throughput Graph来查看整个过程中该结点上的吞吐量变化情况*使用statistics->Summary来查看当前结点上网络平均吞吐量,以此估计相应CSMA网络的吞吐量server n1 上的测量结果如下Throughput GraphTCP Graph 1: Dota>CenterSlmulatiDn-0-O.pcAp 10/0.1.2:4913310,0.1.1:30000ThfoughpuLB/sTl*w oughput Graph-r通1*-9QQ0Q.-::700M 60000SOOIM 4Q0M 1OOOO QOtK Timef

48、i10000-Summary,RaffleCapturedDisplayedMarkedPacketetween First and last packet48.989 sec48.988 secAvg.packets/sec302744302,587Avg. packet size40V958 bytes402.141 bytesBytes596144-65960934Avg. bytes/sec121690.443121682.542Avq.MBit/sec0,9740.973server n3上的测量结果如下Throughput GraphTCP Graph 1

49、: DataCentcrSimuInfrinn ? O.pcap 10.0.2.1:0193 -> 10.0.1.1:90000Ttvgggut网IThroughput Graph934X)0SDOOO7MOO 630005OTOO <WQ-3DOCO-2iWOO Hi1WOOrimefslIMOJOi TraFficCapturedDisplayedMarkedPackets279127850Between First and last packet48.925 sec4BS24secAvg. patkets/sec57.04656.925Avg. packet si;e3963

50、18 bytes397.034bytesByte&11061241105740Avg. bytes/&ec22608.4S922601.084Avq. MBit/sec0.1810.181server n5上的测量结果如下Throughput GraphTCF Gffdpli 1: DdtACw«iit«fSfimulidtlom4-0.pcriip 10.0.9.1:4S19310.0>. 1.1:9<KIOOFiroghputE3/1JtvaughptA Gr i醉»70000 1020104。TirnetsSummaryTraff

51、icCapturedDisplayedMarkedPackets179017840between First and last packet48.935 sec46.934 secAvg packets/sec36.57936.457Avgi. packet size39Z.955 bytes394.Q&2 bytesBytes703390703006Avgi. byte/iec14373.86614366.3Z0Avq. MBit/sec0,1150-115ToR t1上的测量结果如下Throughput Graphtcp Graph 1: DatBC«nt«rs

52、ImuIpc p io.o.zki:4»15J -> io»o.l.l:5O0Q0Threuiput期1WJOCOThroughput Graph60000700006DOOO1500004000030000200C010000' TrafficCaptur&dDisplayedMarkedPackets930492960Between firstand last packet48.989 set48.980 secAvg. packets/sec189.921189.832Avg. packet size39S.877 bytes396.091 bytesBytes36852363682852Avg. bytes/sec75185.4Q675190.755Avg(MBit/sec0*6010,602ToR t3上的测量结果如下Throughput GraphTCP Graph L: DataCentrSlimulation-lO-O.pcap 1O.O.3.1:4915S1Q.O1. 1:30000Crdph7WW4000030000 2000010000TlrneMThrougiiputTrafficCapturedDisplayedMarkedPackets

温馨提示

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

最新文档

评论

0/150

提交评论