Permalink: 2012-10-09 01:08:00+09:00 by ruy@ainoniwa.net in technical tags: FreeBSD network performance social:

以前、 net6501-70を買って、それからどうしよう。 とか言っていたのだけど、結局FreeBSD 9.0Rを入れて、いつものようにルータにすることにした。

理由はいくつかあるけど、それは置いといて。

そこで、ネットワーク周りのベンチマークを取って、傾向だけでも把握しておこうかと思ったので、チマチマ測った結果を載せておこうと思う。

別段面白いことは無いと思うよ...うん。

2012/10/13 「IPv6のUDP性能測定のやり直し」「各グラフの縦軸統一」を適用しました。

はじめに

まず、測定構成は以下の2つで、測定のアプリケーションにはiperf 2.0.5を使用した。

Case1)
    Node1 ---(SW)--- DUT(net6501)

Case2)
    Node1 ---(SW)--- DUT(net6501) ----- Node2

iperfによる測定時間は、いずれも300秒。記事末尾にスクリプト例だけ載せておきますので説明を端折ることに。

SW部分にはHP 1810-24Gがあるが、ごく小さい遅延が乗るだけなので目をつぶる。

また、Node1,net6501には試験に使用するネットワークを介してSSH接続を行なっていることもあり、試験用トラフィック以外のトラフィックが流れてしまう環境であることを予め共有しておく。

更に、測定構成1の環境において、net6501の処理性能の低さから、UDPスループットの測定に毎回失敗するので、今回はルータとして使用することもあり、投げてしまった。

誰か同じようなことをするなら私の悩み事をついでに解決してくれると助かります。

net6501で使用するIFは以下の通り(一部略)。

eth1: flags=8843 metric 0 mtu 1500
options=219b
inet 192.168.122.2 netmask 0xffffff00 broadcast 192.168.122.255
inet6 2001:380:e08:f7::2 prefixlen 64
nd6 options=21
media: Ethernet autoselect (1000baseT )
eth2: flags=8843 metric 0 mtu 1500
options=219b
inet 192.168.123.2 netmask 0xffffff00 broadcast 192.168.123.255
inet6 2001:db8:1::2 prefixlen 64
nd6 options=21
media: Ethernet autoselect (1000baseT )

試験項目は、以下の要素のマトリックスとなります(ただし自処理のUDP/IP等、一部未実施)。

  • 処理方式
    • 終端
    • 転送
  • プロトコル
    • TCP/IP
    • TCP/IPv6
    • UDP/IP
    • UDP/IPv6
  • pf
    • pf disable
    • pf enable(1rule)
    • pf enable(100rule)
    • pf enable(10000rule)
    • pf enable(NAPT)
  • fastforwarding
    • net.inet.ip.fastforwarding=0
    • net.inet.ip.fastforwarding=1

pfのルール内でチェックしているIFは基本的に入力となるeth1、またNAPTによるアドレス変換のタイミングはeth2。

一応、各試験にてvmstatによるnet6501の負荷状況をチェックしているものの、まとめる時間が無いので割愛している。

あと、何度もやってる時間無いので、ちゃんととれたデータ1個分しかないのでもうホント流してもらうレベル。とは言え、ある程度傾向は見えるかなぁ、なんて。

というわけで、測定結果を見ていく。

Node1とnet6501の間のTCP/IP測定結果

image0

この場合、TXはnet6501側。自身のTCPセッションでGbEを埋めることは可能に見える。

対して、受信レートは芳しくなく、セッション数を増やしても伸びは見られない。

また、RXについてはpfを有効にすると30%程度の性能低下が見られる。

(※pfのルール数は、1度パケットが通ればステート走査になるのであんまり関係ない)

Node1とnet6501の間のTCP/IPv6測定結果

image1

今度はIPv6で同様の試験。

こちらは、GbEを埋めるには程遠く、TX/RXのいずれも200Mbps程度が限界。TCP/IPと同様にpfを有効にするとTX/RXともに30%弱の性能低下が見られる。

TXにおいては、1sessionと2,4sessionの間に有意な差が見られ、HTの効果が25%程度寄与していると推定される。

RXにおいては顕著に現れていないが、4session時の値を見ると若干の値の変化もあるため、RXについてはもう少し試験した上で結論付けるべきだろう(でも多分やらない)

が、いずれにしても、1,2の試験結果は、net6501がiperfというアプリケーションを介して送受信可能なレートなので、あくまで参考程度に眺めておくのがいいと思う。SFTPとか使い始めたらこんな速度出るわけないので。

というわけで、ルータとしては以下本題。

TCP/IPの転送レート

image2

ではまずTCP/IP。pfがdisableの時は、本当にただのルータ。

pfが有効になると性能は半分程度に下がる。更に、NAPTによるアドレス変換を実施した場合は、無効な場合と比較して60%程度の性能低下となる。

次に、fastforwardの効果の大きさを確認しておこう。

左3つが無効、右3つが有効だが、明らかにfastforwardが有効な場合のほうが処理可能なトラフィックが増えている。

pfが無効になっていると、fastforward内の処理ステートも格段に減るので、伸びが大きい。

pfが有効な場合でも、fastforwardを有効にすることで80%弱(NAPT時は40%弱)の性能向上が期待できる。

また、セッション数が増加しても、転送レートに変化は見られない。

同時に複数のポートを使用した試験はできていないので、そちらと合わせてシステム全体の転送レートに言及するのもいいかもしれない。

ちなみに、FreeBSD自体のNetwork arichitectureでは、700kppsが限界とか何とか。

TCP/IPv6の転送レート

image3

TCP/IPv6の場合は、fastforwardという項目はあるものの、FreeBSD 9.0R時点では実装がない(NetBSDにはあったりする)ので、コレは単に条件が同じで1回目の試験と2回目の試験という見方をしましょう(単に項目マトリックス上の問題なのです)。

まぁ、1回目も2回目もそんなにブレはない、ということで。

さて、IPv6になると、途端に処理レートが下がる。

IPv4がpf disableで430Mbps程度だったのが、IPv6になっただけで320Mbps前後まで落ちている。

pfを有効にした場合の性能低下割合は、IPv4よりIPv6の方が低下率は低めで、大体40%強。

NAPTを使用した場合は、無効な場合と比較して50%程度の性能低下となる。

こちらも、セッション数が増えても性能は変わらず。

FreeBSDでは、IPv4とIPv6で、純粋に20%程度ベース性能が低いという話があって、その修正が今は終わってるはず。

FreeBSD 9.0段階ではその修正は行われていないから、9.1かなぁ。

UDP/IPの転送レート

image4

UDPの場合は、TCPよりも転送レートが高い(もちろん、ヘッダサイズの違いによる差はあるが)。

単にTCPのACKによるパケットがシステム全体の処理を食ってるだけで、それを含めればpps換算で同じようなパケット数になると思うのだけど。

TCP/IPと同じような値、という感じか。

pf enableで40%、NAPTで50%程度の性能低下。fastworwardの効果も同様。

試験用に使ってる端末の限界で、1sessionではGbE埋められないので仕方なく800Mbps程度。

これは他の試験でも同様なので、左側の1session時も、入力レートは800Mbpsとそれに応じたパケット間隔になってる。

これが原因で不必要に処理レートがマシになることがあるかなぁ、と考えていたものの、特に2,4sessionと比べて大差無いので、流すことにする。

UDP/IPv6の転送レート

image5

はいはい、大体20%減ですよ、っと。

UDP/IPの転送レート(pps表記)

image6

iperfのpps出力結果。

コレ見ると分かりやすいね。

pf disableで50kpps、pf enbaleで30kpps、pf NAPTで25kppsとかそんな感じ。

fastforward有効だと、pf disableで80kpps、pf enbaleで52kpps、pf NAPTで40kppsとかそんな感じ。

まぁ、pf disableの時のppsはMbps飽和してるので、ミドルパケットで測ったら100kpps位になると考えてる。(大体、pf enable時の倍位)

UDP/IPv6の転送レート(pps表記)

image7

とりあえず、IPv6の転送レートがとても芳しくないので、L2TP接続なIPv6サービスの速度は思考放棄しそうになってる。

GbEだけど、正直全ポート100Mbpsでいいんじゃないかなぁ...とか。

とりあえず、fastforwardは有効にしましょう、そうしましょう、って感じ。

今までも、IPv6はIPv4に比べて20%程度性能が出ないって話があって、今回測定しなおしてそれが明確になった。

でも、FreeBSDの方で、IPv6 Performance analysisというプロジェクトが完了していたりして、おそらく今回観測されたIPv4とIPv6の性能差はFreeBSD 9.1で改善されるんじゃないかなぁ、という思惑。

IPv6のfastforwardingが実装されるとかそういう話じゃなくて、ベースの速度向上関係ですけどね。

pfとかIPsecとかその辺含めて、net6501のルータ構築用の文書でも書きましょうかね...

おまけ

測定に使ったスクリプトはこんな感じ。

ログ取り失敗したりして、一部やり直しとか色々やってるので、あくまでこんな感じで他のも同様に書きました、という感じで。

一例として書きます。

転送用Node1

#!/bin/sh
DIR=/root/net6501_iperf/log
DUTv4="-c 192.168.123.4"
DUTv6="-V -c 2001:db8:1::4"
LANG=C
HOSTNAME=node1

server()
{
  echo "`date`: $ID start"
  sleep 6
  iperf $OPT > $DIR/${ID}_${HOSTNAME}.log &
  sleep 365
  killall -q iperf
  sleep 1
  killall -q iperf
  sleep 5.5
  echo "`date`: $ID end"
}

client()
{
  echo "`date`: $ID start"
  sleep 21
  iperf $OPT > $DIR/${ID}_${HOSTNAME}.log &
  sleep 350
  killall -q iperf
  sleep 6.5
  echo "`date`: $ID end"
}

echo "pf disable / fastforward=0"
# IPv4 TCP Client
ID="097"; OPT="$DUTv4 -i 1 -t 300"     ; client
ID="098"; OPT="$DUTv4 -i 1 -t 300 -P 2"; client
ID="099"; OPT="$DUTv4 -i 1 -t 300 -P 4"; client

# IPv6 TCP Client
ID="127"; OPT="$DUTv6 -i 1 -t 300"     ; client
ID="128"; OPT="$DUTv6 -i 1 -t 300 -P 2"; client
ID="129"; OPT="$DUTv6 -i 1 -t 300 -P 4"; client

# IPv4 UDP Client
ID="157"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b 1000m -P 1"; client
ID="158"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b  500m -P 2"; client
ID="159"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b  250m -P 4"; client

# IPv6 UDP Client
ID="187"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b 1000m -P 1"; client
ID="188"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b  500m -P 2"; client
ID="189"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b  250m -P 4"; client

echo "pf disable / fastforward=1"
# IPv4 TCP Client
ID="100"; OPT="$DUTv4 -i 1 -t 300"     ; client
ID="101"; OPT="$DUTv4 -i 1 -t 300 -P 2"; client
ID="102"; OPT="$DUTv4 -i 1 -t 300 -P 4"; client

# IPv6 TCP Client
ID="130"; OPT="$DUTv6 -i 1 -t 300"     ; client
ID="131"; OPT="$DUTv6 -i 1 -t 300 -P 2"; client
ID="132"; OPT="$DUTv6 -i 1 -t 300 -P 4"; client

# IPv4 UDP Client
ID="160"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b 1000m -P 1"; client
ID="161"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b  500m -P 2"; client
ID="162"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b  250m -P 4"; client

# IPv6 UDP Client
ID="190"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b 1000m -P 1"; client
ID="191"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b  500m -P 2"; client
ID="192"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b  250m -P 4"; client

echo "pf enable 1 rule / fastforward=0"
# IPv4 TCP Client
ID="103"; OPT="$DUTv4 -i 1 -t 300"     ; client
ID="104"; OPT="$DUTv4 -i 1 -t 300 -P 2"; client
ID="105"; OPT="$DUTv4 -i 1 -t 300 -P 4"; client

# IPv6 TCP Client
ID="133"; OPT="$DUTv6 -i 1 -t 300"     ; client
ID="134"; OPT="$DUTv6 -i 1 -t 300 -P 2"; client
ID="135"; OPT="$DUTv6 -i 1 -t 300 -P 4"; client

# IPv4 UDP Client
ID="163"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b 1000m -P 1"; client
ID="164"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b  500m -P 2"; client
ID="165"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b  250m -P 4"; client

# IPv6 UDP Client
ID="193"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b 1000m -P 1"; client
ID="194"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b  500m -P 2"; client
ID="195"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b  250m -P 4"; client

echo "pf enable 1 rule / fastforward=1"
# IPv4 TCP Client
ID="106"; OPT="$DUTv4 -i 1 -t 300"     ; client
ID="107"; OPT="$DUTv4 -i 1 -t 300 -P 2"; client
ID="108"; OPT="$DUTv4 -i 1 -t 300 -P 4"; client

# IPv6 TCP Client
ID="136"; OPT="$DUTv6 -i 1 -t 300"     ; client
ID="137"; OPT="$DUTv6 -i 1 -t 300 -P 2"; client
ID="138"; OPT="$DUTv6 -i 1 -t 300 -P 4"; client

# IPv4 UDP Client
ID="166"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b 1000m -P 1"; client
ID="167"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b  500m -P 2"; client
ID="168"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b  250m -P 4"; client

# IPv6 UDP Client
ID="196"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b 1000m -P 1"; client
ID="197"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b  500m -P 2"; client
ID="198"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b  250m -P 4"; client

echo "pf enable 100 rule / fastforward=0"
# IPv4 TCP Client
ID="109"; OPT="$DUTv4 -i 1 -t 300"     ; client
ID="110"; OPT="$DUTv4 -i 1 -t 300 -P 2"; client
ID="111"; OPT="$DUTv4 -i 1 -t 300 -P 4"; client

# IPv6 TCP Client
ID="139"; OPT="$DUTv6 -i 1 -t 300"     ; client
ID="140"; OPT="$DUTv6 -i 1 -t 300 -P 2"; client
ID="141"; OPT="$DUTv6 -i 1 -t 300 -P 4"; client

# IPv4 UDP Client
ID="169"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b 1000m -P 1"; client
ID="170"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b  500m -P 2"; client
ID="171"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b  250m -P 4"; client

# IPv6 UDP Client
ID="199"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b 1000m -P 1"; client
ID="200"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b  500m -P 2"; client
ID="201"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b  250m -P 4"; client

echo "pf enable 100 rule / fastforward=1"
# IPv4 TCP Client
ID="112"; OPT="$DUTv4 -i 1 -t 300"     ; client
ID="113"; OPT="$DUTv4 -i 1 -t 300 -P 2"; client
ID="114"; OPT="$DUTv4 -i 1 -t 300 -P 4"; client

# IPv6 TCP Client
ID="142"; OPT="$DUTv6 -i 1 -t 300"     ; client
ID="143"; OPT="$DUTv6 -i 1 -t 300 -P 2"; client
ID="144"; OPT="$DUTv6 -i 1 -t 300 -P 4"; client

# IPv4 UDP Client
ID="172"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b 1000m -P 1"; client
ID="173"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b  500m -P 2"; client
ID="174"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b  250m -P 4"; client

# IPv6 UDP Client
ID="202"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b 1000m -P 1"; client
ID="203"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b  500m -P 2"; client
ID="204"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b  250m -P 4"; client

echo "pf enable NAPT / fastforward=0"
# IPv4 TCP Client
ID="121"; OPT="$DUTv4 -i 1 -t 300"     ; client
ID="122"; OPT="$DUTv4 -i 1 -t 300 -P 2"; client
ID="123"; OPT="$DUTv4 -i 1 -t 300 -P 4"; client

# IPv6 TCP Client
ID="151"; OPT="$DUTv6 -i 1 -t 300"     ; client
ID="152"; OPT="$DUTv6 -i 1 -t 300 -P 2"; client
ID="153"; OPT="$DUTv6 -i 1 -t 300 -P 4"; client

# IPv4 UDP Client
ID="181"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b 1000m -P 1"; client
ID="182"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b  500m -P 2"; client
ID="183"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b  250m -P 4"; client

# IPv6 UDP Client
ID="211"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b 1000m -P 1"; client
ID="212"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b  500m -P 2"; client
ID="213"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b  250m -P 4"; client

echo "pf enable NAPT / fastforward=1"
# IPv4 TCP Client
ID="124"; OPT="$DUTv4 -i 1 -t 300"     ; client
ID="125"; OPT="$DUTv4 -i 1 -t 300 -P 2"; client
ID="126"; OPT="$DUTv4 -i 1 -t 300 -P 4"; client

# IPv6 TCP Client
ID="154"; OPT="$DUTv6 -i 1 -t 300"     ; client
ID="155"; OPT="$DUTv6 -i 1 -t 300 -P 2"; client
ID="156"; OPT="$DUTv6 -i 1 -t 300 -P 4"; client

# IPv4 UDP Client
ID="184"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b 1000m -P 1"; client
ID="185"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b  500m -P 2"; client
ID="186"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b  250m -P 4"; client

# IPv6 UDP Client
ID="214"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b 1000m -P 1"; client
ID="215"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b  500m -P 2"; client
ID="216"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b  250m -P 4"; client

sleep 15

echo "pf enable 10000 rule / fastforward=0"
# IPv4 TCP Client
ID="115"; OPT="$DUTv4 -i 1 -t 300"     ; client
ID="116"; OPT="$DUTv4 -i 1 -t 300 -P 2"; client
ID="117"; OPT="$DUTv4 -i 1 -t 300 -P 4"; client

# IPv6 TCP Client
ID="145"; OPT="$DUTv6 -i 1 -t 300"     ; client
ID="146"; OPT="$DUTv6 -i 1 -t 300 -P 2"; client
ID="147"; OPT="$DUTv6 -i 1 -t 300 -P 4"; client

# IPv4 UDP Client
ID="175"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b 1000m -P 1"; client
ID="176"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b  500m -P 2"; client
ID="177"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b  250m -P 4"; client

# IPv6 UDP Client
ID="205"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b 1000m -P 1"; client
ID="206"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b  500m -P 2"; client
ID="207"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b  250m -P 4"; client

echo "pf enable 10000 rule / fastforward=1"
# IPv4 TCP Client
ID="118"; OPT="$DUTv4 -i 1 -t 300"     ; client
ID="119"; OPT="$DUTv4 -i 1 -t 300 -P 2"; client
ID="120"; OPT="$DUTv4 -i 1 -t 300 -P 4"; client

# IPv6 TCP Client
ID="148"; OPT="$DUTv6 -i 1 -t 300"     ; client
ID="149"; OPT="$DUTv6 -i 1 -t 300 -P 2"; client
ID="150"; OPT="$DUTv6 -i 1 -t 300 -P 4"; client

# IPv4 UDP Client
ID="178"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b 1000m -P 1"; client
ID="179"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b  500m -P 2"; client
ID="180"; OPT="$DUTv4 -i 1 -t 300 -u -l 1472 -b  250m -P 4"; client

# IPv6 UDP Client
ID="208"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b 1000m -P 1"; client
ID="209"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b  500m -P 2"; client
ID="210"; OPT="$DUTv6 -i 1 -t 300 -u -l 1452 -b  250m -P 4"; client

自宛net6501用

get_stat_self.sh (統計取得用)

#!/bin/sh
echo "`date`: $1"
uname -a
ifconfig eth1
ifconfig eth2
sysctl net.inet
sysctl net.inet6
netstat -s
pfctl -si
pfctl -sr
pfctl -sn
pfctl -ss
ps ax

本体

#!/bin/sh
STATUS=/root/net6501_iperf/get_stat_self.sh
DIR=/root/net6501_iperf/log
NODE1v4="-c 192.168.124.27"
NODE1v6="-V -c 2001:db8:2::27"
HOSTNAME="dut"
LANG=C

server()
{
  echo "`date`: $ID start"
  $STATUS > $DIR/${ID}_${HOSTNAME}.log
  vmstat 1 > $DIR/${ID}_${HOSTNAME}_vmstat.log &
  sleep 5
  iperf $OPT >> $DIR/${ID}_${HOSTNAME}.log &
  sleep 365
  killall iperf; killall vmstat
  $STATUS >> $DIR/${ID}_${HOSTNAME}.log
  killall iperf
  sleep 5
  echo "`date`: $ID end"
}

client()
{
  echo "`date`: $ID start"
  $STATUS $ID > $DIR/${ID}_${HOSTNAME}.log
  vmstat 1 > $DIR/${ID}_${HOSTNAME}_vmstat.log &
  sleep 20
  iperf $OPT >> $DIR/${ID}_${HOSTNAME}.log &
  sleep 350
  killall vmstat
  $STATUS >> $DIR/${ID}_${HOSTNAME}.log
  sleep 5
  echo "`date`: $ID end."
}

#--------------------------------------------------------------------------

# pf disable
pfctl -d

#--------------------------------------------------------------------------

# IPv4 TCP Client
ID="001"; OPT="$NODE1v4 -i 1 -t 300"     ; client
ID="002"; OPT="$NODE1v4 -i 1 -t 300 -P 2"; client
ID="003"; OPT="$NODE1v4 -i 1 -t 300 -P 4"; client

# IPv4 TCP Server
ID="004"; OPT="-s -i 1"; server
ID="005"; OPT="-s -i 1"; server
ID="006"; OPT="-s -i 1"; server

# IPv6 TCP Client
ID="025"; OPT="$NODE1v6 -i 1 -t 300"     ; client
ID="026"; OPT="$NODE1v6 -i 1 -t 300 -P 2"; client
ID="027"; OPT="$NODE1v6 -i 1 -t 300 -P 4"; client

# IPv6 TCP Server
ID="028"; OPT="-s -V -i 1"; server
ID="029"; OPT="-s -V -i 1"; server
ID="030"; OPT="-s -V -i 1"; server

# IPv4 UDP Client
ID="049"; OPT="$NODE1v4 -i 1 -t 300 -u -b 1000m -l   44"; client
ID="050"; OPT="$NODE1v4 -i 1 -t 300 -u -b 1000m -l  740"; client
ID="051"; OPT="$NODE1v4 -i 1 -t 300 -u -b 1000m -l 1472"; client
ID="049"; OPT="$NODE1v4 -i 1 -t 300 -u -l 1472 -b 1000m -P 1"; client
ID="050"; OPT="$NODE1v4 -i 1 -t 300 -u -l 1472 -b  500m -P 2"; client
ID="051"; OPT="$NODE1v4 -i 1 -t 300 -u -l 1472 -b  250m -P 4"; client

# IPv4 UDP Server
ID="052"; OPT="-s -u -w 512k -i 1"; server
ID="053"; OPT="-s -u -w 512k -i 1"; server
ID="054"; OPT="-s -u -w 512k -i 1"; server

# IPv6 UDP Client
ID="073"; OPT="$NODE1v6 -i 1 -t 300 -u -b 1000m -l   24"; client
ID="074"; OPT="$NODE1v6 -i 1 -t 300 -u -b 1000m -l  720"; client
ID="075"; OPT="$NODE1v6 -i 1 -t 300 -u -b 1000m -l 1452"; client
ID="073"; OPT="$NODE1v6 -i 1 -t 300 -u -l 1472 -b 1000m -P 1"; client
ID="074"; OPT="$NODE1v6 -i 1 -t 300 -u -l 1472 -b  500m -P 2"; client
ID="075"; OPT="$NODE1v6 -i 1 -t 300 -u -l 1472 -b  250m -P 4"; client

# IPv6 UDP Server
ID="076"; OPT="-s -V -u -w 512k -i 1 -l   24"; server
ID="077"; OPT="-s -V -u -w 512k -i 1 -l  720"; server
ID="078"; OPT="-s -V -u -w 512k -i 1 -l 1452"; server

#--------------------------------------------------------------------------

# pf enable 1rule
pfctl -e
pfctl -f /etc/pf/pf_1rule.conf


#--------------------------------------------------------------------------

# IPv4 TCP Client
ID="007"; OPT="$NODE1v4 -i 1 -t 300"     ; client
ID="008"; OPT="$NODE1v4 -i 1 -t 300 -P 2"; client
ID="009"; OPT="$NODE1v4 -i 1 -t 300 -P 4"; client

# IPv4 TCP Server
ID="010"; OPT="-s -i 1"; server
ID="011"; OPT="-s -i 1"; server
ID="012"; OPT="-s -i 1"; server

# IPv6 TCP Client
ID="031"; OPT="$NODE1v6 -i 1 -t 300"     ; client
ID="032"; OPT="$NODE1v6 -i 1 -t 300 -P 2"; client
ID="033"; OPT="$NODE1v6 -i 1 -t 300 -P 4"; client

# IPv6 TCP Server
ID="034"; OPT="-s -V -i 1"; server
ID="035"; OPT="-s -V -i 1"; server
ID="036"; OPT="-s -V -i 1"; server

# IPv4 UDP Client
ID="055"; OPT="$NODE1v4 -i 1 -t 300 -u -l 1472 -b 1000m -P 1"; client
ID="056"; OPT="$NODE1v4 -i 1 -t 300 -u -l 1472 -b  500m -P 2"; client
ID="057"; OPT="$NODE1v4 -i 1 -t 300 -u -l 1472 -b  250m -P 4"; client

# IPv4 UDP Server
ID="058"; OPT="-s -u -w 512k -i 1"; server
ID="059"; OPT="-s -u -w 512k -i 1"; server
ID="060"; OPT="-s -u -w 512k -i 1"; server

# IPv6 UDP Client
ID="079"; OPT="$NODE1v6 -i 1 -t 300 -u -l 1472 -b 1000m -P 1"; client
ID="080"; OPT="$NODE1v6 -i 1 -t 300 -u -l 1472 -b  500m -P 2"; client
ID="081"; OPT="$NODE1v6 -i 1 -t 300 -u -l 1472 -b  250m -P 4"; client

# IPv6 UDP Server
ID="082"; OPT="-s -V -u -w 512k -i 1 -l   24"; server
ID="083"; OPT="-s -V -u -w 512k -i 1 -l  720"; server
ID="084"; OPT="-s -V -u -w 512k -i 1 -l 1452"; server

#--------------------------------------------------------------------------


# pf enable 100rule
pfctl -e
pfctl -f /etc/pf/pf_100rule.conf

#--------------------------------------------------------------------------

# IPv4 TCP Client
ID="013"; OPT="$NODE1v4 -i 1 -t 300"     ; client
ID="014"; OPT="$NODE1v4 -i 1 -t 300 -P 2"; client
ID="015"; OPT="$NODE1v4 -i 1 -t 300 -P 4"; client

# IPv4 TCP Server
ID="016"; OPT="-s -i 1"; server
ID="017"; OPT="-s -i 1"; server
ID="018"; OPT="-s -i 1"; server

# IPv6 TCP Client
ID="037"; OPT="$NODE1v6 -i 1 -t 300"     ; client
ID="038"; OPT="$NODE1v6 -i 1 -t 300 -P 2"; client
ID="039"; OPT="$NODE1v6 -i 1 -t 300 -P 4"; client

# IPv6 TCP Server
ID="040"; OPT="-s -V -i 1"; server
ID="041"; OPT="-s -V -i 1"; server
ID="042"; OPT="-s -V -i 1"; server

#--------------------------------------------------------------------------

# pf enable 10000rule
pfctl -e
pfctl -f /etc/pf/pf_10000rule.conf

#--------------------------------------------------------------------------

# IPv4 TCP Client
ID="019"; OPT="$NODE1v4 -i 1 -t 300"     ; client
ID="020"; OPT="$NODE1v4 -i 1 -t 300 -P 2"; client
ID="021"; OPT="$NODE1v4 -i 1 -t 300 -P 4"; client

# IPv4 TCP Server
ID="022"; OPT="-s -i 1"; server
ID="023"; OPT="-s -i 1"; server
ID="024"; OPT="-s -i 1"; server

# IPv6 TCP Client
ID="043"; OPT="$NODE1v6 -i 1 -t 300"     ; client
ID="044"; OPT="$NODE1v6 -i 1 -t 300 -P 2"; client
ID="045"; OPT="$NODE1v6 -i 1 -t 300 -P 4"; client

# IPv6 TCP Server
ID="046"; OPT="-s -V -i 1"; server
ID="047"; OPT="-s -V -i 1"; server
ID="048"; OPT="-s -V -i 1"; server