
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はスループットを高速化するために使用されます。
- IPv4ファイアウォール+ NAT / NAPT転送
- IPv6ファイアウォール転送
- IPv4 + IPv6 IPSec(ESPおよびAH)転送
- 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
ネットワークアナライザーのセットアップ:
- ポート1は、1 Gb / sでUDPストリームを送信するように構成されています
- ポート2はループモード(ミラーモード)で構成されます
帯域幅テストを実行します。
ASFを使用したP1020RDBのペイロードIPルーティング容量

結論:
P1020RDB上のApplication Specific Fastpathは機能します。 956.569 Mbit / s(フレーム1500バイト)の速度でIP転送を実行すると、プロセッサの負荷は2%のレベルになりました(上)。
ASFを使用してトラフィックを処理する場合、Linuxスタックを通過しないことに注意してください。これは、tcpdumpの起動時にインターフェイスのアクティビティが不足していることからわかります。
[!?]ご清聴ありがとうございました! 質問やコメントを歓迎します。 電子設計センターのプロムワッドのプログラマーが回答します。