[Solaris] Flow control in Solaris 11 Express Network virtualization

Solaris 11 Expressの強力な新機能はNetwork Virtualizationですが、このエントリではその機能で実現できることの一つをご紹介します。Solaris 11のネットワーク機能強化ポイントは、Jeff Victorのエントリに詳しく記載されているので、そちらを参照してください。

Jeff Victor - Virtual Networks
http://blogs.sun.com/JeffV/category/Solaris+11

それでは、下図のようなネットワーク構成のホスト群を考えます。ホストは異なるSwitchに接続しており、帯域の要件が異なっています。
これらを統合するためには、まずネットワーク構成を保存し、統合システムはそれぞれサービスレベルに見合う帯域を保証する必要があります。たとえば、ファイル転送もしくはバックアップのネットワークトラフィックのせいでトランザクショナルなシステムのリクエスト−レスポンスが遅くなってほしくないのです。
Solaris 10では、複数のゾーンにある複数のサーバーを一つのSolarisインスタンスに統合することが容易に可能です。この機能により、統合された複数のアプリケーションのための物理ネットワークの必要性を考えなくてすみますが、ネットワークトポロジーを保持しQoSを管理することは容易ではありませんでした。
Solaris 11 Expressでは、仮想ネットワークを使って分離状態を維持し、異なるネットワークの性質を維持できます。下図のように、QoSを管理するためのフロー設定を確立できます。物理ネットワーク構成に一致する仮想ネットワーク構成を作成し、性能特性を管理できるのです。
物理ネットワークデバイスのフローを定義して、QoSを説明してみましょう。仮想ネットワーク上でも同様にできるでしょうが、もっと手慣れた方法で始めたいと考えています。
以下の例のように、”flow1”と名付けたフロー(最大2Mbps)を作成します。このフローはネットワークデバイス(リンクとも言う)e1000g1と関連付けられており、システムブートをまたいで永続的に使われず("-t")、特定のリモートホストに対してのみ有効、というものです。例えば、誰かのIPアドレスからの接続を絞りたい場合、1行目にフローを定義し、2行目に最大帯域を設定します。
さらに、2個目のフローを"http1"とし、ネットワークデバイスe1000g0と関連付けて、Webサーバーへの帯域をたった8Mbpsに絞ることにします。

# flowadm add-flow -t -l e1000g1 -a remote_ip=192.168.56.5 flow1
# flowadm set-flowprop -p maxbw=2M flow1
# flowadm add-flow -t -l e1000g0 -a transport=tcp,local_port=80 -p maxbw=8M http-1
# flowadm show-flow
FLOW        LINK      IPADDR                       PROTO  PORT  DSFLD
http-1      e1000g0   --                           tcp    80    --
flow1       e1000g1   RMT:192.168.56.5/32          --     --    --
# flowadm show-flowprop
FLOW         PROPERTY        VALUE          DEFAULT        POSSIBLE
http-1       maxbw               8          --             
http-1       priority        --             --
flow1        maxbw               2          --             2M 
flow1        priority        --             --             

最初のフロールールを説明するために、"kotsa_junk"というファイルを生成し、IPアドレス192.168.56.5のホストからscpで転送しました。flow1を追加する前は、およそ10秒かかっていました。

$ scp lotsa_junk 192.168.56.101:
lotsa_junk  100% |**********************************|   97 MB    00:11

追加後は
 
$ scp lotsa_junk 192.168.56.101:
lotsa_junk  100% |**********************************|   97 MB    03:57

実際に試してみるとわかりますが、前者の場合、アスタリスクの描画が速いのに、後者では非常に遅いのです。数秒もすると遅さにうんざりしてしまうので、"flowadm set-flowprop"を発行して帯域を拡大してしましょう…これが2番目のポイントで、フローの設定値は動的に変更できるのです。以下のスニペットで、"flowstat"コマンドを使ってトラフィックレートを見ると、帯域が拡大していることがわかります。

# flowstat -i 10 flow1
           FLOW    IPKTS   RBYTES    IERRS    OPKTS   OBYTES    OERRS
          flow1    7.45K   11.16M        0   16.58K    1.22M        0
          flow1    1.10K    1.66M        0      765   57.65K        0
          flow1    1.10K    1.66M        0      765   57.70K        0
          flow1    1.10K    1.66M        0      769   58.03K        0
 
[[[ 遅すぎるので、帯域を拡大します ]]]
 
# flowadm set-flowprop -p maxbw=9M flow1
# flowstat -i 10 flow1
           FLOW    IPKTS   RBYTES    IERRS    OPKTS   OBYTES    OERRS
          flow1   24.04K   36.18M        0   28.07K    2.08M        0
          flow1    6.97K   10.45M        0    3.88K  270.61K        0
          flow1    7.06K   10.61M        0    3.94K  273.89K        0
          flow1    6.89K   10.34M        0    3.88K  271.36K        0


まとめ
Network virtualization はSolaris 11 Expressで多くの重要な機能強化のうちの一つであり、その中でもフロー制御は重要な機能の一つです。単なるサーバー統合だけではなく、完全なネットワーク環境を統合し管理することで、コストとデータセンターの複雑性を削減できる強力な新機能を提供します。

原文はこちら。 http://blogs.sun.com/jsavit/entry/flow_control_in_solaris_11

0 件のコメント:

コメントを投稿