CDN GSLB Check


トップシェアCDN(Cloudflare、Akamai、Cloudfront)およびgoogle.com、Fastlyについて、GSLBの振る舞いをGoogle Public DNSを使いチェックします。

実行

チェック実行(結果の出力には1分程度かかります)

結果の読み方

  • Cloudflare
    • Anycastを利用しているため、IPアドレスは常に一定
    • サーバの場所はhttpレスポンスのcf_rayに含まれる
      • NRT:東京
      • KIX:大阪
  • Akamai
    • 国内10か所程度にサーバあり
    • DNSおよびHTTPからのサーバ特定は不可能
    • AS番号でリクエストナビゲーションされている?
    • Akamai国内GSLBメモ
  • Cloudfront
    • サーバの場所は、httpレスポンスのX-Amz-Cf-Popに含まれる
    • また、IPv4の場合、IPアドレスを逆引きした名前でサーバの場所(リージョン)が特定できる
      • NRT:東京
      • KIX:大阪(実際には使われていない?)
    • IPv6の場合、逆引き設定されていない
  • Google
    • IPアドレスを逆引きした名前でサーバの場所を特定可能
      • NRT:東京
      • KIX:大阪
  • Fastly
    • サーバの場所はhttpレスポンスのx-served-byに含まれる
      • TYO、HND:東京
      • ITM:大阪
    • IPv6は設定していません(無料プランでIPv6をオンにする方法が不明)

仕組み

Google public DNSに、DoH(DNS over HTTPS)を使いedns_client_subnet付きでdnsリクエストを投げ、戻ってきたIPアドレスと逆引きしたホスト名を表示しています。

  • Cloudflare: www.kosho.org
  • Akamai: www.akamai.com
  • Cloudfront: xxxx.cloudfront.net
  • Google: www.google.com
  • Fastly: kosho-test.global.ssl.fastly.net

また、Cloudflare、Cloudfront、Fastlyに関しては、Headリクエストを投げ、httpレスポンスに含まれる以下の変数を表示し、併せてheadの受信にかかった時間(ミリ秒)を表示しています:

  • Cloudflare: cf-ray
  • CloudFront: X-Amz-Cf-Pop
  • Fastly: x-served-by

実際の処理は以下のjavascriptを利用しています。

  • https://www.kosho.org/tools/js/gslb-check.js
  • 使用しているサブルーチンの概要は以下です:
    • get_ip(hostname); ホスト名からのIPアドレス引き
    • get_name(client_ip); ipアドレスから名前(逆引き)
    • get_asn(client_ip); ipアドレスからAS番号取得
    • check_latency(url);URL取得にかかった時間の取得(Web Performance APIを利用 し、URLリクエストにかかったdurationを表示) )

集計結果

公開予定

各種ツール

課題

  • Akamaiの非SSL用キャッシュサーバの収集
    • 非SSL配信で計測に使えるURLを見つける
  • GeoIPによる集計
    • 都市ベースのデータベースが必要です(お金ありません:協力してくれる人募集です)
  • マイナーCDNの収集
    • Limelight、Cdnetworks、国内CDN事業者
  • 高トラフィックOTT(Youtube、Netflix)
    • Netflix
      • 東京と大阪の2か所にサーバを配置?
      • URLの動的な生成によりリクエストナビゲーションを行っている(ユザーの位置により、アクセス先ホスト名が異なる)
        • 例: (oca = OpenConnect Appliance)
          • ipv4-c002-tyo001-ix.1.oca.nflxvideo.net
          • ipv4-c002-osa001-ix.1.oca.nflxvideo.net
      • そのため、リクエストナビゲーションの振る舞いを調査するには、ブラウザエミュレーターの実行が必要であり、 DNSやシンプルなHTTPリクエストでは困難。
    • Youtube
      • 動的なURLの生成によりリクエストナビゲーションを行っているように思われるが、詳細は不明(生成されたURLには地理情報を含まない)。 
  • AS番号の表示
    • whois.radb.netへのラッパスクリプトを自作。ただし、時間がかかる。
  • ネットワーク的なサーバの配置状況
    • クライアントからの経路
  • ナビゲーションの第3者検証
    • 第3者による配信サーバへのレイテンシ比較
    • 国外からの配信や遠いサーバへのリクエストナビゲーションのあぶり出し
  • Fastly
    • IPv6の有効化:無料でsslが効く配信ポイントの作成方法が不明。
  • HTTP Headリクエストのレイテンシ
    • 現在のルーチンは暫定版(たまに0になったりする。TCPオープンの時間も計測可能なはずだが、上手く値が取れない)。

参考文献


ディスカッションに参加

1件のコメント

コメントをどうぞ

メールアドレスが公開されることはありません。 が付いている欄は必須項目です