โจทย์ คือ ต้องการวัดค่า bandwidth ของ wan link ว่าได้ครบตามลูกค้าซื้อไปหรือไม่ ?
แน่นอนว่าเราต้องมี router 1 ตัว คือ ที่ site ลูกค้า 1 ตัว
ส่วนที่ฝั่งของ isp เองนั้น อาจเป็นโครงข่าย mpls ก่อนถึง router core network ต่อไป
router customer <–> switch <–> mpls <—> core router <—> internet
ส่วนที่ switch มาคั่นระหว่าง router customer <–> mpls เพื่อใช้งานเชื่อมต่อ obtic fiber กรณีเป็น FTTx เท่านั้น
(เป็นกรณีที่ router ไม่มี GBIC หรือ port SFP รองรับ)
วิธีการวัดค่า b/w นั้นมีโปรแกรมสำหรับช่วยในการทดสอบอยู่หลายตัว หรือ
จะใช้วิธีการดาวน์โหลด ผ่านโปรแกรมช่วยดาวน์โหลด (พวก download manager) ที่เครื่อง pc/notebook เราเอง
กรณีอัพโหลดนั้น ต้องจำลองเครื่อง pc/notebook เป็น http หรือ ftp server เพื่อให้อีกเครื่องมาดาวน์โหลด
แต่ก็มีวิธีง่าย ๆ กว่าโดยใช้ชุดโปรแกรมที่ติดมากับตัว router เอง ที่ชื่อว่า ttcp (test tcp)
เป็น hidden Cisco IOS tool ที่มีตั้งแต่ Cisco IOS 11.2 เป็นต้นมา และมีเฉพาะ Feature Sets IP Plus (is- images) หรือ Service Provider (p- images) เท่านั้น ก่อนไปดูการใช้งาน ttcp บน cisco router เรามาดูโปรแกรมตระกูล ttcp (test tcp) สำหรับใช้ทดสอบ n/w throughput ว่ามีอะไรกันบ้าง
โปรแกรมตระกูล ttcp (test tcp)
จาก http://en.wikipedia.org/wiki/Ttcp
- ttcp — เคยใช้งาน หรือจะใช้ตัว ettcp (enhanced ttcp) แทนก็ได้ครับ
- nttcp
- nuttcp
- iperf — ส่วนใหญ่จะเคยใช้งานกันอยู่แล้ว
- PCATTCP — เคยใช้งาน
- Cisco IOS — ก็เป็นคำสั่ง ttcp ที่กล่าวมาข้างต้น
- EnGenius
มาดูหน้าตาแต่ละโปรแกรมที่เคยใช้งานกัน
ttcp
เป็น command-line sockets-based benchmarking tool สำหรับวัด TCP และ UDP performance ระหว่าง 2 โหนด(อุปกรณ์/หรือระบบ)
ทดลอง yum ดูสามารถ install ผ่าน repo default ของ CentOS เลย
iperf
ใช้ในการตรวจสอบแบนด์วิดท์ปริมาณรับและส่งข้อมูลในระบบเครือข่าย ทำงานผ่านโปรโตคอล TCP และ UDP โดยการใช้งานผ่านบรรทัดคำสั่ง
ทำให้ผู้ดูแลระบบสามารถตรวจสอบแบนด์วิดท์ในระบบเครือข่ายได้ทั้งฝั่งเครื่องแม่ข่าย (server) และฝั่งเครื่องลูกข่าย (client)
โดยที่ iperf สามารถติดตั้งใช้งานได้ทั้งระบบ Linux และ Windows หรือระบบอื่นๆ ลองดูกันเองนะ
- ฝั่ง Server ใช้คำสั่ง iperf -s
- ฝั่ง Client ใช้คำสั่ง iperf -c <ip server>
ลองปรับแต่งค่า TCP window size เพื่อเพิ่ม throughput ที่ทดสอบให้มากขึ้น
โดยใช้พารามิเตอร์ -w เพิ่มเข้าไปทั้ง Client และ Server เช่น
- iperf -s -w 16k
- iperf -c 192.168.1.1 -w 16k
ลองปรับแต่ง โดยเพิ่มเป็น 16k , 32k , 64k , 128k , 1m , 2m , 4m แล้วดูค่า b/w ที่ได้ กับ process ของ cpu ทั้งฝั่ง server และ client ดูนะครับ
ตัว iperf รองรับ ipv6 แล้ว
PCATTCP
(PCAUSA Test-TCP Utility) PCATTCP เป็น Win32 Console Application เรียกใช้จาก Dos เท่านั้น
ตั้งแต่ version V2.01.01.13 รองรับ ipv6 แล้ว
jperf
เป็น java ต้องทำการติดตั้ง jre ทั้งเครื่อง Server และ Client ก่อนใช้งาน
หรือกรณีบน Cisco Router run ttcp เอาไว้ ก็ติดตั้งเฉพาะเครื่องเรา ที่จำลองเป็น Client
เมื่อ run iperf ทั้ง Server และ Client เป็นที่เรียบร้อยแล้วจะเห็นเส้นกราฟปรากฏขึ้นทั้งฝั่ง Server และ Client ด้วย
ซึ่งจะบอกเป็นความเป็นในการรับส่งข้อมูล กิโลบิตต่อวินาที (kbps) เป็นอันเสร็จเรียบร้อย
แต่จากรูปแค่ capture หน้าจอมาให้ดูยังไม่ได้มีการทดสอบยิง รับ-ส่งกันครับ
การใช้งาน ttcp บน Cisco router
ฝั่ง receive หรือ server
พิมพ์ ttcp จากนั้นก็กด enter เพื่อใช้ default value ต่อไป
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Router-A#ttcp transmit or receive [receive]: receive packets asynchronously [n]: perform tcp half close [n]: receive buflen [32768]: bufalign [16384]: bufoffset [0]: port [5001]: sinkmode [y]: rcvwndsize [32768]: ack frequency [0]: delayed ACK [y]: show tcp information at end [n]: ttcp-r: buflen=32768, align=16384/0, port=5001 rcvwndsize=32768, delayedack=yes tcp ttcp-r: accept from 192.168.1.2 |
ฝั่ง client
พิมพ์ ttcp
จากนั้นเลือก transmit โดยพิมพ์แค่ t ก็พอ กด enter
ระบุ ip address แล้วค่อยกด enter เพื่อใช้ default value ต่อไป
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Router-B#ttcp transmit or receive [receive]: t Target IP address: 192.168.1.1 perform tcp half close [n]: send buflen [8192]: send nbuf [2048]: bufalign [16384]: bufoffset [0]: port [5001]: sinkmode [y]: buffering on writes [y]: show tcp information at end [n]: ttcp-t: buflen=8192, nbuf=2048, align=16384/0, port=5001 tcp -> 192.168.1.1 |
กรณีเป็นเครื่อง Linux ทดลองใช้ Flowgrind ซึ่งเป็นทูลกลุ่มเดียวกับ iperf / netperf ดูได้ครับ
สำหรับการทดสอบโดยใช้โปรแกรมเหล่านี้ ต้องมีการปรับ tune ค่าของ parameters บางตัวในแต่ละโปรแกรม เพื่อให้ผลการทดสอบได้ค่า throughput สูงขึ้น และด้วยข้อจำกัด performance ของ cisco router หรือเครื่อง pc/notebook เครื่องทดสอบเอง ทำให้ผล speed ของ throughput ที่ทดสอบมีค่าต่ำกว่าที่ควรจะเป็นด้วย ลองทดสอบหลายๆ วิธีเพื่อวัดค่านะครับ