青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

陳碩的Blog

Muduo 網(wǎng)絡(luò)編程示例之五: 測量兩臺機器的網(wǎng)絡(luò)延遲

Muduo 網(wǎng)絡(luò)編程示例之五: 測量兩臺機器的網(wǎng)絡(luò)延遲

陳碩 (giantchen_AT_gmail)

Blog.csdn.net/Solstice  t.sina.com.cn/giantchen

這是《Muduo 網(wǎng)絡(luò)編程示例》系列的第五篇文章。

Muduo 全系列文章列表: http://blog.csdn.net/Solstice/category/779646.aspx

 

本文介紹一個簡單的網(wǎng)絡(luò)程序 roundtrip,用于測量兩臺機器之間的網(wǎng)絡(luò)延遲,即“往返時間 / round trip time / RTT”。這篇文章主要考察定長 TCP 消息的分包,TCP_NODELAY 的作用。

本文的代碼見 http://code.google.com/p/muduo/source/browse/trunk/examples/roundtrip/roundtrip.cc

測量 RTT 的辦法很簡單:

  • host A 發(fā)一條消息給 host B,其中包含 host A 發(fā)送消息的本地時間
  • host B 收到之后立刻把消息 echo 回 host A
  • host A 收到消息之后,用當前時間減去消息中的時間就得到了 RTT。

NTP 協(xié)議的工作原理與之類似,不過,除了測量 RTT,NTP 還需要知道兩臺機器之間的時間差 (clock offset),這樣才能校準時間。

roundtrip_ntp

以上是 NTP 協(xié)議收發(fā)消息的協(xié)議,RTT = (T4-T1) – (T3-T2),時間差 = ((T4+T1)-(T2+T3))/2。NTP 的要求是往返路徑上的單程延遲要盡量相等,這樣才能減少系統(tǒng)誤差。偶然誤差由單程延遲的不確定性決定。

在我設(shè)計的 roundtrip 示例程序中,協(xié)議有所簡化:

roundtrip_simple

簡化之后的協(xié)議少取一次時間,因為 server 收到消息之后立刻發(fā)送回 client,耗時很少(若干微秒),基本不影響最終結(jié)果。

我設(shè)計的消息格式是 16 字節(jié)定長消息:

roundtrip_msg

T1 和 T2 都是 muduo::Timestamp,一個 int64_t,表示從 Epoch 到現(xiàn)在的微秒數(shù)。

為了讓消息的單程往返時間接近,server 和 client 發(fā)送的消息都是 16 bytes,這樣做到對稱。

由于是定長消息,可以不必使用 codec,在 message callback 中直接用

while (buffer->readableBytes() >= frameLen) { ... } 就能 decode。

請讀者思考,如果把 while 換成 if 會有什么后果?

 

client 程序以 200ms 為間隔發(fā)送消息,在收到消息之后打印 RTT 和 clock offset。一次運作實例如下:

roundtrip_example

這個例子中,client 和 server 的時鐘不是完全對準的,server 的時間快了 850 us,用 roundtrip 程序能測量出這個時間差。有了這個時間差就能校正分布式系統(tǒng)中測量得到的消息延遲。

比方說以上圖為例,server 在它本地 1.235000 時刻發(fā)送了一條消息,client 在它本地 1.234300 收到這條消息,直接計算的話延遲是 –700us。這個結(jié)果肯定是錯的,因為 server 和 client 不在一個時鐘域(這是數(shù)字電路中的概念),它們的時間直接相減無意義。如果我們已經(jīng)測量得到 server 比 client 快 850us,那么做用這個數(shù)據(jù)一次校正: -700+850 = 150us,這個結(jié)果就比較符合實際了。當然,在實際應(yīng)用中,clock offset 要經(jīng)過一個低通濾波才能使用,不然偶然性太大。

請讀者思考,為什么不能直接以 RTT/2 作為兩天機器之間收發(fā)消息的單程延遲?

這個程序在局域網(wǎng)中使用沒有問題,如果在廣域網(wǎng)上使用,而且 RTT 大于 200ms,那么受 Nagle 算法影響,測量結(jié)果是錯誤的(具體分析留作練習,這能測試對 Nagle 的理解),這時候我們需要設(shè)置 TCP_NODELAY 參數(shù),讓程序在廣域網(wǎng)上也能正常工作。

posted on 2011-04-20 09:26 陳碩 閱讀(3162) 評論(7)  編輯 收藏 引用 所屬分類: muduo

評論

# re: Muduo 網(wǎng)絡(luò)編程示例之五: 測量兩臺機器的網(wǎng)絡(luò)延遲 2011-04-20 10:03 regexp

為什么不讓兩臺機器都通過NTP校準時間后再測試latency呢?  回復  更多評論   

# re: Muduo 網(wǎng)絡(luò)編程示例之五: 測量兩臺機器的網(wǎng)絡(luò)延遲 2011-04-20 10:33 陳碩

@regexp
局域網(wǎng)內(nèi) NTP 校準的準確度是多少微秒?
局域網(wǎng)內(nèi)的 latency 是多少微秒?
這樣直接測試的結(jié)果有意義嗎?  回復  更多評論   

# re: Muduo 網(wǎng)絡(luò)編程示例之五: 測量兩臺機器的網(wǎng)絡(luò)延遲 2011-04-20 14:59 mj0011

笑了   回復  更多評論   

# re: Muduo 網(wǎng)絡(luò)編程示例之五: 測量兩臺機器的網(wǎng)絡(luò)延遲 2011-04-21 12:22 陳梓瀚(vczh)

延遲本來就不是一個固定的數(shù)字,得到這個數(shù)字大概只能做些預(yù)測之類的事情。  回復  更多評論   

# re: Muduo 網(wǎng)絡(luò)編程示例之五: 測量兩臺機器的網(wǎng)絡(luò)延遲 2011-04-21 12:59 飯中淹

耗時很少,這個描述不是很精確。
  回復  更多評論   

# re: Muduo 網(wǎng)絡(luò)編程示例之五: 測量兩臺機器的網(wǎng)絡(luò)延遲 2011-04-22 10:08 打擊裝B犯

樓主擅長把簡單的東西寫得很復雜  回復  更多評論   

# re: Muduo 網(wǎng)絡(luò)編程示例之五: 測量兩臺機器的網(wǎng)絡(luò)延遲[未登錄] 2011-04-27 00:57 欲三更

@打擊裝B犯
你說的很對哈哈

不過這個東西倒是也有用,可以計算合理TCP緩沖區(qū)大小。
  回復  更多評論   

<2011年4月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

導航

統(tǒng)計

常用鏈接

隨筆分類

隨筆檔案

相冊

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久免费精品日本久久中文字幕| 欧美视频福利| 一区二区三区在线免费观看| 久久激情综合网| 久久av老司机精品网站导航| 韩日精品在线| 亚洲国产91| 欧美国产激情二区三区| 日韩一级欧洲| 亚洲午夜黄色| 亚洲国产精品传媒在线观看| 亚洲精品日韩久久| 国产欧美欧美| 亚洲高清不卡av| 国产精品久久久久久久久借妻| 欧美在线精品免播放器视频| 看片网站欧美日韩| 亚洲欧美另类国产| 久久久久久久久伊人| 一区二区三区成人| 久久精品国产亚洲一区二区三区| 日韩一级免费| 久久精品国产一区二区电影| 日韩视频在线一区| 久久精品国产亚洲a| 亚洲一本大道在线| 久久综合给合| 欧美影院成年免费版| 欧美国产高清| 狂野欧美一区| 国产精品青草综合久久久久99 | 欧美电影免费观看网站| 国产精品久久久一区二区| 亚洲电影在线看| 国产一区在线免费观看| 亚洲午夜久久久久久久久电影网| 在线播放不卡| 欧美一区深夜视频| 亚洲欧美日韩精品| 欧美日韩在线播放一区| 亚洲第一黄色| 亚洲国产成人91精品| 午夜精品久久久久久久男人的天堂| 亚洲精品美女| 亚洲影院色在线观看免费| 麻豆精品国产91久久久久久| 久久久999成人| 国产视频一区在线| 亚洲一区在线播放| 性18欧美另类| 国产精品久久夜| 在线天堂一区av电影| 夜夜嗨av一区二区三区免费区| 狂野欧美激情性xxxx| 麻豆91精品91久久久的内涵| 国产午夜精品福利| 亚洲欧美日韩国产一区二区| 午夜精品在线| 国产日韩欧美二区| 午夜在线视频一区二区区别| 欧美亚洲免费在线| 麻豆精品91| 国产精品av免费在线观看| 在线观看国产欧美| 欧美在线播放高清精品| 久久久999成人| 海角社区69精品视频| 欧美亚洲免费电影| 久久夜色精品国产欧美乱| 国内精品美女在线观看| 久久久久久久久综合| 亚洲第一在线| 9i看片成人免费高清| 欧美性猛交视频| 亚洲女女做受ⅹxx高潮| 久久久久久婷| 亚洲国产女人aaa毛片在线| 欧美韩日一区| 亚洲视频一区| 久久一区二区视频| 最新国产の精品合集bt伙计| 亚洲精品一区二区网址| 亚洲男女毛片无遮挡| 国产亚洲欧美日韩在线一区| 久久综合色影院| 日韩亚洲欧美成人| 久久福利视频导航| 亚洲毛片播放| 国产精品一区二区在线观看网站 | 欧美www在线| 99精品国产99久久久久久福利| 性欧美办公室18xxxxhd| 亚洲第一区色| 国产精品久久久久久久第一福利| 欧美一进一出视频| 亚洲区一区二区三区| 欧美在线免费观看亚洲| 亚洲精品日本| 国产午夜精品久久久久久免费视| 蜜乳av另类精品一区二区| 在线亚洲观看| 亚洲第一黄网| 久久精品国产99国产精品| 亚洲靠逼com| 国模精品一区二区三区| 欧美日韩国产精品专区| 久久精品国产一区二区电影| 日韩视频一区二区在线观看 | 欧美在线|欧美| 亚洲精品中文字幕女同| 韩国成人精品a∨在线观看| 欧美日韩精品二区| 久久资源av| 欧美一级视频| 亚洲午夜黄色| 日韩午夜av在线| 亚洲电影免费在线| 久久视频一区| 午夜视频久久久| 亚洲视频自拍偷拍| 日韩亚洲国产精品| 亚洲欧洲一区二区三区在线观看| 国产一区二区三区在线观看免费| 国产精品xxxxx| 欧美天天综合网| 欧美日韩国产色视频| 欧美激情精品久久久久久久变态| 一区二区高清视频| 欧美日韩亚洲一区三区| 免费国产一区二区| 看片网站欧美日韩| 久久久久久久性| 久久精品亚洲一区| 久久精品国产v日韩v亚洲| 香蕉久久精品日日躁夜夜躁| 亚洲永久在线观看| 亚洲综合三区| 欧美一区成人| 久久精品视频在线看| 欧美中文字幕在线视频| 欧美一级午夜免费电影| 欧美在线观看一区二区| 欧美在线日韩精品| 久久精品国产久精国产一老狼| 久久精品男女| 另类av一区二区| 欧美国产日韩一区二区| 欧美日韩视频第一区| 国产精品久久久久久久久久直播| 国产精品美女久久久久久免费 | 国产精品欧美激情| 国产乱码精品一区二区三区不卡| 国产日韩欧美亚洲一区| 精品成人在线| 最近中文字幕日韩精品 | 一区二区精品国产| 亚洲桃花岛网站| 久久精品国产99国产精品澳门| 久久久精品动漫| 亚洲国产精品高清久久久| 亚洲日本精品国产第一区| 亚洲视频中文字幕| 久久精品亚洲一区二区| 欧美国产日韩a欧美在线观看| 欧美三级电影一区| 国语自产精品视频在线看8查询8| 在线日韩成人| 亚洲一区在线直播| 久久天天狠狠| 99精品国产一区二区青青牛奶| 亚洲伊人第一页| 欧美sm重口味系列视频在线观看| 欧美日韩一区三区四区| 黄色精品一区| 亚洲图中文字幕| 美日韩丰满少妇在线观看| 日韩小视频在线观看专区| 欧美主播一区二区三区| 欧美日韩精品| 亚洲丶国产丶欧美一区二区三区| 亚洲一卡二卡三卡四卡五卡| 久久综合色一综合色88| 99re热这里只有精品视频| 久久精品国产精品亚洲精品| 欧美午夜电影网| 亚洲国产视频一区二区| 欧美一级在线亚洲天堂| 亚洲国产精品久久久久婷婷884 | 国产亚洲精品久久久| 日韩午夜中文字幕| 麻豆久久久9性大片| 国产精品99久久不卡二区| 欧美不卡一区| 亚洲第一精品影视| 久久久久久久一区| 亚洲图片你懂的| 欧美日韩精品二区| 亚洲精品视频免费| 免费日本视频一区| 性欧美精品高清|