P1020RDBデバッグボードでのイーサネット高速パスの紹介





ARMプロセッサがブロードバンドシステムおよびネットワークテクノロジの市場を積極的に征服し始めているという事実にもかかわらず、PowerPCプロセッサは、 フリースケールなどのメーカーのおかげで、依然として大きな市場シェアを占めています。



この記事では、イーサネットトラフィックの処理の観点から、Freescale P1020プロセッサの技術的能力に精通します。 また、P1020RDBデバッグボードでIPルーティングのパフォーマンスを確認します(外観については、上記を参照)。



QorIQ P1020リファレンスボード(RDB)は、さまざまな種類のデバイスで使用できる多機能プラットフォームです。 使用可能な1 GBのDDR3 SDRAM(バッファリングなし)、および16 MB NORフラッシュと32 MB NANDフラッシュ(NORまたはNANDフラッシュメモリから起動可能)。 このボードは、SGMII PHY、RGMII PHY、および組み込みの4ポートスイッチを介した6つのギガビットポート、2つのUSB On-The-Go(OTG)ポート、4つのFXSポート、1つのFXOポート(リレー経由)をサポートします。





ブロック図P1020RDB



freescale.comでP1020RDBの詳細をご覧ください。



ネットワークトラフィック処理を高速化するために、FreescaleはLinuxカーネル用のASF(Application Specific Fastpath)テクノロジーを提供しています。



ASF実装は、動的にロード可能なLinuxカーネルモジュールであり、実行中にLinuxスタックにプラグインできます。 Linuxスタックに接続した後、パケットはLinuxネットワークデバイスドライバー(イーサネット)からASFデータリンクモジュールにインターセプトされます。



ASFは、最も一般的なデータ転送アプリケーション向けに設計されています。



主な用途



ASFはスループットを高速化するために使用されます。

  1. IPv4ファイアウォール+ NAT / NAPT転送
  2. IPv6ファイアウォール転送
  3. IPv4 + IPv6 IPSec(ESPおよびAH)転送
  4. QoSサポート


ASF実装スキーム



ASFはさまざまなLinuxネットワーク管理モジュールと統合して、データ処理のための情報を取得します。 次の図は、典型的なネットワークプロセッサソフトウェアアーキテクチャ上の一般的なシステムにASFモジュールがどのように適合するかを示しています。





ASFソフトウェアアーキテクチャ



P1020RDBボードにはソフトウェアがインストールされています:QorIO-SDK-1.7-20141218-yocto



ASFが機能するためには、Freescaleのカーネルで対応するオプションを有効にする必要があります。

Application Specific FastPath ( Disabled by Default ) │ Location: │ -> Device Drivers │ -> Network device support (NETDEVICES [=y])
      
      





スループットをテストするには、ネットワークアナライザーを使用します。





ネットワークアナライザー



テストスクリプトのセットアップ



RFC2544-ネットワーク相互接続デバイスのベンチマーク方法論に従って、典型的なIPルーティングタスクのパフォーマンスをテストします。



アナライザの最初のポートからのデータストリームは、P1020RDBボードを介して2番目のポートに送信されます。 受信したトラフィックは反射され、P1020RDBを介して最初のアナライザーポートに送り返されます。 したがって、テスト中、2つの多方向データストリーム(全二重)がP1020RDBを流れます。 1ギガビット/秒のトラフィックの全二重ルーティングを実行するには、プロセッサが1秒あたり2ギガビットのデータを処理する必要があります。





図-テスト済みの構成



P1020RDBの構成



eth0およびeth1インターフェイスでのIPv4アドレスとマスクの構成:

 ifconfig eth0 192.168.1.100 netmask 255.255.0.0 up ifconfig eth1 10.10.10.100 netmask 255.0.0.0 up
      
      





ボード上のルーティングを有効にします。

 echo 1 > /proc/sys/net/ipv4/ip_forward
      
      





ASFカーネルモジュールのロード:

 insmod asf.ko insmod asfctrl.ko
      
      





可能なスレッドの数の増加:

 echo 140000 > /proc/sys/net/nf_conntrack_max
      
      





UDPタイムアウトを9000秒に設定する(パフォーマンステスト用):

 echo 9000 > /sys/asfctrl/ffp/asfctrl_ffp_udp_tmout
      
      





フレームのグループ処理のパラメーターの設定:

 ethtool -C eth0 rx-frames 12 rx-usecs 32 ethtool -C eth1 rx-frames 12 rx-usecs 32
      
      





RxおよびTxリングのサイズの設定:

 ethtool -G eth0 rx 32 tx 32 ethtool -G eth1 rx 32 tx 32
      
      





割り込みを処理するカーネルの目的:

 echo 2 > /proc/irq/30/smp_affinity echo 1 > /proc/irq/36/smp_affinity
      
      





PTPシャットダウン:

 echo 0 > /sys/class/net/eth0/ptp_1588 echo 0 > /sys/class/net/eth1/ptp_1588
      
      





ネットワークアナライザーのセットアップ:



帯域幅テストを実行します。



ASFを使用したP1020RDBのペイロードIPルーティング容量





結論:

P1020RDB上のApplication Specific Fastpathは機能します。 956.569 Mbit / s(フレーム1500バイト)の速度でIP転送を実行すると、プロセッサの負荷は2%のレベルになりました(上)。



ASFを使用してトラフィックを処理する場合、Linuxスタックを通過しないことに注意してください。これは、tcpdumpの起動時にインターフェイスのアクティビティが不足していることからわかります。



[!?]ご清聴ありがとうございました! 質問やコメントを歓迎します。 電子設計センターのプロムワッドのプログラマーが回答します。



All Articles