HTTP/2をNginxに実装しよう。HTTP/2 QUIC

ホーム > 業務日誌 > スタッフ別 > > HTTP/2をNginxに実装しよう。HTTP/2 QUIC
Nginx HTTP/2

@see https://www.nginx.com/blog/http2-r7/

今回は静かなブームになっている、HTTP/2QUICプロトコルについて記事としてまとめました。

HTTP/2のメリット

@see http://blog.redbox.ne.jp/http2-cdn.html

簡単に言うとサーバとクライアントとの通信が多重化され速くなります。多数のHTTPリクエストやレスポンスを1本にまとめて通信ができるようになります。他にはHPACK(RFC 7541)によるヘッダ圧縮など。

スマホ端末増加で生じてきたRTT遅延の軽減

  • TCPを用いるアプリケーションの最大スループットは,往復の遅延時間(RTT:Round Trip Time)の影響をうける
  • ウィンドウサイズが64Kバイトの場合のTCP最大スループットの理論値は以下のとおり

もっとも,ネットワークに接続しているPCが100台あって,それぞれが何らかの通信を行っている場合,100台のトータルでは100Mbpsの帯域幅を使い切ることが可能です。ですから,通常の用途であれば,遅延が大きな問題になることは,あまりないと思います。

しかし,遅延が問題になるケースもあります。代表的な例は,国際間通信とモバイル通信です。

@see ネットワークにかかるさまざまな遅延要素

RTT(Round Trip Time:往復遅延時間)

RTT 往復遅延時間

ただ実際のところ、ある程度の規模のサービスでないと体感できない程の差です。まだまだHTTP/2自体が開発途上のようで、大規模なサービスの通信でかなり差が出てくるのかなと。

対応ブラウザ

Chrome, Firefoxの最新版はHTTP/2に対応しています。

HTTP/2を利用するのに必要な設定はとても簡単!

また、HTTP/2に対応していないクライアントはHTTP/1.Xで通信が行うように柔軟に実装されているので、せっかくHTTPS通信を提供しているサーバであればHTTP/2を設定しないのは損な気がするけど、今実装していないからといって、大きいサービスでなければまだ実装を急がなくても良いもの。

※弊社公式サイトは今月中に別のサーバに移転する予定があるので、その時にでも(ㆁᴗㆁ✿)

NginxにHTTP/2を設定しよう

listen 443 ssl の隣にhttp2と記述するだけです。Nginxの1.95以降ならHTTP/2に対応しています。それ以前のバージョンの場合はソースからインストールしてバージョンをあげましょう。

HTTP/2の確認方法

HTTP/2 and SPDY indicator

Chromeのアドオンの『HTTP/2 and SPDY indicator』を使うのが簡単かなと。

HTTP/2 and SPDY indicator

【拡張機能を追加】をクリックでインストール出来ます。

HTTP/2の通信を見てみよう

HTTP/2

HTTP/2の対応のサイトにアクセスすると青く光ります。

QUIC

HTTP/2 quic プロトコル

QUICプロトコルも対応しているサイトだと緑になる模様です。

QUICプロトコル

QUICは機能的にはTCP+TLS+HTTP/2と同じであるが、QUICはUDPの上に実装される。QUICのTCP+TLS+HTTP/2より優れてる点は以下のとおりです

多重化

TCP上のTHTP/2は、TCPのヘッドオブラインブロッキングの影響を受けます。HTTP/2は多くのストリームをTCPの単一バイトストリーム上に構成するため、TCPセグメントの損失は再送が届くまで多くの後続の処理に影響を与えます。

QUICは多重処理のためにゼロから設計されているため、損失したパケットは、そのパケットが転送していたストリームにしか影響しません。それぞれのストリームにおいてフレームが届いた順に処理ができ、損失のないストリームはそのまま処理を進められます。

@see QUICの仕様(ドラフト)が公開されたので、概要を読む

Googleが開発しているプロトコルで、特長としてHTTP/2のフレームをTCPでなく、UDPパケットとして送受信をしていて、現在既に実装されています。

HTTP/2もQUICプロトコルは、システム側で当たり前に実装しているような、そんな静かなブームになりそうな気がします。サーバ証明書無償化サービスが出てきたりと、WEBのHTTPS化の波はばんばん感じていますが、お客様から『HTTP/2で』という注文はまだまだ先かなと見ています。

引き続き動向をチェックしたいと思います。
お疲れ様です。

優 ( エンジニア )

この記事を書いた人:優 ( エンジニア )

システムガーディアン爆弾処理班。アクセス負荷対策やNginxへの移行案件が多いこの頃。IBM SoftLayerやAWSなどクラウド案件も多くなってきました。

この記事に関してのお問い合わせ
御連絡・ご返信は原則2営業日以内を予定しております。
お急ぎの場合は、お手数ですが下記電話でもご対応をしております。

システムガーディアン株式会社
受付時間:平日9:00~18:00
受付担当:坪郷(つぼごう)・加藤
電話:03-6758-9166