搜尋此網誌

End-to-end Delay 端到端延時

目錄

Ping 的由來
Ping 的原理
  Round Trip Time (RTT)
  丟包率 (Packet Loss %)
  Time to Live (TTL)
End-to-end Delay
  Processing Delay
  Queuing Delay
  Transmission Delay
  Propagation Delay
  其他因素
Traceroute

任何靠 IT 行業討飯吃的人,無論在哪個範疇工作,都一定懂得 Ping 這個指令。差不多任何作業系統都具備 Ping 這支程式,用來做簡單的 Troubleshooting。但究竟 Ping 在背後幫我們做了些什麽呢?本篇文章就從 Ping 說起,並會涉及關於 End-to-end Delay 的理論。

Ping 的由來

眾所周知,Ping 的作用是發訊息給一個設備,要求對方回應,從而知道對方的狀態,是生是死?也可以憑它回應的速度和成功率來判斷網絡狀態。為什麽叫 Ping 呢?筆者翻查過一些資料,原來和另一門科學有著莫大關係 - 聲納探測!
所謂聲納探測就是潛艇在水底發出聲波,聲波遇到障礙物時反彈給潛艇,於是潛艇就可以知道障礙物的位置了,而這個方法就是叫 Ping。聲納探測的 Ping 操作上與網絡的 Ping 很類似,所以當初程式人員把這工具命名為 Ping 實在很有心思!
end-to-end delay

Ping 的原理

Ping 是一支程式,這程式所發出的 Packet 就叫做 ICMP Packet。ICMP 結構簡單,被包在 IP Packet 裡面,每個 ICMP 都包含一些簡單的訊息。
在 Ping 裡面常見的有:
訊息類形意思
Echo Request要求對方回應
Echo Reply對 Echo Request 作出回應
Destination Unreachable當一個 Echo Request 因為沒辦法到達目的地而被丟棄 (很大可能是 Route 出了問題,Router 找不到路徑),Router 就會回應這個訊息。
Time Exceeded當一個 Echo Request 因為 TTL 被扣減至 0 沒法到達目的地而被丟棄,Router 會回應這個訊息。關於 TTL 將於稍後說明。
ICMP 也提供一些 Troubleshoot 以外的功能,在此不詳述,有興趣的讀者可以 Google 一下 ICMP 這個 Protocol。
任何設備收到 ICMP 通常都會回應 (Echo Reply),除非故意做了設定不回應 (例如:Firewall 設定) 或者 ICMP Traffic 被 Access-List 之類擋下來。當發送方收到對方回應後就可以計算出一些結果。
[root@Linux ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=46 time=15.6 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=46 time=15.6 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=46 time=14.8 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=46 time=15.8 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=46 time=14.8 ms
^C
--- 8.8.8.8 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4713ms
rtt min/avg/max/mdev = 14.870/15.392/15.839/0.449 ms

Round Trip Time (RTT)

Ping 通常會做多次 Echo Request,並記錄每一個 Echo Request 與 Echo Reply 之間的時間差,這個時間差稱為 Round Trip Time (RTT),也可稱 End-to-end Delay。由於每一個 Ping 的 RTT 都不同,所以在 Ping 的 Result 中會看到最大(max)、最小(min)和平均(avg) RTT 等數據。

丟包率 (Packet Loss %)

Ping 不一定每次都成功,剛才說過,失敗的原因可能是 Destination Unreachable 或者 Time Exceeded。也可能是 Timeout,即過了一定時間也收不到對方回應。Packet Loss % 就是收不到回應的機率,極具參考價值,是反映網絡是否穩定的重要指標。

Time to Live (TTL)

Ping 程式送出 Packet 時會設定一個 TTL (Time to Live) 的數值,預設 TTL 值各作業系統有所不同。Packet 每次被 Route,Packet 裡面的 TTL 值都會被減 1。當 Packet 到達目的地時只要看看 Packet 的 TTL 就知道 Packet 經歷過多少個 Hop 才到達。如不幸 TTL 在傳送中途被扣減至 0 仍未到達目的地,則會被丟棄。而丟棄 Packet 的 Router 會回應 Time Exceeded,這樣發 ICMP 的一方就知道致死原因是 TTL 被減至 0 了。

End-to-end Delay

試想想,當你發 ICMP 給一台設備,該設備可能在世界的另一端,Packet 到達目的地需要一點時間,而這段時間名為 End-to-end Delay。在網絡的角度來看,構成 End-to-end Delay 的因素主要有以下 4 個:
end-to-end delay

Processing Delay

當一個 Packet 到達 Router 時,Router 需要進行運算去找出 Packet 應該被送到那裡,稱為 Routing Decision。而這運算的時間就是 Processing Delay。Processing Delay 的長短取決於 Router 的作業系統、運算速度甚至硬體結構等。

Queuing Delay

透過 Routing Decision,Router 決定了 Packet 的出口,就會把 Packet 移送到該 Interface,這時 Packet 會在 Interface 的 Output Queue 排隊,等待被處理,等待的時間就是 Queuing Delay 了。Queuing Delay 的長短則要看當時網絡的狀況,簡單來說就是前面有多少 Packet 在排隊。而且 Output queue 是有截龍機制的,即是說如果發現 queue buffer 即將爆滿,有些 Packet 會被丟棄,不一定是隊尾的 Packet 被丟棄,可以在整條 Queue 裡面抽一些 Packet 棄掉來騰出空間,這就是 Packet Drop。不過,這涉及 QoS 的設定,留待日後 QoS 環節再詳談。

Transmission Delay

有幸生存下來的 Packet 就會慢慢移至 Output Queue 的最前頭,Interface 會把 Packet 一個一個的送上傳送媒介 (就是網絡線啦)。但 Interface 不能瘋狂地把 Packet 送走,它只能按預先設定好的 Interface Speed (例如:100Mbps 或 1Gbps) 速度來送出。要慢慢送出去的原因是要考慮傳送媒介所能承受的 Bandwidth,大家可以參考以下兩篇文章:Optical Fiber Cable 和 Copper Twisted Network Cable。因此,如果要在 100Mbps Bandwidth 的 Interface 送出一個 1500 Bits 的 Packet,其 Transmission Delay 就是:
1500 bits / 100 Mbps = 15 ns

Propagation Delay

Packet 終於上路了,變成電子訊息或光訊息在傳送媒介上高速行走。有多高速?如果用 Copper Cable 的話,電子訊息在銅線上傳送速度約為 2 x 108 公尺,如果使用光纖線,光的速度為 3 x 108 公尺。假設用光纖線傳送 10 公里,Propagation Delay 為:
10 km / 3 x 108 ms-1 = 33.36 ns

其他因素

尚有其他因素會影響 End-to-end Delay。例如:

目標設備的系統狀況

Packet 到達目標設備,需要由作業系統與硬件資源(例如 CPU 和 RAM)處理,因此設備繁忙會減慢回應速度。

QoS (Quality of Service)

QoS 設定會影響 Packet 處理的優先次序。ICMP 的優先度通常被設定得較低,如當時有大量高優先度的 Packet 流動會增加 Ping 的回應時間,甚至因傳送中途被丟棄而導致 Packet Loss。

Collision

如果網絡中有網段仍在使用 Half Duplex 的話,Layer 2 Collision 也會增加 Ping 的回應時間。

Traceroute

利用 TTL 機制,有人發明了一個很有用的工具 - Traceroute (有些系統稱為 Trace 或 Tracert)。Traceroute 在發 ICMP 時故意把 TTL 設為 1,當 Packet 到達第一個 Hop 時,就會回應 Time Exceeded。收到回應後,Traceroute 又再發 TTL 為 2 的 ICMP,於是今次就收到來自第二個 Hop 的回應。如是者,Traceroute 把所有結果記下來,直至能收到 Echo Reply。這樣子,我們就可以知道 Packet 由出發直至到達目的地所走過的路了。
以下是一個 Traceroute Result。
[root@Server ~]# traceroute www.google.com.hk
traceroute to www.google.com.hk (216.58.200.3), 30 hops max, 60 byte Packets
 1  192.168.1.1 (192.168.1.1)  0.530 ms  0.488 ms  0.533 ms
 2  ㊙️㊙️㊙️㊙️㊙️.ctinets.com (㊙️㊙️㊙️㊙️㊙️)  6.992 ms  7.150 ms  7.308 ms
 3  10.239.9.89 (10.239.9.89)  2.632 ms  2.946 ms  3.100 ms
 4  014199254173.ctinets.com (14.199.254.173)  6.074 ms  6.140 ms  6.211 ms
 5  014136129214.ctinets.com (14.136.129.214)  5.189 ms  5.254 ms  5.334 ms
 6  72.14.196.85 (72.14.196.85)  5.480 ms  5.150 ms  5.130 ms
 7  108.170.241.97 (108.170.241.97)  5.698 ms  4.532 ms  4.139 ms
 8  209.85.240.9 (209.85.240.9)  3.518 ms 209.85.240.11 (209.85.240.11)  2.492 ms *
 9  hkg12s11-in-f3.1e100.net (216.58.200.3)  4.004 ms  4.061 ms  4.053 ms
出處 : http://www.jannet.hk/zh-Hant/post/end-to-end-delay/#sthash.lKuXZs2Y.dpuf

Read More →

使用Excel「下拉式選單」來輸入資料

  • 資料頁籤->資料驗證

  • 任意值欄位選擇'清單

  • 於來源打上清單的內容,並用逗點隔開





Read More →

讓Excel表格裡的數字資料視覺化


在我們以前的分享中,我們聊了許多表格的設計方法,但是常常有朋友反映這些方法雖然很棒,但是實作上卻不知道怎麼執行。比方說如何在表格上面標示特定值以上的數據、找出離群值,或是讓哪些項目合格/不合格一目了然。其實這些問題雖看似複雜,但實際上都可以在Excel上用很簡單的方法來解決。因此今天我們不聊簡報,來聊聊如何用Excel實現表格數據的資料視覺化!
舉例來說,假設圖中的表格是要比較某家公司的不同產品在美洲、歐洲與亞洲三個地區的銷售量相對佔比,必須強調出個別產品在哪個地區銷售相對強勁。這時表格該怎麼視覺化呢?有一個簡單的方法是,我們可以應用「資料橫條」的功能來凸顯所佔比例(有點類似百分比長條圖),如圖所示:
圖說明
其實要做出這樣的效果並不難。首先先把所有帶有比例的儲存格選取起來,接著點選【設定格式化條件】➡︎【資料橫條】之後,就可以有各式各樣的資料橫條樣式可供選擇。在此我們選擇黃色較為合適。
圖說明
完成 STEP 1 之後,表格中的數據便會依照其相對大小呈現資料橫條,此時便已完成大半工作了:
圖說明
然而有個小問題,就是在預設設定中,Excel會把最大數值的資料橫條比例呈現為100%填滿。因此雖然數值間的相對大小是對的,但是在直觀判斷百分比時卻會出錯。因此我們便需要進入 STEP 2 進一步調整。
在 STEP 2 中,再次點選【設定格式化條件】後,改成選擇【管理規則】➡︎【編輯規則】,便可以進入規則的編輯視窗。接著把最大值與最小值的類型與值分別改成「數值」「0%」與「數值」「100%」即可。
圖說明
完成 STEP 2 後,這張表格數據的資料視覺化基本上就已經完成囉!此時表格所有數據的資料橫條,其長短的比例已經與其真實的百分比相符。這樣子觀眾便可以更直觀的判斷出每一個產品在各地區銷售的相對佔比,也可更容易看出潛藏在背後的趨勢。
圖說明
最後如果我們要把表格移到PowerPoint上面的話,可以把相對應的表格區域複製起來。接著到PowerPoint中點選【貼上】選項,選擇如圖的【內嵌模式】或是【圖片模式】。
圖說明
選擇【內嵌模式】的好處是,在貼上表格之後,若表格內容有誤可很輕易地進行修改。但是缺點是若檔案用比較舊版的Office開啟,或是用隨身碟轉存的話,資料的連結就有可能會斷開,導致表格內容消失。選擇【圖片模式】的好處則是,檔案穩定不會有資料遺失的疑慮,但若表格內容有誤就無法修改。
總之這兩個方法各是有利有弊啦,就看各位自己可以接受的選擇囉!
完成貼上之後,簡報表格數據的資料視覺化就大功告成啦!是不是很簡單呢?

Read More →

rsnapshot 實作



下載套件 rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

安裝套件 yum install rsync rsnapshot -y

設定檔位於 /etc/rsnapshot.conf

1. 指定snapshot的目錄位置:
 snapshot_root  /.snapshots/         *後面選項自行設定路徑

2. snapshot保留的數目:
 interval   hourly   6
 interval   daily   7
 interval   weekly  4
 #interval  monthly 3

3. 想要備份的目錄:
 backup /home/    localhost/
 backup /etc/     localhost/
 backup /usr/local/    localhost/



1. 參數檔內的參數間必須是 tab 隔開, 如果輸入空白格就會出現錯誤
2. interval hourly 6 表示要保留 6 分差異備份, 如果在 /etc/crontab 內設定每兩小時執行一次 hourly, 2*6=12 那就保留 12 小時前的差異資料, 若要保留 24 小時前的資料, 要改成 12 (2*12=24)這樣才會有 12 次的備份資料


測試指令
#rsnapshot configtest
備份指令
#rsnapshot hourly  dayly 之類的

Read More →

Cacti pluging - syslog

vim /etc/rsyslog.conf下新增



$ModLoad ommysql.so

$template SyslogInsert,"INSERT INTO syslog_incoming(facility, priority, date, time, host, message) values (%syslogfacility%, %syslogpriority%, '%timereported:::date-mysql%', '%timereported:::date-mysql%', '%HOSTNAME%', '%msg%')", SQL
*.*             :ommysql:localhost,syslog,cacti,redhat;SyslogInsert
*.* /var/log/messages.log
$ModLoad imudp.so
$ModLoad imtcp.so
$UDPServerRun 514
$InputTCPServerRun 514
*.* localhost
*.*    >127.0.0.1,syslog,cacti,redhat;cacti_syslog


參考網址 : http://blog.happinesskt.idv.tw/2008/04/%E5%88%A9%E7%94%A8-cacti-%E6%9E%B6%E8%A8%AD-log-server/comment-page-1/#comment-2247

Read More →

Cacti 的備份與還原

Cacti 的備份與還原

OS: FreeBSD 7.0
Cacti 安裝方式: ports 安裝
Cacti 安裝目錄: /usr/local/share/cacti

Cacti 備份
Cacti 會將資料與設定存放在資料庫以及程式目錄下,因此備份時需備份這兩個地方。

一、程式目錄備份
用 tar 備份起來即可:

tar -zcf cacti_YYMMDD.tgz -C /usr/local/share cacti

YYMMDD 是備份日期,請自行輸入。

二、資料庫備份
用 mysqldump 匯出:

mysqldump -h host -u user -ppassword cacti > cacti_YYMMDD.sql

YYMMDD 是備份日期,請自行輸入。注意,-p 與 password 之間沒有空白。


Cacti 還原
如果是照前述的方式備份,還原時只需將程式目錄復原,資料庫重新匯入,最後再檢查 cron 是否設定無誤即可。

一、程式目錄還原

cd /usr/local/share
rm -rf cacti // 移除既有的 cacti 目錄
tar -zxvf cacti_YYMMDD.tgz


二、資料庫復原

mysql -h host -u user -ppassword cacti < cacti_YYMMDD.sql

匯入前請確定 MySQL 已經有 cacti 資料庫。

三、檢查 cron 設定
檢查 /etc/crontab 中是否有以下設定,若無,則自行加上:

*/5 * * * * cacti php /usr/local/share/cacti/poller.php > /dev/null 2>&1

Read More →

Cacti 0.8.8b (RedHat CentOS)


Read More →

 

Copyright © Jackie.Chen | Powered by Blogger | Template by 54BLOGGER | Fixed by Free Blogger Templates