開發測量互聯網速度的區域

開發測量互聯網速度的區域
所有 Habra 用戶下午好。

我經常閱讀 Habré 上關於 Malinka 上這個或那個功能的開發的文章。我決定在這裡分享我的工作。

我在一家提供有線電視和網路連線服務的公司工作。而且,正如此類公司所發生的那樣,我定期聽到有關關稅計劃與合約規定不一致的投訴。用戶要么抱怨“通過電纜”速度慢,要么抱怨某些服務的高 ping,有時抱怨一天中的某些時間完全沒有互聯網。通常,此類投訴最終會出現在一系列請求中,其中一名員工會帶著一台工作筆記型電腦前往“現場”,並在該筆記型電腦上進行所有測量。而且,事實證明,速度通常一切都很好。而低速其實是在手機上,透過Wi-Fi,在陽台上。嗯,或是類似的東西。

不幸的是,例如,在 21:37,當使用者的速度最低時,不可能存取該使用者。畢竟員工的工作時間是有限的。更換路由器沒有效果,因為...我們國家的 Wi-Fi 頻率範圍非常混亂。

對於記錄 — 白俄羅斯共和國的國家提供者強制開啟所有提供使用的裝置上的 Wi-Fi,並從每個裝置廣播 ByFly SSID。即使訂戶沒有網路服務,只有家庭電話。這樣做是為了增加銷量。您可以在資訊亭從該運營商購買一張卡,連接到任何名為 ByFly 的點,然後透過輸入卡中的資料來接收網路服務。鑑於城市幾乎 100% 的覆蓋範圍以及私營部門和農村地區的大量覆蓋,找到連接點不是問題。

對我們外部通訊管道的觀察表明,存在給定的頻寬儲備。即使在高峰時段,訂戶也不會消耗全部可用頻道。我們對此非常認真。使用不同的服務和不同的速度測量伺服器產生了有趣的結果。事實證明,並非所有服務都同樣有用......尤其是在晚上。而且你絕對不該相信他們。同一 Ookla 網路的許多業者沒有廣泛的溝通管道,或背對背工作。這意味著在晚上通常幾乎不可能得到誠實的結果。是的,高速公路是有罪的。例如,在日本測量速度的嘗試顯示出極其災難性的結果...

初步決定

開發測量互聯網速度的區域
此照片僅供說明之用。

部署了兩台速度控制伺服器。第一個是 自由速度, 第二 - OOKLA 的速度測試。比較了兩種服務的效能。畢竟,我們決定在 Ookla 停留,因為...高達 90% 的訂戶使用此服務。

接下來,為使用者和員工編寫了有關如何測量網路內部和外部速度的說明。那些。測試開始時,預設會測量網路內的速度。伺服器位於我們的頭端,Ookla 解決方案預設選擇最靠近訂閱者的伺服器。透過這種方式我們檢查我們自己的資料傳輸網路的運作情況。

要測量國內速度(我們為電信營運商提供單獨的網絡,該網路將國內所有營運商和主要資料中心聯合在一起),您需要選擇國內的供應商並進行第二次測量。我們根據經驗確定了幾台伺服器,這些伺服器在一天中的任何時間都可以提供或多或少穩定的結果,並按照說明中的建議列出了它們。

嗯,外部溝通管道也採取類似的行動。我們在速度測試伺服器上找到了擁有大通道的大型運營商,並將它們寫在推薦中(抱歉“Moskva - Rostelecom”和“Riga - Baltcom”,但我會推薦這些節點以獲得足夠的數量。就個人而言,我從這些伺服器在高峰時段)。

你問,為什麼會有這樣的困難?一切都很簡單。我們已經收到了一個相當方便的工具,在有能力的人手中,它使我們能夠確定我們的網路是否存在問題,共和網路是否存在問題,或者主幹網路是否存在問題。如果有人抱怨某些服務的下載速度慢,我們可以測量訂閱者頻道的速度,然後將其與他從該服務收到的速度進行比較。並且合理地表明我們誠實地分配了合約中規定的管道。我們也可以解釋造成這種速度差異的可能原因。

二次解決方案

晚上/白天速度下降的問題仍然懸而未決。如何不在訂戶家中做同樣的事情?拿一塊有千兆網路的廉價單闆卡,並用它製作一個所謂的探針。設備必須以給定的時間間隔沿著電纜進行速度測量。該解決方案應該是開源的,盡可能樸實無華,並具有方便的管理面板來查看測量結果。該設備應該盡可能便宜,以便可以輕鬆更換,並可以放心地留給訂戶 n 天。

履行

開發測量互聯網速度的區域

以BananaPI(型號M1)為基礎。這個選擇其實有兩個原因。

  1. 千兆埠。
  2. 它只是躺在床頭櫃上。

接下來決定使用python客戶端 SPEEDTEST-CLI 用於 Ookla 服務的 Speedtest 作為測量速度的後端。圖書館 蟒蛇平 測量 ping 速度。好吧,還有管理面板的 php。為了方便理解,我使用了 引導.

由於Raspberry的資源不靈活,所以採用了nginx+php-fpm+sqlite3的組合。我想放棄MySQL,因為它的笨重和冗餘。我預計會有一個關於 Iperf 的問題。由於無法在本地以外的其他方向使用,因此不得不放棄。

最初我遵循了這個網站上許多人的路線。修改了speedtest-cli客戶端。但後來想了想,他還是放棄了這個想法。我編寫了自己的工作程序,它使用原始客戶端的功能。

為了分析 ping,我只是寫了一個單獨的處理程序。我們從測量中取平均值。 ping 工具可以處理IP 位址和網域名稱。

我沒有實現異步工作。在這種情況下並不是特別需要。

用於評估結果的管理面板非常簡單。

開發測量互聯網速度的區域圖。 包含測試結果的主管理窗口

開發測量互聯網速度的區域圖。 測試設定

開發測量互聯網速度的區域
圖。 更新速度測試伺服器列表

就這樣。這個想法是在我的空閒時間裡實現的。現場測試尚未開始。但我們計劃在不久的將來推出原型。它既可以由那裡的提供者使用,也可以由提供者的客戶使用。沒有人打擾您全天候在家測量。您應該記住的唯一一件事是,如果您主動上網或下載某些內容,那麼測量值將低於真實值。因此,理想情況下,您需要將偵測器保留為網路上唯一的流量消耗者。

PS:請不要批評我的程式碼品質。我是自學的,沒有經驗。原始碼為 GitHub上。批評被接受。

來源: www.habr.com

添加評論