エクストリームな
ネットワーク機器テスト環境の実現

Yohei Kuga @sora_workwork
Trema Day #5 LT
今日の話

•
•

ネットワークテスタHWが持つ高精度な試験機能をネッ
トワークSWツールに適応したい
実装はNIC(FPGA+PCIe) + Linux device driver

Ixia Chassis
http://www.ixia...
アプローチ 1: Userspace Dataplane
Control plane
Control plane

Data plane

software

Data plane

Device

hardware

Device

Exis...
アプローチ 2: Timing API

•
•
•

パケット送受信タイミング管理をNICにOffload
Userspaceからパケットごとに送信タイミングを指定
精度は8ns, 相対時間と絶対時間をサポート
Scheduled TX us...
2つの時間の指定方法
NIC内にPHYと同じClock sourceを用いた48 bit counterを用意

各パケットのRX timestamp && TX Timing 制御に利用

•
•

Global mode (絶対時刻を指定)...
アプローチ 3: Programmable Interface

•

Ethernet Character device [HotSDN13]

•

Fileでパケットシナリオを保存 -> `cat`でreplay
アプローチ 3: Programmable Interface
Packet sending

$ echo “0000000000000000 FFFFFFFFFFFF 0022CF63967B 8899 23 …“
>/dev/ethpip...
サンプルシナリオ
PC1
Userspace

nsping.sh

NIC
(FPGA)

PC2
NIC
(FPGA)

Userspace

10ms.sh
1 #!/bin/bash

$ ./10ms.sh < /dev/ethpipe/0

2
3 delay=$(( 10000000 / 8 ));

# 10ms

4 while true; do
5

read pkt;

6

if ...
...
PING_REQ=“9000000000000000 ${ETH_HDR} ${IP_HDR} ${ICMP_HDR} ${PING_ID} …”
while true; do
PING_NO=$(( ${PING_NO} + 1 ))...
アプリケーション
送受信タイミングを制御できると色々遊べる

•

•
•

Middlebox
o latency emulation
“Extreme” network testing
o RFC2544, Cable checker, I...
おしまい
Upcoming SlideShare
Loading in …5
×

Tremaday5lt

313 views

Published on

Trema day #5 LT

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
313
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Tremaday5lt

  1. 1. エクストリームな ネットワーク機器テスト環境の実現 Yohei Kuga @sora_workwork Trema Day #5 LT
  2. 2. 今日の話 • • ネットワークテスタHWが持つ高精度な試験機能をネッ トワークSWツールに適応したい 実装はNIC(FPGA+PCIe) + Linux device driver Ixia Chassis http://www.ixiacom.jp/products/chassis/ixia-chassis-family-quick-reference-sheet
  3. 3. アプローチ 1: Userspace Dataplane Control plane Control plane Data plane software Data plane Device hardware Device Existing hardware tester Our approach
  4. 4. アプローチ 2: Timing API • • • パケット送受信タイミング管理をNICにOffload Userspaceからパケットごとに送信タイミングを指定 精度は8ns, 相対時間と絶対時間をサポート Scheduled TX using timestamp RX w/ timestamp on the hardware traffic Userspace read(2) NIC write(2)
  5. 5. 2つの時間の指定方法 NIC内にPHYと同じClock sourceを用いた48 bit counterを用意 各パケットのRX timestamp && TX Timing 制御に利用 • • Global mode (絶対時刻を指定) o App: forwarding, dummynet Local mode (相対時刻を指定) o 最初の送信パケットからの相対的な遅延を指定 o App: Network testing
  6. 6. アプローチ 3: Programmable Interface • Ethernet Character device [HotSDN13] • Fileでパケットシナリオを保存 -> `cat`でreplay
  7. 7. アプローチ 3: Programmable Interface Packet sending $ echo “0000000000000000 FFFFFFFFFFFF 0022CF63967B 8899 23 …“ >/dev/ethpipe/0 Port mirroring $ cat /dev/ethpipe/0 | tee /dev/ethpipe/0 > /dev/ethpipe/1 MAC address filtering $ grep ‘FFFFFFFFFFFF’ /dev/ethpipe/0 > /dev/ethpipe/1 VLAN untagging $ sed -e 's/8100 00 01 //' < /dev/ethpipe/0 > /dev/ethpipe/1
  8. 8. サンプルシナリオ PC1 Userspace nsping.sh NIC (FPGA) PC2 NIC (FPGA) Userspace 10ms.sh
  9. 9. 1 #!/bin/bash $ ./10ms.sh < /dev/ethpipe/0 2 3 delay=$(( 10000000 / 8 )); # 10ms 4 while true; do 5 read pkt; 6 if [[ $pkt =~ ^[0-9A-F]{16} ]]; then 7 recv_ts=${pkt:0:16}; 8 frame=${pkt:16}; 9 10 printf "%016X$framen" 11 12 $(( 16#$recv_ts + 10#$delay )) > /dev/ethpipe/1; fi 13 done
  10. 10. ... PING_REQ=“9000000000000000 ${ETH_HDR} ${IP_HDR} ${ICMP_HDR} ${PING_ID} …” while true; do PING_NO=$(( ${PING_NO} + 1 )) PING_NO_TMP=`printf "%04dn" ${PING_NO}` echo $PING_REQ >/dev/ethpipe/0 # Sending while true; do read pkt if [[ $pkt =~ "${PING_ID} ${PING_NO_TMP:0:2} ${PING_NO_TMP:2:4}" ]]; then TX_TIME=`cat /sys/kernel/ethpipe/local_time1` RX_TIME=${pkt:0:16} printf "RTT: %d nsn" $(( (0x${RX_TIME} - 0x${TX_TIME}) * 8 )) break fi done sleep 1 done $ ./nsping.sh < /dev/ethpipe/0
  11. 11. アプリケーション 送受信タイミングを制御できると色々遊べる • • • Middlebox o latency emulation “Extreme” network testing o RFC2544, Cable checker, Infer the underlay topology, E2E bandwidth estimation Generic purpose network IO o Order of packet receiving, Jitter and congestion control, packet pacing
  12. 12. おしまい

×