# BBR & BBRv2 安裝手冊 - ( 適用VMware workstation player Pro 17 - Ubuntu 22.04 ) ## **VM參數配備:** CPU : 4 Core RAM : 8 GB DISK : 40GB NET : NAT module OS : ubuntu-22.04.2-desktop-amd64 Linux Kernel : 5.19.0-50-generic VM Release : workstation player 17 pro Update Linux Kernel : 5.13.12 Congestion control : reno cubic BBR BBRv2 ## 1.安裝相依套件 #### 進入系統,先關掉惱人的螢幕保護程式   #### 安裝需要的套件 ``` sudo apt install build-essential libncurses5-dev git screen -y sudo apt build-dep linux -y ``` #### -------------------------------- 錯誤code解決方式 -------------------------------- #### 執行第二段code,出現了下圖的錯誤  #### 就跑這兩段code,就可以解決了。 ``` sudo sed -i 's/#deb-src/deb-src/g' /etc/apt/sources.list sudo sed -i 's/# deb-src/deb-src/g' /etc/apt/sources.list ``` #### 再跑一下更新。 ``` sudo apt update && sudo apt upgrade -y ``` #### ------------------------------ 錯誤code解決方式-END ----------------------------- #### 再重新跑一次剛剛沒跑成功的code ``` sudo apt build-dep linux -y ``` ## 2.下載BBRv2 #### 在安裝BBRv2的原始code下來,這邊示範以/home文件夾下進行 ###### 由於在~$test底下使用,所以要打下面那行指令,才可以進入 /home (test為此次範例的使用者名稱) ``` cd .. ```  #### 接著,在安裝BBRv2的原始code下來 ``` sudo git clone -o google-bbr -b v2alpha https://github.com/google/bbr.git ``` #### 出現有顯示三個done就代表下載完成  #### 再來進去原始code的資料夾裡面,並查看是否有檔案  ## 3.編譯kernel #### 接著執行下面的code,來開始編譯我們BBRv2的核心 (Kernel) ``` sudo make menuconfig ``` #### 就會看到這個介面,請用上下按鍵移動至圖上的位置,並用左右按鍵選取下方的控制按鍵,選取到<select>並按Enter進入  #### 進到這裡請選取 Networking optinos ---> 一樣選取到<select>並按Enter  #### 再往下找,找到 TCP: advanced congestion control,一樣選取到<select>並按Enter  #### 選取到BBR TCP 和 BBR2 TCP ,即是這次要安裝的BBR與BBRv2。 #### 在對著目標按"兩下"空白鍵,看到 " * " 星星字號即可。  #### 選取到 Default TCP congestion control (cubic),選取到<select>並按Enter。  #### 選取到這次要安裝的BBR2,並按Enter,即可選取成功 。  #### 接著請按右方向鍵至 < save > ,進入儲存畫面 。  #### 按Enter。  #### 看到右邊有 ( 100% ),代表OK了,在按Enter離開,就儲存完成了!!  #### 接著一直選取 < Exit > ,回到終端機 ( cmd )即可。  #### 回到這個畫面就代表已經離開編譯的config檔案裡了。  #### 再來輸入這兩行code,來關閉原始code的簽名檔。 ##### ( 這兩行打完是不會有反應的~ 請放心) ``` sudo scripts/config --disable MODULE_SIG sudo scripts/config --disable DEBUG_INFO ```  ## 4.製作更改kernel所需的檔案 ##### (小提醒:j1後面的數字是CPU的核心數,建議先用1核心就可以了) ``` sudo make -j1 deb-pkg ``` #### 接著你就會看到他噴出錯誤資訊哈哈哈哈哈  #### 這時候~ 請先去安裝vim,安裝時請按Y ``` sudo apt install vim ```  #### 再用vim編輯 .config 文件 ##### ( 小提醒 : 開啟時,請一定要在root模式開啟,不然會有問題。) ##### vim小教學 : i=輸入 ?=搜尋 : = 輸入指令 w = 儲存 q = 離開 ! = 強制執行 舉例:要強制儲存離開,要打 :wq! ``` vim .config ``` #### 修改CONFIG_SYSTEM_TRUSTED_KEYS ``` CONFIG_SYSTEM_TRUSTED_KEYS = "debian/canonical-certs.pem" 改成 CONFIG_SYSTEM_TRUSTED_KEYS = "" ``` #### 修改CONFIG_SYSTEM_REVOCATION_KEYS ``` CONFIG_SYSTEM_REVOCATION_KEYS = "debian/canonical-revoked-certs.pem" 改成 CONFIG_SYSTEM_REVOCATION_KEYS = "" ``` #### 修改前  #### 修改後  #### 在儲存返回即可~ #### 再重新編譯一次,這次我就會用4核心來跑~ (編譯過程中可能約三小時左右,請耐心等候) ``` sudo make -j4 deb-pkg ``` ##### 如果安裝過程中有看到這個,請一直按ENTER繼續下去即可。  #### 看到這個畫面,代表編譯完成。  #### 這時請回到 /home 來查看有沒有Kernel的安裝包。 ``` cd.. ls ``` #### 此時會看到帶有header & image檔名的檔案,就是要安裝的檔案。 ##### ( 小提醒 : image檔案就是kernel的核心 )  #### 接著打入這四行指令,來打開編譯完後副檔名deb的壓縮檔。 ##### ( 小提醒 : 由於bbrv2的kernel(內核)會升級,所以這檔案的版本也會不一樣,所以請依照編譯完出來的版本為主,來修改下面兩行有.deb副檔名的code 。 此範例為5.13.12版本。) ``` sudo dpkg -i linux-headers-5.13.12_5.13.12-1_amd64.deb sudo dpkg -i linux-image-5.13.12_5.13.12-1_amd64.deb sudo dpkg -l|grep linux-headers | awk '{print $2}' sudo dpkg -l|grep linux-image | awk '{print $2}' ``` #### 完成後就會長這樣~  ## 5.替換成 BBRv2 Kernel #### 執行下面兩行code,更改fq以及 congestion_control,來開啟BBRv2 ``` echo "net.core.default_qdisc = fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control = bbr2" >> /etc/sysctl.conf ``` #### 查看一下是否有更改成功 ##### ( 小提醒 : congestion_control那行沒成功是正常,要更換kernel才會啟動 ) ``` sysctl -p ```  #### 檢查一下電腦有幾個 image 檔案,並請記得舊的kernel版本。 ( 此範例版本為 linux-image-5.19.0-50-generic以及其他兩個版本) ``` dpkg --get-selections | grep linux-image ```  #### 順便確認現在使用的kernel版本 ``` uname -r ```  #### 可以先重新啟動~ ``` reboot ``` #### 重新開機完後,請刪除現在的kernel版本(如果不記得剛剛舊的版本,可以回去看上三行指令再看一次。[ 記得加sudo進入管理員權限 ] ) ``` sudo apt-get purge linux-image-5.19.0-50-generic ``` #### 請打 " Y "  #### 這畫面是問是否保留,請點選 < NO >  #### 刪除完後長這樣  #### 再確認一下是否還有別的kernel~ ( 向這邊就還有,請一併刪除~ ) ``` dpkg --get-selections | grep linux-image ```  #### 刪除完後只會有自己編譯完後的kernel ( 此範例版本為 linux-image-5.13.12 )  #### Kernel刪除完後,讓它安裝新的kernel,並重新啟動~ ``` update-grub reboot ```  #### 再次重新開機後,請打下面的code來查看BBRv2是否有安裝成功且開啟。 ``` sysctl net.ipv4.tcp_congestion_control ``` ``` sysctl net.ipv4.tcp_available_congestion_control ```  #### 有看到 bbr 和 bbr2。 #### 順便檢查kernel版本,確定是要安裝的版本~ ``` uname -r ```  #### 這樣就安裝成功拉~ ## 6. 開啟 ECN #### 輸入下面三行code,開啟ECN (請先進入root再輸入下面兩行) ``` sudo su ``` ``` echo "net.ipv4.tcp_ecn = 1" >> /etc/sysctl.conf echo "net.ipv4.tcp_ecn_fallback = 1" >> /etc/sysctl.conf ``` #### 查看ECN 狀態 ``` sysctl -p ``` #### 看到顯示這個就代表成功瞜~  ## 參考網址: 1. Google TCP BBR V2从编译到食用完全指南 - https://ca-design.xyz/open-bbrv2/ 2. 内核错误: No rule to make target ‘debian/canonical-certs.pem‘, needed by ‘certs/x509_certificate_list‘ - https://blog.csdn.net/qq_36393978/article/details/118157426 3. Ubuntu 移除舊版本 Linux 核心 - https://www.arthurtoday.com/2013/05/ubuntu-remove-all-older-linux-kernels.html
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up