วิธีคำนวน Delay, loss and throughput ในระบบ packet-switched networks

เวลาเราส่งข้อมูลผ่านระบบเครือข่าย ไม่ว่าจะเป็นส่งรูปให้เพื่อน อัพโหลดไฟล์ หรือพิมพ์แชทก็ตาม ข้อมูลของเราจะวิ่งผ่าน network (ยังไม่ขอพูดละกันว่าผ่านยังไงบ้าง) แต่ไม่ใช่ว่าทันทีที่เรากดส่งปุ๊บมันจะถึงปั๊บ เพราะมันมีสิ่งที่ทำให้ Data ของเราถึงจุดหมายช้าลง นั่นคือที่มาของ Delay

การ Delay ของข้อมูลเกิดขึ้นจากที่ไหนบ้าง?

Processing in Node

หมายความว่ากระบวนการทำงานของ “node” … โหนดในที่นี้เราหมายถึง switch หรือ router ก็ได้ ซึ่งเป็นตัวกลางที่อยู่ระหว่างทางจากเครื่องผู้ส่ง Sender ไปหาเครื่องผู้รับ Receiver (switch เป็น node ในเลเวล2หรือ “Data-link Layer” ส่วน router จะอยู่ในเลเวล3คือ “Network Layer”)
ทุกครั้งที่ แพ็กเกจข้อมูลของเราเดินทางมาถึง node มันจะทำการเช็กความถูกต้องของข้อมูลทุกครั้งก่อนจะส่งต่อไป (แน่นอน ถ้าผิดก็ไม่ส่งไงล่ะ ส่งต่อไปก็เปล่าประโยชน์ ขอข้อมูลมาใหม่อีกครั้งเลยดีกว่า)

Queueing

คือช่วงเวลาที่ Data ถูกหน่วงไว้ก่อนจะส่งต่อไป … เอ๊ะ!? แล้วทำไมต้องหน่วงมันไว้ ส่งเลยไม่ได้เหรอ คำตอบก็คือ node พวกนี้ก็ไม่ได้อยากที่จะหน่วงข้อมูลไว้หรอกนะ แค่ข้อมูลมันเข้ามาเยอะจนจัดการไม่ทันแล้วเท่านั้นเอง
nodeตัวนึงอาจจะมีการเชื่อมต่อเข้ามาจาก Sender หรือ Receiver หลายสิบหลายร้อยตัวเลยก็เป็นได้ แล้วถ้าเจ้าตัวที่เชื่อมต่อเข้ามาทั้งหมดนั้นมันเกิดส่งข้อมูลออกมาพร้อมๆ กัน มันก็จัดการกับข้อมูลพวกนั้นไม่ทัน ดังนั้นในเมื่อจัดการไม่ทันพวก switch หรือ router ก็จะพักข้อมูลที่เข้ามาไว้ในส่งพักหรือเรียกว่า buffer ก่อนชั่วคราว แล้วค่อยๆ ทยอยจัดการ

Bandwidth หรือ Transmission Delay

หากตัดเรื่องการ Delay หัวข้ออื่นๆ ทิ้งไป ก็ใช่ว่า switch หรือ router พวกนี้สามารถส่งข้อมูลได้ทุกขนาดตามที่เราส่งไปให้มัน อุปกรณ์แต่ละตัวมีสิ่งที่เรียกว่า Bandwidth อยู่ซึ่งหน่วยของมัน คิดเป็น “bps” หรือ bit per sec. “จำนวน bit ที่ส่งผ่านไปได้ในหนึ่งวินาที” นั่นเอง
ตัวอย่างเช่น ข้อมูลขนาด 100 bits ส่งผ่าน อุปกรณ์ที่มี bandwidth=50bps ก็แปลว่าต้องใช้ 2วินาทีถึงจะส่งข้อมูลผ่านไปได้ (วินึงได้แค่ 50bits ไง จะส่ง 100bits เลยต้องใช้ 2วิ.)

Propagation Delay

ขอเรียกมันว่า Delay ในชีวิตจริง … ตัวอย่างของเจ้านี่สมมุติง่ายๆ ว่าเรามีท่อน้ำสองท่อ ท่อแรกยาว 100 เมตร อีกท่อหนึ่งยาว 10 เมตร ถามว่าถ้าให้น้ำไหลผ่านท่อทั้งสองท่อ น้ำจะไหลออกจากท่อไหนออกเร็วกว่ากัน … ไม่ต้องคิดไรมาก ไม่ใช่ปัญหาให้ต้องคิดซับซ้อนขนาดนั้น แน่นอนมันก็ต้องท่อที่ยาว 10 เมตรเพราะมันสั้นกว่าใช่ไหมล่ะ
เป็นเรื่องทาง physical คือเมื่อข้อมูลวิ่งผ่านตัวกลาง (สายไฟ) มันมี delay แน่นอน ทั้งความต้านทานของชนิดสายไฟ หรือความยาวสายไฟ ซึ่งเราก็ต้องมีคิดดูว่ามันจะใช้เวลาในการวิ่งผ่านสายเนี่ยเป็นเท่าไหร่
ในเรื่องการส่งข้อมูลก็เช่นกันแค่เปลี่ยนท่อน้ำเป็นสายไฟ (หรือตัวนำ medium) แทน
การคิด Delay ในหัวข้อนี้จะต้องรู้ค่าหนึ่งก่อน (ค่านี้ได้มายังไง มันเป็นฟิสิกส์! จบ! เราจะข้ามมันไป) เรียกค่านี้ว่า “propagation speed” ซึ่งขึ้นกับชนิดของตัวนำว่าเป็นแบบไหน เช่น สายไฟAมีค่า propagation speed เป็น 2 x 108 m/sec. แปลว่า ใน 1 วินาทีถ้าข้อมูลวิ่งผ่านตัวนำชนิดนี้ มันจะวิ่งไปได้ไกล 2 x 108 m หรือ “สองร้อยล้านเมตร” O_O

เรื่องยุ่งๆ ของ “หน่วย” (unit)

เรื่องของหน่วยเป็นเรื่องที่น่าสับสนมากเพราะมันจะมีตัวนำหน้า prefix เต็มไปหมด … งั้นเรามาทำความเข้าใจกันก่อน

time

หน่วยวัดเวลามาตราฐานส่วนใหญ่เราก็ใช้ “second หรือ วินาที” นั่นแหละ แต่เนื่องจากคอมพิวเตอร์และอุปกรณ์อิเล็กโทรนิคมันทำงานเร็วมาก! ถ้านับเป็นวิก็คงต้องพูดกันเป็น 0.00005 วิอะไรแบบนั้น

ในเมื่อมันน้อยมากๆ เลยจะใช้ ms (millisec. มิลลิวินาที) แทน
milli มันคือ 10-3 1ms ก็คือ 1ใน1,000วินาที

Data

ส่วนขนาดข้อมูลที่จะส่งจะนับกันเป็น
bits (หรือ byte ที่เท่ากับ 8bits)
การส่งข้อมูลจริงๆ เราส่งแบบ 010111010101 คอมพิวเตอร์รู้จักแค่เลขฐานสอง ซึ่งมันก็สะดวกดีนะเวลาส่งแต่ถ้าให้คนมาคิดก็ต้องปวดหัวกันนิดหน่อย …. คือส่งทีละ bit
ดังนั้นถ้าเขาให้ byte มาก็ต้องเอาไป คูณ8 ให้เป็น bit ก่อน

transmission

ความสามารถให้การให้ข้อมูลผ่านในหนึ่งหน่วยเวลา แปลง่ายๆ คือ
วิ.นึงเนี่ยให้ข้อมูลผ่านไปได้กี่ตัว (อาจจะไม่ใช่วิ.เสมอไป) จะนับเป็น

bps -> b per
s -> bits per sec. -> กี่บิต ต่อ วินาที

แต่คอมมันทำงานเร็วกว่านั้นเยอะ
ใน1วิ มันส่งได้เป็นล้านตัว เขาเลยเพิ่ม Mega เข้าไปเป็น Mbps

106 bits per sec แทน เช่น 100 Mbps แปลว่า ใน 1 วิส่งได้ 100 * 106 bits
นั่นเอง

Total-delay Time

คิดง่ายๆ เลย จากการเอาทุกอย่างข้างต้นมา “บวก” กัน … จบ! ง่าย สั้น เบๆ
เวลาที่หน่วงทั้งหมดมาจาก = เวลาทีอุปกรณ์ทำงาน + เวลาที่ข้อมูลรอคิวเพื่อส่งอยู่ + เวลาที่ใช้ในการส่งข้อมูลออกไป + เวลาที่ข้อมูลวิ่งผ่านสายไฟในโลกจริง

Total Delay = dproc + dqueue + dtrans + dprop

มาดูตัวอย่างการคิดกันดีกว่า

เอารูปตัวอย่างกลับมาอีกครั้ง

ในตัวอย่างมี Sender ที่กำลังจะส่งข้อมูลขนาด 2 GB ไปให้ Receiver ซึ่งระหว่างทางต้องผ่าน node (สมมุติให้เป็น router) ทั้งหมด 3 ตัว

กำหนดให้

  • router แต่ละตัวมีความสามรถ dproc และ dqueue ตัวละ 2มิลลิวินาที (2 ms)
  • router แต่ละตัวอยู่ห่างกัน 100 เมตร (100 m)
  • ตัวนำ medium ชนิดที่ใช้มีค่า propagation speed เป็น 2000 เมตร/วินาที (2000 m/s)
  • แต่ละ link มี bandwidth เท่ากับ 100 เมกะบิต/วินาที (100 Mbps)

จากสูตรมาตราฐานที่ให้ไว้ จะต้องมีการปรับเปลี่ยนซะหน่อยแล้วเพราะในตัวอย่างนี้ มี router ตั้ง 3 ตัว ดังนั้นเวลาที่ได้จะต้อง คูณ3เท่าด้วย แต่ต้องระวังเรื่อง dtrans และ dprop เพราะ 2 ค่านี้เป็นการคิดบน medium ถึงแม้จะมี node 3ตัวแต่ถ้านับว่ามันวิ่งผ่านสายไฟตัวนำกี่ตัวจะได้ 4! (ตามทฤษฏีกราฟ หรือง่ายๆ คือนับเอาเองก็ได้)

ดังนั้นเราจะได้ว่า
Total Delay = 3 * dproc + 3 * dqueue + 4 * dtrans + 4 * dprop
จากข้อกำหนด เรามีค่า dproc และ dqueue เรียบร้อยแล้ว ก็ข้ามมันไปซะนะ

dtrans นั้นมาจากการคิดว่า กว่าจะส่งข้อมูลออกไปหมดต้องใช้เวลาเท่าไหร่ ก็ต้องดูว่า bandwidth มีค่า 100 Mbps แต่ Data ของเรามีขนาด 2 GB มันคนละหน่วยกัน ต้องแปลงก่อน ( b :bitกับ B :byte)
2 GB = 2 G (byte)
= 2 (
109 ) ( 8 * bits )
= 2 * 8 *
109 bit
= 16 *
109 bit

อยากรู้ว่าใช้เวลาเท่าไหร่ก็จับมาหารกัน (ต่อไปเป็นชั่วโมงคณิศาสตร์ เราจะไม่ยุ่ง หึหึ)

16 * 109 bit / 100 Mbps
= 16 * 109 bit / 100 * 106 bit / sec
= 160 sec

แสดงว่า กว่าจะส่งข้อมูลขนาด 2 GB ออกไปได้หมดทั้งตัว ต้องใช้ 160 วินาที

ขั้นต่อไปเราก็ไปหาว่าข้อมูลที่ส่งออกไปแล้วตัวเนี้ยมันใช้เวลาอีกเท่าไหร่ถึงจะวิ่งผ่านตัวนำไปได้
เรารู้ว่า propagation speed ของตัวนำตัวนี้มีค่า 2000 m/s ดังนั้นถ้าสายแต่ละช่วงยาว 100 m ก็ต้องใช้เวลาเดินทางผ่านเป็น

100 m / 2000 m/s = 0.05 s

หลังจากได้ทุกค่าเราก็เอาไปเข้าสูตรข้างบนโน้น

Total Delay = 3 * 2ms + 3 * 2ms + 4 * 160s + 4 * 0.05s
= 6ms + 6ms + 640s + 0.20s
= 640.212s

บวกๆ คูณๆ ไป-มา (คิดไม่ออกก็จิ้มเครื่องคิดเลขนะ) เสร็จแล้วเราก็จะออกมาว่า Data 2 GB ของเรากว่าจะส่งจาก Sender ไปหา Receiver ได้เนี่ยต้องใช้ทั้งหมด 640.212 วินาที

จบแล้วจ้า~

2845 Total Views 3 Views Today
Ta

Ta

สิ่งมีชีวิตตัวอ้วนๆ กลมๆ เคลื่อนที่ไปไหนโดยการกลิ้ง .. ถนัดการดำรงชีวิตโดยไม่โดนแสงแดด ปัจจุบันทำงานเป็นโปรแกรมเมอร์ให้กับเว็บไซต์ยอดนิยมแห่งหนึ่ง งานอดิเรกคือ เขียนโปรแกรม อ่านหนังสือ เขียนบทความ วาดรูป และ เล่นแบดมินตัน

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *