カテゴリー
2021年 Linux Riverbed SaaS Windows キャッシュ クラウド コンピューター 技術一般 自動化 証明書

モバイル PC で SaaS の快適アクセス

Riverbed TechnologyのClient Accelerator(旧SteelHead Mobile) という製品を触ってみました。

なぜ、この製品を触ってみたかというと、バージョン 6.2.2 にSSL Agent (SSL Simplification)という機能が搭載され、最適化動作にサーバ証明書の管理が不要となったためです。これは便利!と思い、早速、評価してみました。

SteelHead Appliance とは

業界をリードする WAN 最適化装置です。WAN越し、インターネット越しのアプリケーションアクセスのパフォーマンスを向上させます。WAN やインターネットに流れるデータを、特別なキャッシュの技術を使ってデータ削減します。

リバーベッドテクノロジー社初心者向け技術トレーニング資料より抜粋

Client Acceleratorとは

SteelHead アプライアンスをソフトウェアにした製品です。Windows や Mac のラップトップにインストールして使えます。

リバーベッドテクノロジー社初心者向け技術トレーニング資料より抜粋

なぜ、SSL Agentが良いのか?

インターネットの通信の 85%以上が SSL 通信(HTTPS)であると言われています。つまり、暗号化されているのです。

こういった暗号化された通信を制御する製品では、通信を一旦終端し、暗号化を解く必要があります。

この暗号化には、サーバ証明書を使用しています。

企業内にホスティングされている Web サーバーであれば、そのサーバーの管理者に依頼すれば、サーバー証明書を入手することは可能です。

ですが、これがインターネット上のサーバーだったら、どうでしょうか。誰が管理者か分からないし、管理者が仮に分かっても、サーバ証明書は通常得られません。

インターネット上サーバーの証明書は、管理者に依頼しなくても、サーバ証明書の内容は入手することは可能です。ですが、いつそれらの証明書の内容が変更になるかは分からないという点は変わりません。その内容に合わせて代理証明書を作っても、元の証明書の内容が変更になるたびに代理証明書の方も変更する必要があり、管理が大変です。

WAN 最適化装置も、クライアント PC と Web サーバーの間の通信に入り込んで動作しますので、暗号化された通信は一度復号化する必要があります。そこに、サーバ証明書を使っています。

企業内の Web サーバーであれば、管理者に依頼してサーバー証明書を入手し、その証明書を WAN 最適化装置にもインストールしれば良いので対応できます。

しかし、これが Microsoft 365(Office 365)へのアクセスだったらどうでしょうか。マイクロソフトからサーバー証明書はもらえません。

復号化ができませんので、最適化動作(特に問題になるのはデータ削減)ができなくなります。

仮に、先ほどの方法で内容を把握し、自分で代理証明書を作成することは可能ですが、その内容が変更になったら、証明書がないのと同じです。マイクロソフトは、M365 の証明書をかなり頻繁に変更しています。

SSL Agent の登場

こういった問題を解決できるのが、SSL Agent です。この機能を使えば、サーバ証明書のインストールは不要になります。どうやったら証明書が入手できるのかとか、いつ変更になるのかを気にする必要はもうありません。

動作確認の構成

テスト構成はこんな感じです。

Client Accelerator と SteelHead の間に WAN シミュレーターを入れ、ここで疑似インターネットを作っています。WAN シミュレーターで、帯域幅や遅延、パケットロスが設定できます。今回のテストでは、100ミリ秒の遅延を入れています。

WAN シミュレーターには、WANemを使っています。

そして、アクセス先は、実際の M365 を使っています。私が個人で契約して使っているものですので、東京リージョンになります。M365 へのアクセスは、実インターネットの通信です。

データ削減の効果

OneDrive に保存してある 68MB のパワーポイントのドキュメントをダウンロードしてみました。

以下のグラフの一番上のコネクションが、OneDrive からのダウンロードのコネクションです。転送データの内、41% のデータが重複排除され削減されています。通信の宛先ポート番号がTCP/443(HTTPS)になってますね。サーバ証明書なしで、データ削減ができています。

キャッシュの無い一回目のデータ転送でも半分弱のデータが削減されてます。すごい効果ですね。40秒ほどで、ダウンロードが完了しています。

今度は、二回目の転送です。以下のグラフの上から2番目のコネクションが、OneDrive からのダウンロードのコネクションです。

同じパワーポイントのファイルを再度転送しています。91% のデータ削減です。もうほとんど、疑似インターネット上にはデータが流れてません。流れるデータの量が減れば、とうぜん体感のスピードだって上がりますよね。数秒でダウンロードは完了しています。

同じファイルなんだからデータが減って当たり前、という考え方もあります。

ですが、Riverbed 社のキャッシュは、ファイルキャッシュではなく、バイトキャッシュを使っています。

約100バイトの大きさにデータを細切れにし、その中の「0」と「1」の配列が同じであれば、1つにするという方式で、データ削減を行っています。

リバーベッドテクノロジー社初心者向け技術トレーニング資料より抜粋

つまり、この「0」 と「1」の配列が同じであれば良いだけで、パワーポイントで得たキャッシュで、エクセルでも PDF でも、データ削減が出来ちゃうという訳です。すごい技術を持ってます。

もう一つのテスト構成

Web プロキシーサーバーというものは、企業でよく使われています。これがあった場合でも、この WAN 最適化の仕組みは動くのだろうか?という疑問が湧きましたので、追加で動作も見てみました。

Web プロキシーサーバーには、 Unveil Technology 社のOpen Squidbox を使ってます。Linux でお馴染みの Squid なんですが、仮想アプライアンスみたいになってて、手軽に使えます。GUI の画面からグラフを見られて便利です。

Web プロキシー経由での、一回目のデータダウンロードです。以下のグラフの上から2番目のコネクションです。今度は、宛先ポート番号がTCP/3128(Squid)になってますね。

一回目のキャッシュなしのダウンロードで、44%のデータ削減が実現しています。

今度は二回目のダウンロードです。以下のグラフの下から4番目のコネクションです。94%のデータ削減が実現しています。Web プロキシーを経由しても、データ削減の効果は得られていますし、変わらない結果が得られました。

評価のまとめ

  • キャッシュを使ってのデータ削減と差分データ転送の効果は高い。
  • 運用すればするほどキャッシュは溜まるので、一回目のデータ転送時のデータ削減効果は高くなることが期待できる。
  • SaaS アプリケーションだけでなく、Yahoo や Facebook など、インターネット上にある Web サーバーは何でも最適化対象にできる。
  • ただし、ある程度の転送データ量があるコネクション(OneDrive や SharePoint のアクセス)を対象にしないと、投資効果が合わない。
  • ダイレクトアクセスでも、Web プロキシー経由のアクセスでも、通信を最適化することができる。

私のオーストラリアの某お客様が、シンガポールのデータセンターにある Web プロキシーを経由して Microsoft 365にアクセスしているが遅いといっていますので、早速、この SSL Agent を提案してみたいと思います!

SSL Agent の設定

最後に、設定内容もメモとして記載しておきます。

SteelHead アプライアンス側設定

SSL Main Setting のところで、SSL Optimization を有効にします。

SSL Advanced Settings のところで、TLS Blade を有効にします。

Client Accelerator Controller の自己証明書をコピーし、SteelHead アプライアンスのMobile Trust のリストに追加します。

これは、Client Accelerator ソフトウェアとSteelHead アプライアンス間(最適化通信のコネクション)を暗号化するためです。

Client Accelerator Controller 側のポリシーの設定

Port Label で、「Web」というラベルを作成し、TCP/80, 443, 3128を対象としています。Port Label とは、複数のポート番号をグループ化して名前で管理できるようにするものです。

In-Path ルールで、Webでまとめたポート番号向けの通信を全て最適化対象とするというルールを設定します。

今回使用しているルールの内容です。

Peering 証明書のところに、SteelHeadアプライアンスの自己証明書をコピーして追加します。Client Accelerator ソフトウェアとSteelHeadアプライアンス間の最適化通信を暗号化するためです。

SSL 設定のところで、SSL Optimization を有効にします。

その設定ページの下の方にあるTLS Optimization を有効にします。

Client Accelerator の評価版は、こちらから申請して試すことが可能です。


にほんブログ村

関連する記事:

最近の記事:

カテゴリー
2020年 CDN Microsoft Riverbed WebRTC キャッシュ コンピューター 技術一般

WebRTC とは -メディア通信の最適化


にほんブログ村

先日、Kollective Technology の ECDN というコンテンツ配信製品を、社内で検討する機会がありました。

Microsoft Teams、Stream、Windows Update を使用した場合、使用する人数が増えるほど、WAN 回線の帯域幅を消費してしまい、回線が逼迫してしまうケースがあります。

ECDNがない場合の通信

Kollective 社の ECDN 製品を使用すると、WAN回線越しに流れてくるデータストリームを少なく(ケースにより1つにする)することができます。

データストリームを受けたブラウザーがそのデータをキャッシュし、同じ場所にいる別の端末に共有します。これにより、WAN 回線を効率的に使用することができる様になります。

ECDNがない場合の通信

この製品で、WebRTC という技術が使われています。

WebRTC は名前が聞いたことはあったのですが、詳細までは知らなかったので、いい機会なので調べてみました。

WebRTC とは?

WebRTC は、Web Real Time Communications の略で、プラグインを追加することなく、ブラウザ上で簡単にリアルタイムコミュニケーションを可能にします。2011年頃に Google によって提唱され、そこから少しずつ技術開発されてます。

HTML5 で新しく策定された API の規格で、P2P通信を利用した端末間の相互接続も行うことができ、P2P 通信によるビデオチャットやファイル共有を、Web ブラウザだけで実現することができます。

Web ブラウザーを使って、簡単に使うことができるのですが、使用できるブラウザーは限定されている様です。その理由は、ブラウザーが WebRTC をサポートしている必要があるからです。

WebRTC 対応ブラウザー

  • Chrome
  • Firefox
  • Opera
  • Edge
  • Safari

IE はサポートしてないんですね。今でも IE を使ってる企業はまだまだ多いですが、もう古いブラウザーなので、Edge を使えってことでしょう。

ちなみに、Kollective社 の製品では、以下のブラウザーとプラットフォームをサポートしています。

対応ブラウザー

  • Edge
  • Chrome
  • Firefox
  • Safari

対応モバイル端末

  • Android
  • iPad

iPhone は、WebRTC をサポートしてないらしいです。なお、対応ブラウザーが使えない場合、Teams アプリを使用すれば、WebRTC が使えるそうです。

対応 OS対応ブラウザー
Windows / MacChrome 26以降
Firefox 22以降
Opera 15以降
AndroidChrome 29以降
iOS開発中

WebRTC で実現できること

WebRTC を実装することで、実現することのできる機能は、以下のものがあります。

  • 端末上のカメラやマイクからのデータの取り込み

Media Capture and Stream

  • ストリームデータの P2P 通信

WebRTC 1.0: Real-time Communication Between Browsers

  • テキストデータやバイナリデータの P2P 通信

WebRTC 1.0: Real-time Communication Between Browsers

WebRTC では、クライアントがサーバにデータの要求をするクライアント/サーバモデルでななく、複数端末間での通信です。

つまり、それぞれのPCがデータを保持し、他のPCに対して直接、データの送信・要求を行うPeer to Peerの形をとります。

また、通信プロトコルには基本的に「TCP/IP」の代わりに、「UDP/IP」を用いて通信のリアルタイム性を担保しているのも特徴です。状況によってプロトコルを使い分けるみたいです。

Kollective社の製品では、上記の「WebRTC 1.0: Real-time Communication Between Browsers」を使用しているのですね。

P2P 通信に必要な情報

P2P 通信を行うためには、ブラウザ間で共有しなければならない情報があります。

P2P 通信を開始するには接続先のグローバルアドレス情報が必要になるので、NAT traversal として、STUN(Simple Traversal of UDP through NATs)やICE(Interactive Connectivity Establishment)といった技術がサポートされており、NAT が割り当てたグローバル IP アドレスとポート番号を取得できるようになっています。

Session Description Protocol (SDP)

  • 通信に必要な各ブラウザの情報を示す文字列 (セッションの属性、メディアの形式、IP アドレス、ポート番号、通信帯域など)のことです。
  • 片方の PC が他方 PC に対し SDP を Offer し、それに対して Answer SDP を返すという形で通信を行います。

Interactive Connectivity Establishment (ICE)

  • 通信相手のブラウザに到達する通信経路に関する情報を提供します。
  • この通信経路を探す際、環境によっては、NAT やファイアウォールなどで直接的に PC 同士の情報を渡せないこともあり得ます。
  • そのため、STUN サーバや TURN サーバというものを用いて通信経路を検知し、それらの経路候補を ICE Candidate として、ブラウザ間で共有する必要があります。

WebRTC の JavaScript API

WebRTC は、以下の 3つの JavaScript API を提供しています。

getUserMedia

  • Web ブラウザから端末に取り付けられているカメラやマイクにアクセス
  • ストリームデータを取得する

RTCPeerConnection

  • マルチメディアセッションを確立
  • UDP/IP を使用して Web ブラウザ同士で直接ストリームデータを送受信
  • コーデック(オーディオおよびビデオの符号化および復号化)、暗号化、帯域管理(帯域幅の変化にストリームを適応させるなど)の各機能も提供

RTCDataChannel

  • テキストデータやバイナリデータの P2P によるデータ通信のための API
  • ファイル転送やテキストチャットなどを実現
  • UDP/IP を使用しているので、TCP/IP とは異なりパケット再送は行わない

メディア系の技術は名前を知っている程度で、触れる機会がなかったのですが、今回は良いチャンスです。これを機会に学んでみようと思います。

追記:

リバーベッドテクノロジーの SaaS Accelerator という製品が、この WebRTC をサポートしたとの話を聞きました。今度、機会のある時に試してみたいと思います。

関連する記事:

最近の記事:

カテゴリー
2020年 AWS AWS Solutions Architect - Associate CDN キャッシュ クラウド コンピューター 技術一般 認定資格

AWS を学ぶ(18)CloudFront を使ってみる

この記事は、日本語で作成し、機械翻訳で外国語に訳しています。

AWS を学んでみる(8)CloudFront ってなんだろうで、CloudFront について調べてみましたが、今回は、CloudFront を実際に使ってみました。

今回の動作確認では、以下のようなイメージで、構成を作ってみます。

(1) の部分が、Web サーバーと ELB、(2) の部分が CloudFront です。

CloudFront を使ってみる

事前準備

まず、(1) の部分を作っていきます。

VPC やサブネットについては、AWS を学ぶ(1)VPC を理解するAWS を学ぶ(2)VPC を作ってみようで説明しています。

EC2 でのインスタンスの起動については、AWS を学ぶ(4)EC2 を理解するAWS を学ぶ(6)EC2 を使ってみようで説明しています。

EC2 上に、Web サーバーを起動させます。インターネットからアクセスできるように、パブリックサブネットに起動させて下さい。

Web サーバーのグローバルアドレスを確認し、ブラウザーに入力して下さい。

Web サーバーのコンテンツが表示されましたね。

次に、ELB を起動させます。

ELB の起動と設定については、AWS を学んでみる(9)ELB を使ってみようで説明しています。

今回は ALB を使ってみます。ターゲットを、ES2 上の Web サーバーで指定しておきます。

ターゲットのステータスが Healthy になりました。

ELB のDNS 名を確認し、それをブラウザーに入力してアクセスします。

Web サーバーのコンテンツが表示されましたね。ELB 経由で Web サーバーへのアクセスも成功です。

CloudFront の起動と設定

AWS 管理コンソールの検索テキストボックスに CloudFront と入力し、CloudFront を選択します。

CloudFront の管理コンソールが表示されます。

「Create Distribution」をクリックします。

今回試したいのは、Web サーバーのコンテンツキャッシュです。上の「Web」の方の「Get Started」をクリックします。

Create Distribution の画面が表示されます。

Origin Settings の中の「Origin Distribution Name」のテキストボックスをクリックし、プルダウンメニューを表示させます。

その中に、先ほどの事前準備で作成した ELB が表示されていますので、それを選択します。

これ以外の設定は、今回は特に変更しません。

画面下部の「Create Distribution」をクリックします。

CloudFront Distributions の画面に戻ります。

Statusのところが、「In Progress」になっているはずです。導入が完了するまでに、10 分くらいかかります。

Status が「Deployed」になりました。これで CloudFront の導入が完了です。

導入が完了した Distribution の「ID」をクリックして、詳細を表示させます。

「Domain Name」の箇所に表示されているのが、CloudFront を使う時のアクセス先になります。

CloudFront のドメイン名を、ブラウザーに入力してアクセスしてみます。

Web サーバーやELB経由の時と同じコンテンツが表示されましたね。

この教材を使って勉強してます。

AWS認定資格試験テキスト AWS認定ソリューションアーキテクト-アソシエイト

AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト【電子書籍】[ 佐々木 拓郎 ]価格:2,618円
(2020/8/30 16:09時点)
感想(0件)