#Linuxの#グーグルBBR TCP輻輳制御アルゴリズム開口

従来のTCP輻輳制御アルゴリズム、パケットロスのフィードバックに基づいたプロトコル。

基づいて、「フィードバック損失」プロトコルは、ネットワークパケット損失イベントに基づいて、ネットワークの輻輳判定を行う受動的輻輳制御メカニズム、です。ネットワーク負荷が高い場合であっても、限りがない渋滞損失として、契約はその伝送速度を削減するためのイニシアチブをとることはありません。

このプロトコルは、スループットを向上させる、残余帯域幅のネットワークを最大限に利用することができます。大幅にネットワーク帯域幅の利用率を向上させながらしかし、飽和近くネットワークにおけるパケットロスに基づいてフィードバックプロトコルに起因は、積極的な実証;反面、パケットロスフィードバックのためのベースの輻輳制御プロトコルは大きくなりますネットワーク帯域幅の使用率を向上させながら遠くないオフ渋滞損失イベントこと、これらの契約ので同時に手段でネットワークの利用率を向上させることも、間接的にネットワーク全体のジッタの増加、その結果、ネットワークのパケット損失率を高めます。

他に誰が損失につながっていますか?パケット損失が常に渋滞につながらない、パケットロスは、次のような多くの理由であってもよいです。

  • 世界で最も牛ファイアウォールGWFランダムパケット損失戦略
  • 減衰(信号劣化)に起因するマルチパスフェージング(マルチパスフェージング)に起因するネットワーク信号
  • 障害物、さらには損傷を受けたパケット(壊れているパケット)による損失(パケットドロップ)がによって拒否されます
  • 欠陥のあるネットワークハードウェア、ネットワークドライバソフトウェアの誤動作
  • 信号対雑音比(SNR)のへの信号の影響

GoogleのBBRの出現

GWF、データの損失を渡すときに私たちは自然にGWFのように、この人工的なランダムなパケット損失戦略を、ない、我々は、私は伝統をしたくない、送信の頻度を増やす、この時点での契約を再すぐにすべきであるとされる速度を低減する必要はありませんTCP輻輳制御アルゴリズム行きます。

したがって、遅延の判断に基づいて、CDG輻輳制御アルゴリズムに基づいて、パケットロスがなかった、遅延が増加輻輳説明は、データは、ルータのバッファに蓄積し始める。透過窓を減らし。しかしCDGアルゴリズムは、唯一のグローバルデバイスはCDGをパケット損失に基づくアルゴリズムと互換性が置かれていないが、これが不可能であるGoogleは幸せではないので、現在市場に出回っている機器が突然、CDGに切り替えることはできません、グーグル科学者たちは、アルゴリズムの名前は、新たな輻輳制御アルゴリズムであるBBR(ボトルネック帯域幅とRTT)、で、この問題を解決するために、遷移アルゴリズムを開発したBBR CDGは、輻輳などないパケットロスへの考え方と一致しています制御信号、CDGが、違いは、BBRと立方晶とリノとが共存することができます。

BBRスループットネットワークの使用前と後の比較:

BBRは、Linuxサーバが大幅にスループット向上とレイテンシの接続を減らすことができ、それは単にBBRは、ネットワークの伝送速度を加速することができ、BBRアルゴリズムで、使用するLinuxカーネルのTCPプロトコルスタックのために、Googleが開発しました。アルゴリズムは、ネットワークまたは受信者をサポートする必要がなく、送信者だけを必要とするためまた、BBRの展開は、また非常に簡単です。

BBRは、サーバインスタンスUnbuntu16.04に配備しました

1、サーバーのカーネルのバージョン4.9をアップグレードするには、すべての最初の

2、BBRを有効にします

BBRアルゴリズムを有効にするには、設定を変更する必要性のsysctl

最初の実行はlsmod | grepのBBRビューがBBRではありません#modprobeはtcp_bbr

#エコー "net.core.default_qdisc = FQ" >> /etc/sysctl.confの

#エコー "net.ipv4.tcp_congestion_control = BBR" >> /etc/sysctl.confの

#sysctlを-p

modprobeは::FATAL:カーネルが起動してmodprobeコマンドをサポートしていない場合、それは間違っているモジュールのtcp_bbrが見つかりません。

BBR#sysctlのnet.ipv4.tcp_available_congestion_controlの下で有効になっているかどうか確認してください

net.ipv4.tcp_available_congestion_control =リノ立方BBRのhybla

#sysctlの-n net.ipv4.tcp_congestion_control

BBR

#lsmodの| grepのBBR

20480 6 tcp_bbr

 

/etc/sysctl.confの構成情報は次のとおりです。


#
# /etc/sysctl.conf - Configuration file for setting system variables
# See /etc/sysctl.d/ for additional system variables.
# See sysctl.conf (5) for information.
#

#kernel.domainname = example.com

# Uncomment the following to stop low-level messages on console
#kernel.printk = 3 4 1 3

##############################################################3
# Functions previously found in netbase
#

# Uncomment the next two lines to enable Spoof protection (reverse-path filter)
# Turn on Source Address Verification in all interfaces to
# prevent some spoofing attacks
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1

# Uncomment the next line to enable TCP/IP SYN cookies
# See http://lwn.net/Articles/277146/
# Note: This may impact IPv6 TCP sessions too
#net.ipv4.tcp_syncookies=1

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

# Uncomment the next line to enable packet forwarding for IPv6
#  Enabling this option disables Stateless Address Autoconfiguration
#  based on Router Advertisements for this host
#net.ipv6.conf.all.forwarding=1


###################################################################
# Additional settings - these settings can improve the network
# security of the host and prevent against some network attacks
# including spoofing attacks and man in the middle attacks through
# redirection. Some network environments, however, require that these
# settings are disabled so review and enable them as needed.
#
# Do not accept ICMP redirects (prevent MITM attacks)
#net.ipv4.conf.all.accept_redirects = 0
#net.ipv6.conf.all.accept_redirects = 0
# _or_
# Accept ICMP redirects only for gateways listed in our default
# gateway list (enabled by default)
# net.ipv4.conf.all.secure_redirects = 1
#
# Do not send ICMP redirects (we are not a router)
#net.ipv4.conf.all.send_redirects = 0
#
# Do not accept IP source route packets (we are not a router)
#net.ipv4.conf.all.accept_source_route = 0
#net.ipv6.conf.all.accept_source_route = 0
#
# Log Martian Packets
#net.ipv4.conf.all.log_martians = 1
#
net.ipv4.neigh.default.base_reachable_time_ms = 600000
net.ipv4.neigh.default.mcast_solicit = 20
net.ipv4.neigh.default.retrans_time_ms = 250
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.eth0.rp_filter=0
net.ipv4.conf.eth1.rp_filter=0
net.ipv4.tcp_fastopen=3
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

 

参考ます。https://github.com/google/bbr

公開された170元の記事 ウォンの賞賛207 ビュー459万+

おすすめ

転載: blog.csdn.net/xiaoting451292510/article/details/105308764