Facebook 網絡模擬工具 ATC部署及使用


廢話引用:

Facebook此前開源了增強網絡流量控制工具 ATC,能利用WiFi網絡模擬各種移動網絡,測試智能手機和APP在不同國家地區和應用環境下的性能表現。ATC能夠模擬2G、2.5G(Edge)、3G和LTE4G網絡環境,測試工程師可以快速在各種不同模擬網絡環境中切換。

ATC能夠模擬真實網絡環境中的用戶體驗,Facebook開發ATC的目的是確保更多的人,尤其是發展中國家的用戶也能夠獲得最好的APP體驗。

此前曾有媒體報道扎克伯格要求Facebook員工使用低端智能手機,感受低收入和偏遠地區用戶的實際用戶的產品體驗。

為了獲得真實的網絡測試環境,Facebook一開始試圖在公司園區部署2G網絡,但是由於可運行開源軟件的2G基站難以采購而作罷。最后,Facebook轉而選擇通過WiFi網絡流量控制來模擬巴西、印度、尼日利亞和菲律賓等地的2G低速蜂窩網絡的數據通訊。

 

正文:

 

 

 

ATC有兩個最吸引人的特點:

  1. 在手機上通過Web界面就可以隨時切換不同的網絡環境。
  2. 多個手機可以連接到同一個WIFI下,相互之間模擬的網絡環境各不影響。

可以想象一下這個場景:一群程序猿和測試猴子熱火朝天的在辦公室忙活着,這時有一個叫ATC WiFi的熱點,任何人都可以將手機連接上去,通過Web界面隨意切換到各種不同的網絡環境下進行調試和測試……


 

網上的方法:

 

ATC只能運行在Linux上,所以搭建部署稍顯麻煩一些。此前網上有一些部署方式介紹了在虛擬機里如何搭建ATC環境。大致有以下幾個步驟:

  1. VMWare裝Ubuntu系統。
  2. 除非你的機器有無線網卡,不然找一個USB無線網卡,用來設置WIFI熱點。
  3. 部署ATC

Ubuntu中設置WiFi熱點功能,在系統自帶的工具里可以直接開啟。但是,由於是Ad-hoc模式,Android手機根本搜不到信號。所以必須設置AP模式才能讓Android手機搜到。參考:http://my.oschina.net/eechen/blog/227230,照着設置一般就OK了。


 

我的方法:

但是以上方法我嘗試過,在兩個電腦上均未能成功,所以我沒有采用虛擬機的方法。我采用的是裝雙系統的方法,大致有以下幾個步驟:

  1. window7基礎上裝雙系統 deepin-linux。
  2. deepin能夠很好的識別網卡,需要無線網卡支持AP模式,然后安裝kde-nm-connection-editor,設置無線wifi熱點。
  3. 部署ATC。

 

安裝deepin-linux 雙系統:

  系統下載:http://www.deepin.org/download.html

  制作U盤啟動盤:Deepin Boot Make        鏈接:http://pan.baidu.com/s/1pJVTvOR 密碼:a93q

  其他安裝步驟參照:http://jingyan.baidu.com/article/359911f557e77a57fe030613.html

  注意:linux安裝需要4個盤: /   /home  /boot  swap

  

查看網卡是否支持AP模式:

sudo apt-get install iw
sudo iw list

  

  

安裝kde-nm-connection-editor,設置無線wifi熱點:

  安裝:

sudo apt-get install plasma-nm

  配置-終端輸入:

sudo kde5-nm-connection-editor

  點擊 add, 選擇 Wireless (shared)。

  ssid 就是無線名字,比如我的是 tiankonguse。

  mode 選擇 Access Point。

  可以去 Wireless Security 設置一個密碼, WPA & WPA2 Personal 那一項。(密碼必須大於8位)

  

  然后點擊 ok 保存,在網絡列表處選擇新建的網絡,然后點擊連接,連接成功后就可以用手機搜索到WiFi進行連接。

  

 

部署ATC:

  先看看官方文檔  https://github.com/facebook/augmented-traffic-control  步驟都寫得比較清楚。

  1、安裝python 、pip

sudo apt-get install python-pip python-dev build-essential
sudo pip install --upgrade pip 

  2、通過pip安裝ATC需要的django組件

pip install atc_thrift atcd django-atc-api django-atc-demo-ui django-atc-profile-storage

  3、創建一個django工程以便使用ATC服務端app

django-admin startproject atcui
cd atcui

  4、進入atcui目錄,注意這里有兩層目錄,編輯settings.py,在INSTALLED_APPS里添加以下內容

    'django_static_jquery',
    'bootstrap_themes',
    'atc_api',
    'atc_demo_ui',
    'atc_profile_storage',
    'rest_framework',

  5、編輯urls.py,加入以下內容

from django.views.generic import RedirectView
admin.autodiscover()

urlpatterns = patterns(
    '',
    url(r'^admin/', include(admin.site.urls)),
    url(r'^api/v1/', include('atc_api.urls')),
    url(r'^api/v1/profiles/', include('atc_profile_storage.urls')),
    url(r'^$', RedirectView.as_view(url='/atc_demo_ui/', permanent=False)),
    url(r'^atc_demo_ui/', include('atc_demo_ui.urls')),
)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

  其中以上4\5兩個步驟可以用ATC下載源碼包中的/augmented-traffic-control-master/docker/atcui_tpl/ 里面的 settings.py、urls.py,直接覆蓋 atcui目錄中的文件就行。

  6、更新數據庫

python manage.py migrate

  7、啟動ATC服務

sudo atcd --atcd-lan wlan0 --atcd-wan eth0

  8、啟動Django工程

sudo python manage.py runserver 0.0.0.0:8080

  

  9、手機連上ATC的wifi,訪問http://192.168.0.1:8080    IP地址以實際WiFi地址為准

  就可以在手機上訪問到ATC網絡模擬頁面了,除了Android親兒子手機訪問正常,其他手機瀏覽器訪問UI有點不正常。能用就行了。

  網上的說法是:這可能是由於其他rom沒有谷歌服務框架導致的,嘗試在其他手機裝chrome卻無法啟動。

  

  但是這樣的頁面是沒有配置的,為了增加配置,我們還要繼續下面的操作。

 

  10、添加facebook工程中為我們配置的常見網絡的配置

git clone https://github.com/facebook/augmented-traffic-control.git

  下載完代碼后,進入工程文件,執行以下指令:

utils/restore-profiles.sh localhost:8080

  然后在手機上刷新頁面,就有對應的一些常用網絡模擬選項了。

  切換配置的方法: 只需點擊配置旁邊的“Select”按鈕,在點擊上方的“Update Shaping”按鈕即可

  

  在手機的界面里,你可以分別對網絡上行下行進行設置,主要設置的參數有:
  網絡帶寬(bandwidth)
  延遲(latency)
  丟包率(packet loss)
  錯包率(corrupted packets)
  亂序率(packets ordering)
  通過設置上面的參數,可以模擬出各種常用的網絡環境,比如:2G,3G,4G,WiFi等等,同時也可以模擬一些異常情況,比如信號很差,延遲很大,丟包率高的情況。

  

  實際網絡使用情況可以在手機上使用網絡檢測工具speedtest查看。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM