基礎(chǔ)知識
網(wǎng)絡(luò)延時
- 網(wǎng)絡(luò)延時指一個數(shù)據(jù)包從用戶的計算機發(fā)送到網(wǎng)站服務(wù)器,然后再立即從網(wǎng)站服務(wù)器返回用戶計算機的來回時間秒咐。通常使用網(wǎng)絡(luò)管理工具PING(Packet Internet Grope)來測量網(wǎng)絡(luò)延時。
- 由于互聯(lián)網(wǎng)絡(luò)的復(fù)雜性、網(wǎng)絡(luò)流量的動態(tài)變化和網(wǎng)絡(luò)路由的動態(tài)選擇,網(wǎng)絡(luò)延時隨時都在不停的變化稱為抖動岂座。網(wǎng)絡(luò)延時和網(wǎng)絡(luò)延時的抖動越小,那么網(wǎng)絡(luò)的質(zhì)量就越好杭措。
- 在互聯(lián)網(wǎng)上费什,典型的網(wǎng)絡(luò)延時為幾十到幾百毫秒。影響網(wǎng)絡(luò)延時的主要因素是路由的跳數(shù)(因為每次路由轉(zhuǎn)發(fā)都需要時間手素,因此路由跳數(shù)越多鸳址,網(wǎng)絡(luò)延時越大)和網(wǎng)絡(luò)的流量(網(wǎng)絡(luò)流量越大,交換機和路由器排隊的時間就越長泉懦,網(wǎng)絡(luò)延時也就越大)稿黍。
- 交換機延時(Latency)是指從交換機接收到數(shù)據(jù)包到開始向目的端口復(fù)制數(shù)據(jù)包之間的時間間隔。有許多因素會影響延時大小崩哩,比如轉(zhuǎn)發(fā)技術(shù)等等巡球。采用直通轉(zhuǎn)發(fā)技術(shù)的交換機有固定的延時。因為直通式交換機不管數(shù)據(jù)包的整體大小邓嘹,而只根據(jù)目的地址來決定轉(zhuǎn)發(fā)方向酣栈。所以,它的延時是固定的汹押,取決于交換機解讀數(shù)據(jù)包前6個字節(jié)中目的地址的解讀速率矿筝。采用存儲轉(zhuǎn)發(fā)技術(shù)的交換機由于必須要接收完了完整的數(shù)據(jù)包才開始轉(zhuǎn)發(fā)數(shù)據(jù)包,所以它的延時與數(shù)據(jù)包大小有關(guān)棚贾。數(shù)據(jù)包大窖维,則延時大;數(shù)據(jù)包小妙痹,則延時小铸史。采用直通轉(zhuǎn)發(fā)技術(shù)的千兆交換機有固定的延時,因為直通式交換機不管數(shù)據(jù)包的整體大小怯伊,而只根據(jù)目的地址來決定轉(zhuǎn)發(fā)方向沛贪。所以,它的延時是固定的。采用存儲轉(zhuǎn)發(fā)技術(shù)的交換機由于必須要接收完了完整的數(shù)據(jù)包才開始轉(zhuǎn)發(fā)數(shù)據(jù)包利赋,所以它的數(shù)據(jù)包大,則延時大猩系;數(shù)據(jù)包小媚送,則延時小。
抖動
抖動是QOS里面常用的一個概念寇甸,其意思是指分組延遲的變化程度塘偎。網(wǎng)絡(luò)延時隨時都在不停的變化稱為抖動(延時的變化成為抖動)。
如果網(wǎng)絡(luò)發(fā)生擁塞拿霉,排隊延遲將影響端到端的延遲吟秩,并導(dǎo)致通過同一連接傳輸?shù)姆纸M延遲各不相同,而抖動绽淘,就是用來描述這樣一延遲變化的程度涵防。
因此,抖動對于實時性的傳輸將會是一個重要參數(shù)沪铭,比如:VOIP壮池,視頻等。
丟包
- 丟包率杀怠,是一個比率椰憋,網(wǎng)絡(luò)中數(shù)據(jù)的傳輸是以發(fā)送和接收數(shù)據(jù)包的形式傳輸?shù)模硐霠顟B(tài)下是發(fā)送了多少數(shù)據(jù)包就能接收到多少數(shù)據(jù)包赔退,但是由于信號衰減橙依、網(wǎng)絡(luò)質(zhì)量等等諸多因素的影響下,并不會出現(xiàn)理想狀態(tài)的結(jié)果硕旗,就是不會發(fā)多少數(shù)據(jù)包就能接收到多少窗骑。
- 網(wǎng)絡(luò)丟包率是指測試中所丟失數(shù)據(jù)包數(shù)量占所發(fā)送數(shù)據(jù)包的比率,通常在吞吐量范圍內(nèi)測試卵渴。
- 丟包率主要與網(wǎng)絡(luò)的流量慧域,準確的說是與從用戶計算機到網(wǎng)站服務(wù)器之間每段路由的網(wǎng)絡(luò)擁塞程度有關(guān)。由于交換機和路由器的處理能力有限浪读,當網(wǎng)絡(luò)流量過高來不及處理時就將一部分數(shù)據(jù)包丟棄造成丟包昔榴。由于TCP/IP網(wǎng)絡(luò)能夠自動實現(xiàn)重發(fā),這樣發(fā)生丟包后不斷重發(fā)碘橘,將造成更大量的丟包互订。因此,網(wǎng)絡(luò)擁塞發(fā)生后經(jīng)常會發(fā)生丟包率越來越高的現(xiàn)象痘拆,和馬路上的交通堵塞十分相似仰禽。
MTU
因為協(xié)議數(shù)據(jù)單元的包頭和包尾的長度是固定的,MTU越大,則一個協(xié)議數(shù)據(jù)單元的承載的有效數(shù)據(jù)就越長吐葵,通信效率也越高规揪。MTU越大,傳送相同的用戶數(shù)據(jù)所需的數(shù)據(jù)包個數(shù)也越低温峭。
MTU也不是越大越好猛铅,因為MTU越大, 傳送一個數(shù)據(jù)包的延遲也越大凤藏;并且MTU越大奸忽,數(shù)據(jù)包中 bit位發(fā)生錯誤的概率也越大。
MTU越大揖庄,通信效率越高而傳輸延遲增大栗菜,所以要權(quán)衡通信效率和傳輸延遲選擇合適的MTU。
以以太網(wǎng)傳送IPv4報文為例蹄梢。MTU表示的長度包含IP包頭的長度疙筹,如果IP層以上的協(xié)議層發(fā)送的數(shù)據(jù)報文的長度超過了MTU,則在發(fā)送者的IP層將對數(shù)據(jù)報文進行分片检号,在接收者的IP層對接收到的分片進行重組腌歉。
這里舉一個具體的例子說明IP包分片的原理。以太網(wǎng)的MTU值是1500 bytes齐苛,假設(shè)發(fā)送者的協(xié)議高層向IP層發(fā)送了長度為3008 bytes的數(shù)據(jù)報文翘盖,則該報文在添加20 bytes的IP包頭后IP包的總長度是 3028 bytes,因為3028 > 1500凹蜂,所以該數(shù)據(jù)報文將被分片馍驯,分片過程如下:
首先計算最大的IP包中IP凈荷的長度 =MTU-IP包頭長度=1500-20= 1480 bytes。
然后把3028 bytes按照1480 bytes的長度分片玛痊,將要分為3片汰瘫,3028= 1480+1480+68。
最后發(fā)送者將為3個分片分別添加IP包頭擂煞,組成3個IP包后再發(fā)送混弥,3個IP包的長度分別為1500 bytes、1500 bytes和 88 bytes对省。
從以上分片例子可以看出第一蝗拿、二個分片包組成的IP包的長度都等于MTU即1500 bytes。
在網(wǎng)絡(luò)通訊中蒿涎,需要盡量避免發(fā)生分片和重組哀托,因為分片重組對網(wǎng)絡(luò)性能影響較大。數(shù)據(jù)包發(fā)送時選擇合適的MTU大小對提高通訊性能很有必要劳秋。MTU大小的選擇有協(xié)議協(xié)商方式仓手,通過全路徑的MTU發(fā)現(xiàn)機制胖齐,找到整條路徑的最小MTU(也就是路徑MTU),然后報文發(fā)送式小于等于路徑MTU嗽冒,這就避免了數(shù)據(jù)傳輸過程中產(chǎn)生分片呀伙,從而提高數(shù)據(jù)轉(zhuǎn)發(fā)性能。MTU的協(xié)議發(fā)現(xiàn)機制由于安全等方面的原因添坊,并不能總是生效区匠,這時候就需要根據(jù)網(wǎng)絡(luò)的特性選擇合理的MTU。如果在報文傳送過程中分片是不可避免的帅腌,那么要想辦法讓重組盡量在終端進行,避免在轉(zhuǎn)發(fā)路徑中進行麻汰。
弱網(wǎng)測試要點
利用抓包工具charles進行弱網(wǎng)設(shè)置速客,適用PC端和移動端(IOS/Android)
1.以charles 4.0版本為例,打開Proxy->Throttle Settings
2.打開Throttle Settings界面如下
3.charles的預(yù)設(shè)已經(jīng)有常用的網(wǎng)速模擬設(shè)置五鲫,根據(jù)需要設(shè)置即可溺职,當然也可以自己添加預(yù)設(shè),自己去研究吧位喂。
charles-Throttle Settings(選項含義講解)
Bandwidth(帶寬)【吞吐量】
帶寬定義數(shù)據(jù)可以傳送超過時間上限浪耘,這是千比特每秒指定∷苎拢可以指定上載和下載鏈接的不同帶寬限制七冲。
Utilisation(利用)
利用率是總帶寬的百分比,可以在任何一個時間使用规婆。它只是作為可用帶寬的縮放因子澜躺。對于大多數(shù)現(xiàn)代互聯(lián)網(wǎng)連接利用率始終是100%。
Round-trip Latency(請求往返延遲)【延時】
往返延遲測量客戶端和遠程服務(wù)器之間的第一次往返通信的毫秒延遲抒蚜。它用于客戶端向服務(wù)器和服務(wù)器向客戶端的每次請求掘鄙。
MTU(最大傳輸單元)
在任何傳輸?shù)腡CP數(shù)據(jù)包的最大尺寸。指定MTU不改變的可用帶寬嗡髓,但允許Charles在MTU分配帶寬大小的塊操漠,導(dǎo)致在每個傳輸包分割的現(xiàn)實水平。
Reliability(可靠性)【丟包】
可靠性是衡量連接完全失敗的可能性饿这。這是非常有用的模擬不可靠的網(wǎng)絡(luò)條件浊伙。可靠性是指定為成功發(fā)射10kib消息的可能性蛹稍,所以吧黄,值為50%意味著所有10kib傳輸一半會成功。較大的郵件或更小的消息或多或少都有可能失敗唆姐,所以20kib傳輸將只有25%的成功率和5kib傳輸成功率約70%拗慨。
Stability(穩(wěn)定性)【抖動】
穩(wěn)定性是衡量一個連接的可能性是不穩(wěn)定的,因此降低了質(zhì)量。這是非常有用的模擬網(wǎng)絡(luò)赵抢,如移動網(wǎng)絡(luò)剧蹂,定期連接質(zhì)量差。如果連接不穩(wěn)定烦却,則連接的質(zhì)量會在不穩(wěn)定的質(zhì)量范圍內(nèi)隨機下降宠叼。此質(zhì)量值,然后應(yīng)用作為另一個縮放因子的可用帶寬其爵。
unstable quality range(不穩(wěn)定質(zhì)量范圍)
此處設(shè)置主要針對于Stability中設(shè)置中的范圍
以下配置用于模擬不太好的2G蜂窩網(wǎng)絡(luò)
- 帶寬256 kbps(上傳和下載)
- 利用100%
- 延遲300 ms
- MTU為1500字節(jié)
- 可靠性75%
- 穩(wěn)定75%
- 不穩(wěn)定的質(zhì)量范圍為20%至25%