




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上Project1-ns3模擬數(shù)據(jù)中心實(shí)驗(yàn)要求根據(jù)上面的數(shù)據(jù)中心拓?fù)鋱D,完成以下要求:1. 根據(jù)給定的數(shù)據(jù)中心的拓?fù)浣Y(jié)構(gòu),利用ns3進(jìn)行仿真2. 模擬兩種通信模式(traffic pattern)o all-to-all:每個(gè)服務(wù)器都發(fā)送消息給其他服務(wù)器消息,由拓?fù)浣Y(jié)構(gòu)可知,超過(guò)50%的消息傳送將跨越兩個(gè)簇(cluster)o many-to-one:每個(gè)服務(wù)器都發(fā)送消息給其中一個(gè)服務(wù)器3. 測(cè)量?jī)煞N模式下網(wǎng)絡(luò)的仿真可以達(dá)到的吞吐量,找出網(wǎng)絡(luò)瓶頸,并且說(shuō)明如何改進(jìn)注:拓?fù)渲械木W(wǎng)絡(luò)都是Ethernet網(wǎng)實(shí)驗(yàn)內(nèi)容數(shù)據(jù)中心模擬實(shí)現(xiàn)及主要代碼解釋a. 設(shè)置自定義的attribu
2、te為了做實(shí)驗(yàn)方便,設(shè)置如下自定義attribute:· pattern:通信模式,all-to-all或many-to-one,默認(rèn)為1· defaultDst:多對(duì)一模式下,接收消息的默認(rèn)服務(wù)器序號(hào),默認(rèn)為0· verbose:enable或者disable PacketSink和OnOffApplication的日志,默認(rèn)為false· DataRate1:定義數(shù)據(jù)中心拓?fù)涞谝粚拥臄?shù)據(jù)傳輸速率(Mbps),默認(rèn)為1.0· DataRate2:定義數(shù)據(jù)中心拓?fù)涞诙拥臄?shù)據(jù)傳輸速率(Mbps),默認(rèn)為1.0· DataRate3:定
3、義數(shù)據(jù)中心拓?fù)涞谌龑拥臄?shù)據(jù)傳輸速率(Mbps),默認(rèn)為1.5實(shí)現(xiàn)代碼如下: 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("pattern", "number of traffic pat
4、tern", pattern);/pattern1:all-to-all pattern2:many-to-one cmd.AddValue("defaultDst", "default destination server node in pattern 2", defaultDst); cmd.AddValue("DataRate1", "data rate of csma network at level 1", DataRate1); cmd.AddValue("DataRate2&qu
5、ot;, "data rate of csma network at level 2", DataRate2); cmd.AddValue("DataRate3", "data rate of csma network at level 3", DataRate3); cmd.AddValue ("verbose", "Tell sink and onoff applications to log if true", verbose); cmd.Parse(argc, argv); LogCom
6、ponentEnable ("DataCenterSimulation", LOG_LEVEL_INFO); if (verbose) LogComponentEnable ("PacketSink", LOG_LEVEL_INFO); LogComponentEnable ("OnOffApplication", LOG_LEVEL_INFO); b. 創(chuàng)建結(jié)點(diǎn)根據(jù)實(shí)驗(yàn)要求,總共需要?jiǎng)?chuàng)建15個(gè)結(jié)點(diǎn),包括:· 8 servers· 4 ToR switches· 2 Aggregation switche
7、s· 1 Core switch實(shí)現(xiàn)代碼如下: /create nodes NodeContainer n1_8; n1_8.Create(8); NodeContainer t1_4; t1_4.Create(4); NodeContainer a12; a12.Create(2); NodeContainer c1; c1.Create(1);c. 創(chuàng)建CSMA網(wǎng)絡(luò)節(jié)點(diǎn)整個(gè)數(shù)據(jù)中心網(wǎng)絡(luò)拓?fù)鋸南峦峡梢苑譃槿龑?,?#183; 第一層:由服務(wù)器與ToR組成的ethernet網(wǎng)絡(luò),共有4個(gè),編號(hào)為CSMA11,CSMA12,CSMA13,CSMA14· 第二層:由ToR與A
8、ggregation組成的ethernet網(wǎng)絡(luò),共有2個(gè),編號(hào)為CSMA21,CSMA22· 第三層:由Aggregation與Core組成的ethernet網(wǎng)絡(luò),共有1個(gè),編號(hào)為CSMA3將創(chuàng)建好的15個(gè)網(wǎng)絡(luò)結(jié)點(diǎn)分配到這7個(gè)CSMA網(wǎng)絡(luò)中,實(shí)現(xiàn)代碼如下: /create csma nodes NodeContainer csmaNodes11 = NodeContainer(n1_8.Get(0),n1_8.Get(1),t1_4.Get(0); NodeContainer csmaNodes12 = NodeContainer(n1_8.Get(2),n1_8.Get(3),t1
9、_4.Get(1); NodeContainer csmaNodes13 = NodeContainer(n1_8.Get(4),n1_8.Get(5),t1_4.Get(2); NodeContainer csmaNodes14 = NodeContainer(n1_8.Get(6),n1_8.Get(7),t1_4.Get(3); NodeContainer csmaNodes21 = NodeContainer(t1_4.Get(0),t1_4.Get(1),a12.Get(0); NodeContainer csmaNodes22 = NodeContainer(t1_4.Get(2)
10、,t1_4.Get(3),a12.Get(1); NodeContainer csmaNodes3 = NodeContainer(a12.Get(0),a12.Get(1),c1.Get(0);d. 設(shè)置CSMA網(wǎng)絡(luò)attribute,并將其安裝到相應(yīng)結(jié)點(diǎn)上根據(jù)實(shí)驗(yàn)要求中的網(wǎng)絡(luò)拓?fù)?,設(shè)置相應(yīng)網(wǎng)絡(luò)的屬性· 所有直接相連的兩個(gè)結(jié)點(diǎn)之間的延遲都為500ns· 第一層和第二層CSMA網(wǎng)絡(luò)的數(shù)據(jù)傳輸速率都為1.0Mbps,第三層為1.5Mbps然后安裝到相應(yīng)的網(wǎng)絡(luò)結(jié)點(diǎn)上,實(shí)現(xiàn)代碼如下(DataRate可以通過(guò)命令行參數(shù)設(shè)置,默認(rèn)值即為原實(shí)驗(yàn)要求): /create the chan
11、nels first without any IP addressing information CsmaHelper csma1; sprintf(buf,"%1.1fMbps",DataRate1); csma1.SetChannelAttribute ("DataRate", StringValue (buf); csma1.SetChannelAttribute ("Delay", StringValue ("500ns"); NetDeviceContainer csmaDevices11 = csma1
12、.Install (csmaNodes11); NetDeviceContainer csmaDevices12 = csma1.Install (csmaNodes12); NetDeviceContainer csmaDevices13 = csma1.Install (csmaNodes13); NetDeviceContainer csmaDevices14 = csma1.Install (csmaNodes14); CsmaHelper csma2; sprintf(buf,"%1.1fMbps",DataRate2); csma2.SetChannelAttr
13、ibute ("DataRate", StringValue (buf); csma2.SetChannelAttribute ("Delay", StringValue ("500ns"); NetDeviceContainer csmaDevices21 = csma2.Install (csmaNodes21); NetDeviceContainer csmaDevices22 = csma2.Install (csmaNodes22); CsmaHelper csma3; sprintf(buf,"%1.1fMbps
14、",DataRate3); csma3.SetChannelAttribute ("DataRate", StringValue (buf); csma3.SetChannelAttribute ("Delay", StringValue ("500ns"); NetDeviceContainer csmaDevices3 = csma3.Install (csmaNodes3);e. 分配網(wǎng)絡(luò)IP根據(jù)實(shí)驗(yàn)要求,為每個(gè)結(jié)點(diǎn)安裝協(xié)議棧,并為7個(gè)CSMA網(wǎng)絡(luò)分配IP,實(shí)現(xiàn)代碼如下 /assign IP address NS_LO
15、G_INFO ("Assign IP address."); InternetStackHelper 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 csmaInterfaces11 = address.Ass
16、ign (csmaDevices11); address.SetBase ("10.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
17、); address.SetBase ("10.0.4.0", "255.255.255.0"); Ipv4InterfaceContainer csmaInterfaces14 = address.Assign (csmaDevices14); address.SetBase ("10.1.1.0", "255.255.255.0"); Ipv4InterfaceContainer csmaInterfaces21 = address.Assign (csmaDevices21); address.SetBase
18、 ("10.2.1.0", "255.255.255.0"); Ipv4InterfaceContainer csmaInterfaces22 = address.Assign (csmaDevices22); address.SetBase ("192.168.1.0", "255.255.255.0"); Ipv4InterfaceContainer csmaInterfaces3 = address.Assign (csmaDevices3);f. 初始化路由表這里直接調(diào)用了ns3自帶的路由實(shí)現(xiàn),實(shí)現(xiàn)代碼如下
19、 / Create router nodes, initialize routing database and set up the routing / tables in the nodes. Ipv4GlobalRoutingHelper:PopulateRoutingTables ();g. 創(chuàng)建和分配PacketSink和OnOffClient首先,創(chuàng)建sink和OnOff,實(shí)現(xiàn)代碼如下 /Create sinkApp and OnOffClient ApplicationContainer clientAppnodesNum4; ApplicationContainer sinkAp
20、pnodesNum;然后,分配sink到所有的server結(jié)點(diǎn)上,實(shí)現(xiàn)代碼如下(其中nodesNum表示server個(gè)數(shù)): for(unsigned int i = 0;i < nodesNum; i+) PacketSinkHelper packetSinkHelper ("ns3:TcpSocketFactory", getAddress(i,port,csmaInterfaces11,csmaInterfaces12,csmaInterfaces13,csmaInterfaces14); sinkAppi = packetSinkHelper.Install
21、(n1_8.Get (i); sinkAppi.Start(Seconds (1.0); sinkAppi.Stop(Seconds (60.0); 再然后,分配OnOffClient到server結(jié)點(diǎn)上,并且根據(jù)pattern不同,進(jìn)行不同的配置· pattern 1:每個(gè)服務(wù)器都發(fā)送消息給其他服務(wù)器消息,即發(fā)送消息給在另一個(gè)簇上面的4個(gè)服務(wù)器(每個(gè)服務(wù)器上建立4個(gè)OnOffClient)· pattern 2:每個(gè)服務(wù)器都發(fā)送消息給同一個(gè)服務(wù)器,可以默認(rèn)為n1(每個(gè)服務(wù)器(n1除外)上建立1個(gè)OnOffClient)實(shí)現(xiàn)代碼如下 for(int i = 0; i <
22、; nodesNum; i+) uint16_t dst = 0; if(pattern=1)/all-to-all pattern for(int j = 0 ;j < 4; j+) if(i<=3) dst = j+4; else dst = j; OnOffHelper client("ns3:TcpSocketFactory",getAddress(dst,port,csmaInterfaces11,csmaInterfaces12,csmaInterfaces13,csmaInterfaces14); client.SetAttribute (&quo
23、t;OnTime", StringValue("ns3:ConstantRandomVariableConstant=50"); client.SetAttribute ("OffTime", StringValue("ns3:ConstantRandomVariableConstant=0"); client.SetAttribute ("DataRate", DataRateValue (DataRate ("1.0Mbps"); client.SetAttribute (&quo
24、t;PacketSize", UintegerValue (2000); clientAppij = client.Install (n1_8.Get (i); clientAppij.Start(Seconds (1.0); clientAppij.Stop (Seconds (51.0); sprintf(buf,"OnOffClient Node %d aims at Server Node %d",i+1,dst+1); NS_LOG_INFO (buf); else if(pattern=2)/many-to-one pattern if(i = def
25、aultDst)continue; dst = defaultDst; OnOffHelper client("ns3:TcpSocketFactory",getAddress(dst,port,csmaInterfaces11,csmaInterfaces12,csmaInterfaces13,csmaInterfaces14); client.SetAttribute ("OnTime", StringValue("ns3:ConstantRandomVariableConstant=50"); client.SetAttribu
26、te ("OffTime", StringValue("ns3:ConstantRandomVariableConstant=0"); client.SetAttribute ("DataRate", DataRateValue (DataRate ("1.0Mbps"); client.SetAttribute ("PacketSize", UintegerValue (2000); clientAppi0 = client.Install (n1_8.Get (i); clientAppi0
27、.Start(Seconds (1.0); clientAppi0.Stop (Seconds (51.0); sprintf(buf,"OnOffClient Node %d aims at Server Node %d",i+1,dst+1); NS_LOG_INFO (buf); 這里解釋一下一個(gè)函數(shù)· getAddress:根據(jù)server的標(biāo)號(hào)產(chǎn)生相應(yīng)的IP:port地址getAddress實(shí)現(xiàn)代碼如下InetSocketAddress getAddress(int i,uint16_t port,Ipv4InterfaceContainer i1,Ip
28、v4InterfaceContainer i2,Ipv4InterfaceContainer i3,Ipv4InterfaceContainer i4) switch(i) case 0: return InetSocketAddress(i1.GetAddress(0),port);break; case 1: return InetSocketAddress(i1.GetAddress(1),port);break; case 2: return InetSocketAddress(i2.GetAddress(0),port);break; case 3: return InetSocke
29、tAddress(i2.GetAddress(1),port);break; case 4: return InetSocketAddress(i3.GetAddress(0),port);break; case 5: return InetSocketAddress(i3.GetAddress(1),port);break; case 6: return InetSocketAddress(i4.GetAddress(0),port);break; case 7: return InetSocketAddress(i4.GetAddress(1),port);break; default:
30、return InetSocketAddress("10.0.0.1",port); h. 配置相應(yīng)的trace這里采用pcap文件來(lái)trace所有的device,方便利用wireshark來(lái)分析實(shí)驗(yàn)結(jié)果,實(shí)現(xiàn)代碼如下csma1.EnablePcapAll ("DataCenterSimulation");實(shí)驗(yàn)結(jié)果與分析a. pattern 1 實(shí)驗(yàn)結(jié)果執(zhí)行命令./waf -run "scratch/DC -pattern=1"(scratch/DC.cc為本次實(shí)驗(yàn)源程序文件),實(shí)驗(yàn)運(yùn)行結(jié)果如下所示從上面的結(jié)果可以看出,每個(gè)結(jié)點(diǎn)上的O
31、nOffClient都有一半以上跨越了兩個(gè)簇,產(chǎn)生的pcap文件如下所示為了分析patten 1的網(wǎng)絡(luò)吞吐量,根據(jù)all-to-all模式下網(wǎng)絡(luò)的對(duì)稱(chēng)性,選取測(cè)量位置· CSMA11:通過(guò)server n1(node 0/device 0)來(lái)估計(jì)· CSMA21:通過(guò)ToR t1(node 8/device 1)來(lái)估計(jì)· CSMA3 :通過(guò)Aggregation a1(node 12/device 1)來(lái)估計(jì)選取的測(cè)量標(biāo)準(zhǔn)為吞吐量,具體方法是· 使用wireshark分析相應(yīng)的pcap文件中的tcp包· 使用statistics-&g
32、t;TCP Stream Graph->Throughput Graph來(lái)查看整個(gè)過(guò)程中該結(jié)點(diǎn)上的吞吐量變化情況· 使用statistics->Summary來(lái)查看當(dāng)前結(jié)點(diǎn)上網(wǎng)絡(luò)平均吞吐量,以此估計(jì)相應(yīng)CSMA網(wǎng)絡(luò)的吞吐量server n1上的測(cè)量結(jié)果如下Throughput GraphSummaryToR t1上的測(cè)量結(jié)果如下Throughput GraphSummaryAggregation a1上的測(cè)量結(jié)果如下Throughput GraphSummaryb. pattern 1 實(shí)驗(yàn)結(jié)果分析首先對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行簡(jiǎn)單匯總網(wǎng)絡(luò)結(jié)點(diǎn)帶寬(Mbps)網(wǎng)絡(luò)平均吞吐量(Mbps
33、)CSMA11server n11.00.255CSMA21ToR t11.00.541CSMA3Aggregation a11.50.993從上面的結(jié)果可以看出· 第1層CSMA網(wǎng)絡(luò)平均吞吐量是0.255Mbps,帶寬利用率為25.5%;· 第2層CSMA網(wǎng)絡(luò)平均吞吐量是0.541Mbps,帶寬利用率為54.1%;· 第3層CSMA網(wǎng)絡(luò)平均吞吐量是0.993Mbps,帶寬利用率為66.2%。c. pattern 1 瓶頸及改進(jìn)· 瓶頸根據(jù)以上的實(shí)驗(yàn)結(jié)果可以看出來(lái),從網(wǎng)絡(luò)的平均吞吐量來(lái)看:第3層CSMA>第2層CSMA>第1層CSMA2,從帶
34、寬利用率上看也是這樣,所以作為core switch連接兩個(gè)子網(wǎng)絡(luò)但帶寬過(guò)小的第三層網(wǎng)絡(luò)成了整個(gè)網(wǎng)絡(luò)的瓶頸。· 改進(jìn)可以加大第3層網(wǎng)絡(luò)的帶寬,防止數(shù)據(jù)流量過(guò)大出現(xiàn)擁塞的情況發(fā)生。因此最后確定的網(wǎng)絡(luò)帶寬如下所示:o CSMA11-14:1.0Mbpso CSMA21-22:1.0Mbpso CSMA3 :2.0Mbps· 改進(jìn)結(jié)果執(zhí)行命令行./waf -run "scratch/DC -DataRate1=1.0 -DataRate2=1.0 -DataRate3=2.0",以相同方式測(cè)量網(wǎng)絡(luò),得到的結(jié)果如下:網(wǎng)絡(luò)結(jié)點(diǎn)帶寬(Mbps)網(wǎng)絡(luò)平均吞吐量(Mbp
35、s)CSMA11server n11.00.306CSMA21ToR t11.00.523CSMA3Aggregation a12.00.990從上面的結(jié)果可以看出加大第三層網(wǎng)絡(luò)的帶寬,確實(shí)提高了整個(gè)網(wǎng)絡(luò)的吞吐量,尤其是對(duì)最底層的server結(jié)點(diǎn)來(lái)說(shuō)。d. pattern 2 實(shí)驗(yàn)結(jié)果執(zhí)行命令./waf -run "scratch/DC -pattern=2",實(shí)驗(yàn)運(yùn)行結(jié)果如下所示從上面的結(jié)果可以看出,8個(gè)OnOffClient都將數(shù)據(jù)傳輸?shù)絥1,產(chǎn)生的pcap文件如下所示為了分析patten 2的網(wǎng)絡(luò)吞吐量,根據(jù)網(wǎng)絡(luò)拓?fù)涞膶?duì)稱(chēng)性,選取測(cè)量位置· CSMA11:通
36、過(guò)server n1(node 0/device 0)來(lái)估計(jì)· CSMA12:通過(guò)server n3(node 2/device 0)來(lái)估計(jì)· CSMA13:通過(guò)server n5(node 4/device 0)來(lái)估計(jì)· CSMA21:通過(guò)ToR t1(node 8/device 1)來(lái)估計(jì)· CSMA22:通過(guò)ToR t3(node 10/device 1)來(lái)估計(jì)· CSMA3 :通過(guò)Aggregation a1(node 12/device 1)來(lái)估計(jì)選取的測(cè)量標(biāo)準(zhǔn)為吞吐量,具體方法是· 使用wireshark分析相應(yīng)
37、的pcap文件中的tcp包· 使用statistics->TCP Stream Graph->Throughput Graph來(lái)查看整個(gè)過(guò)程中該結(jié)點(diǎn)上的吞吐量變化情況· 使用statistics->Summary來(lái)查看當(dāng)前結(jié)點(diǎn)上網(wǎng)絡(luò)平均吞吐量,以此估計(jì)相應(yīng)CSMA網(wǎng)絡(luò)的吞吐量server n1上的測(cè)量結(jié)果如下Throughput GraphSummaryserver n3上的測(cè)量結(jié)果如下Throughput GraphSummaryserver n5上的測(cè)量結(jié)果如下Throughput GraphSummaryToR t1上的測(cè)量結(jié)果如下Throughput GraphSummaryToR t3上的測(cè)量
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 購(gòu)物中心珠寶區(qū)品牌租賃與區(qū)域市場(chǎng)拓展合同
- 景區(qū)生態(tài)保護(hù)與開(kāi)發(fā)合作合同
- 智能家居產(chǎn)品分銷(xiāo)渠道拓展及售后服務(wù)保障協(xié)議
- 教育培訓(xùn)廣告視頻后期制作及推廣合同
- 網(wǎng)紅奶茶區(qū)域代理權(quán)合作與品牌營(yíng)銷(xiāo)支持合同
- 工業(yè)級(jí)3D打印耗材倉(cāng)儲(chǔ)租賃及配送服務(wù)合同
- 醫(yī)院中央空調(diào)定期清洗計(jì)劃
- 部編語(yǔ)文八年級(jí)上冊(cè)課外活動(dòng)計(jì)劃
- 防塵設(shè)備采購(gòu)合同
- 會(huì)議紀(jì)念品采購(gòu)合同
- 2024年西安亮麗電力集團(tuán)有限責(zé)任公司招聘筆試參考題庫(kù)附帶答案詳解
- 掛名法定負(fù)責(zé)人免責(zé)協(xié)議
- 科技志愿服務(wù)培訓(xùn)課件
- 谷紅注射液-臨床藥品應(yīng)用解讀
- 2024年首都機(jī)場(chǎng)集團(tuán)資產(chǎn)管理有限公司招聘筆試參考題庫(kù)含答案解析
- 2024年山東濟(jì)南先行投資有限責(zé)任公司招聘筆試參考題庫(kù)含答案解析
- 新生兒持續(xù)肺動(dòng)脈高壓的護(hù)理課件
- 酒廠擴(kuò)建可行性報(bào)告
- 故事繪本表演游戲-:狐貍和兔子
- 售后服務(wù)中的客戶(hù)溝通和協(xié)商技巧
- 《紅樓夢(mèng)》中賈母的智慧與權(quán)謀解析
評(píng)論
0/150
提交評(píng)論