DPDKを使用したOpen vSwitchの速度制限の構成と使用

この記事では、 DPDKを使用したOpen vSwitch(OVS)Data Plane Development Kit(DPDK)インターフェイスの受信トラフィック速度制限を構成する方法について説明します。 この記事は、Open vSwitchの速度制限を使用して、展開されたOpen vSwitchサーバーのDPDKポートの受信速度を保証できるネットワーク管理者を対象としています。 この記事は、 DPDKでのOpen vSwitch *のサービス品質の構成と使用の記事を補完します。これは、速度制限とサービス品質が、構成と操作に固有のAPIコマンドを使用して受信パスと送信パスでそれぞれ動作するためです。







ご注意 この記事の執筆時点では、DPDKのOVS速度制限は、 メインのOVSブランチでのみ利用可能でした。 メインのOVSブランチのZIPアーカイブをここからダウンロードします DPDKでOVSをインストールする手順は、 ここで説明されています



DPDKを使用したOVSの速度制限



速度制限を設定する前に、サービス品質とvSwitchのトラフィックとの相互作用との違いについて話し合う必要があります。



サービス品質は、発信トラフィック、つまりOVSポートから送信されるデータに適用されます。 一方、速度制限は、着信トラフィック、つまりvSwitchポートが受信したデータにのみ適用されます。 速度制限は、インバウンドトラフィックリミッターを使用して、DPDKを使用したOVSで実装されます(DPVSを使用したOVSでサポートされるサービス品質のアウトバウンドトラフィックリミッターと同様)。 着信トラフィックリミッターは、インターフェイス(マーカーバッファーアルゴリズム)で特定の受信速度を超えると、単にパケットをドロップし始めます。 物理デバイスの場合、インバウンドトラフィックリミッターは、ネットワークアダプターを介してシステムの外部から着信するトラフィックを破棄します。 仮想インターフェイス、つまりvhost-user DPDKポートの場合、リミッターはゲストマシンからvSwitchに送信されたトラフィックを破棄します。 実際、ゲストマシンからこのポートへのデータ転送速度は制限されています。 これを図に示します。 1。





1. vhost-userポートの着信トラフィックを制限することによる速度制限



テスト環境





2.テスト環境



ご注意 この環境で使用されるホストコンピューターと仮想マシン(VM)の両方が、Linuxカーネル* 4.4.6を備えた64ビットバージョンのFedora * 23サーバーを実行しています。 各VMには、vhost-user DPDKインターフェイスを介してvSwitchブリッジに接続された仮想ネットワークアダプターがあります。 仮想ネットワークアダプターは、仮想マシンのオペレーティングシステムでLinuxカーネルデバイス(たとえば、ens0)として表示されます。 仮想マシン間に接続があることを確認します(たとえば、VM1からVM2にエコー要求を送信します)。



速度制限の構成とテスト



セットアップをテストするには、両方のVMにiPerf *をインストールします 。 rpmバージョンがゲストOSバージョンと一致していることを確認してください。 この場合、Fedoraの6564ビットバージョンを使用します。 Fedora 23がFedora 23のdnfなどのパッケージマネージャーを使用する場合、次のコマンドを使用してiPerfを自動的にインストールできます。



dnf install iperf
      
      





設定を確認するには、iPerfが両方の仮想マシンにインストールされていることを確認してください。 iPerfは、クライアントモードとサーバーモードで実行できます。 この例では、VM1でiPerfクライアントを起動し、VM2でiPerfサーバーを起動します。



着信トラフィックのリミッターなしでテスト



VM2で、次のコマンドを実行して、ポート8080でUDPモードでiPerfサーバーをデプロイします。



 iperf –s –u –p 8080
      
      





VM1で、次のコマンドを実行して、ポート8080で帯域幅100 MbpsのUDPモードでiPerfクライアントを展開します。



 iperf -c 7.7.7.2 -u -p 8080 -b 100m
      
      





この場合、VM1はUDP経由で100 Mbpsの速度でVM2にデータを送信しようとします。 10秒後、一連の値が表示されます。 制限速度を設定する前に、これらのコマンドを実行してください。 図に示すような結果が表示されます。 3.サーバーレポートでは、[帯域幅]列に注目しています。





3.着信トラフィックの制限なしで出力



図に示すデータ。 3、仮想マシン間の接続の帯域幅が100 Mbpsであることを示します。



構成された着信トラフィックリミッターでテストする



次のコマンドを使用して、着信トラフィックリミッターvhost-user1を使用して速度制限を10 Mbpsに設定します。



 ovs-vsctl set interface vhost-user1 ingress_policing_rate=10000 ingress_policing_burst=1000
      
      





以下にオプションを説明します。





iPerf UDP帯域幅テストを再度実行すると、結果は図5に示す結果と同様になります。 4。





4.着信トラフィックが制限された出力



トラフィックリミッターが設定されている場合、利用可能な帯域幅は100 Mbit / sではなく9.59 Mbit / sであることに注意してください。 iPerfプログラムは、UDPトラフィックをVM1クライアントからVM2サーバーに100 Mbpsの速度で送信しましたが、着信トラフィックリミッターが着信vhost-user1 vSwitchポートパスで動作するため、トラフィック速度が低下しました。 このため、iPerf BM1クライアントから送信されるトラフィックの速度は約10 Mbpsに低下しました。



TCPトラフィックを使用する場合、 ingress_policing_burstの値はingress_policing_rateの値のかなりの部分である必要があることに注意してください 。 10%を超えることをお勧めします。 これは、パケットをドロップするときのTCPプロトコルパフォーマンスの低下と、パケットの再送信の問題によるものです。



vhost-user1の既存の速度制限設定は、次のコマンドを使用して取得できます。



 ovs-vsctl list interface vhost-user1
      
      





vhost-user1のトラフィック速度制限を削除するには、 次に示すように、 ingress_policing_rateパラメーターを0に設定します( ingress_policing_burstパラメーターの値を構成する必要はありません)。



 ovs-vsctl set interface vhost-user1 ingress_policing_rate=0
      
      







おわりに



この記事では、インバウンドトラフィックリミッターが設定されたDPDKを備えたOpen vSwitch *を介して2つの仮想マシン間でトラフィックが転送される簡単な例を示しました。 特定のDPDKポートの速度制限を設定し、現在の速度制限設定に関する情報を取得し、速度制限をキャンセルするためのコマンドを示しました。



追加情報



速度制限、オプションなどの使用の詳細については、 vswitch.xmlおよびovs-vswitchd.conf.dbの速度制限に関するトピックを参照してください。



質問がありますか? メールディスカッションにOpen vSwitchの要求を送ることができます。



DPDKを使用したOpen vSwitch *の詳細については、Intel Developer ZoneおよびIntel Network Builders Universityサイトの次のビデオおよび記事を参照してください。





Habrahabrの翻訳記事






All Articles