BBR (Bottleneck Bandwidth e RTT) è un nuovo algoritmo di controllo della congestione che Google ha contribuito allo stack TCP del kernel Linux. Con BBR attivo, un server Linux può ottenere un throughput significativamente aumentato e una latenza ridotta per le connessioni. Inoltre, è facile distribuire BBR perché questo algoritmo richiede solo aggiornamenti sul lato mittente, non sulla rete o sul lato destinatario.
In questo articolo, ti mostrerò come distribuire BBR su un'istanza del server KVM di Vultr CentOS 7.
Prerequisiti
- Un'istanza del server Vultr CentOS 7 x64.
- Un utente sudo .
Passaggio 1: aggiornare il kernel utilizzando il repository ELRepo RPM
Per utilizzare BBR, è necessario aggiornare il kernel della macchina CentOS 7 a 4.9.0. Puoi farlo facilmente usando il repository ELRepo RPM.
Prima dell'aggiornamento, puoi dare un'occhiata al kernel corrente:
uname -r
Questo comando dovrebbe generare una stringa simile a:
3.10.0-514.2.2.el7.x86_64
Come vedi, l'attuale kernel è 3.10.0.
Installa il repository ELRepo:
sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
Installa il kernel 4.9.0 usando il repository ELRepo:
sudo yum --enablerepo=elrepo-kernel install kernel-ml -y
Conferma il risultato:
rpm -qa | grep kernel
Se l'installazione ha esito positivo, dovresti vedere kernel-ml-4.9.0-1.el7.elrepo.x86_64nell'elenco di output:
kernel-ml-4.9.0-1.el7.elrepo.x86_64
kernel-3.10.0-514.el7.x86_64
kernel-tools-libs-3.10.0-514.2.2.el7.x86_64
kernel-tools-3.10.0-514.2.2.el7.x86_64
kernel-3.10.0-514.2.2.el7.x86_64
Ora, è necessario abilitare il kernel 4.9.0 impostando la voce di avvio predefinita di grub2.
Mostra tutte le voci nel menu grub2:
sudo egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
Il risultato dovrebbe essere simile a:
CentOS Linux 7 Rescue a0cbf86a6ef1416a8812657bb4f2b860 (4.9.0-1.el7.elrepo.x86_64)
CentOS Linux (4.9.0-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.2.2.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-bf94f46c6bd04792a6a42c91bae645f7) 7 (Core)
L'indicizzazione inizia alle 0. Ciò significa che il kernel 4.9.0 si trova in 1:
sudo grub2-set-default 1
Riavvia il sistema:
sudo shutdown -r now
Quando il server è di nuovo online, accedere nuovamente ed eseguire nuovamente il comando uname per confermare che si sta utilizzando il kernel corretto:
uname -r
Dovresti vedere il risultato come di seguito:
4.9.0-1.el7.elrepo.x86_64
Passaggio 2: abilitare BBR
Per abilitare l'algoritmo BBR, è necessario modificare la sysctlconfigurazione come segue:
echo 'net.core.default_qdisc=fq' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control=bbr' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Ora puoi utilizzare i seguenti comandi per confermare che BBR è abilitato:
sudo sysctl net.ipv4.tcp_available_congestion_control
L'output dovrebbe assomigliare a:
net.ipv4.tcp_available_congestion_control = bbr cubic reno
Successivamente, verifica con:
sudo sysctl -n net.ipv4.tcp_congestion_control
L'output dovrebbe essere:
bbr
Infine, controlla che il modulo del kernel sia stato caricato:
lsmod | grep bbr
L'output sarà simile a:
tcp_bbr 16384 0
Per testare il miglioramento delle prestazioni di rete di BBR, è possibile creare un file nella directory del server Web per il download, quindi testare la velocità di download da un browser Web sul computer desktop.
sudo yum install httpd -y
sudo systemctl start httpd.service
sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --reload
cd /var/www/html
sudo dd if=/dev/zero of=500mb.zip bs=1024k count=500
Infine, visita l'URL http://[your-server-IP]/500mb.zipda un browser Web sul tuo computer desktop, quindi valuta la velocità di download.
È tutto. Grazie per aver letto.