1. 程式人生 > >在Ubuntu 16.04.3 LTS上玩轉QUIC開源專案proto-quic

在Ubuntu 16.04.3 LTS上玩轉QUIC開源專案proto-quic

說明
proto-quic專案是民間從chromium中抽取出的QUIC實現相關的程式碼。採用這個專案的程式碼,比從chromium原始碼編譯,要更快速和簡單。因為畢竟GFW限制,不是所有的人都可以翻牆去下載近10G的chromium專案原始碼。

下面的實操過程完全遵照github上的該專案的提示進行
https://github.com/google/proto-quic

另外參照chromium專案的官網頁面



下載原始碼庫
git clone https://github.com/google/proto-quic.git
cd proto-quic
export PROTO_QUIC_ROOT=`pwd`/src
export PATH=$PATH:`pwd`/depot_tools
./proto_quic_tools/sync.sh

sudo ./src/build/install-build-deps.sh
執行錯誤,但是似乎對結果執行沒有影響。

編譯生成QUIC的client,server和tests
cd src
gn gen out/Default
ninja -C out/Default quic_client quic_server net_unittests


測試中遇到如下問題:


解決方法:
vim proto-quic/src/out/Default/build.ninja
修改
ninja_required_version = 1.7.2 
將1.7.2修改為1.6.0,然後重新執行,大約編譯完成需要半小時以上
ninja -C out/Default quic_client quic_server net_unittests


準備測試資料

以www.example.org為例,重用上一次的測試資料,參見
http://blog.csdn.net/tao_627/article/details/79422273
mkdir -p ~/program_develop/quic_dev/quic-data
cd ~/program_develop/quic_dev/quic-data
wget -p --save-headers https://www.example.org
cd www.example.org
vim index.html

在header里加上X-Original-Url: https://www.example.org/
行末的^M使用Ctrl+V,Ctrl+M實現

生成證書

cd net/tools/quic/certs
./generate-certs.sh
cd -
將證書新增到瀏覽器中,在位址列中輸入
chrome://settings/search#ssl

選擇,高階(開啟摺疊)=>管理中心=>授權中心,點選匯入,將~/program_develop/proto-quic/src/net/tools/quic/certs/out/2048-sha256-root.pem匯入,最後勾選第一項,確定即可




下面開始測試
開啟QUIC server
./out/Default/quic_server \
--quic_response_cache_dir=/home/taoyx/program_develop/quic_dev/quic-data/www.example.org \
--certificate_file=net/tools/quic/certs/out/leaf_cert.pem \
--key_file=net/tools/quic/certs/out/leaf_cert.pkcs8 \
--port=6121 \
--v=1  


然後是QUIC Client
./out/Default/quic_client --host=127.0.0.1 --port=6121 https://www.example.org/ 


參考文獻
[1].https://github.com/google/proto-quic
[2].https://www.chromium.org/quic/playing-with-quic