วิธีคำนวน 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 วินาที

จบแล้วจ้า~

3661 Total Views 3 Views Today
Ta

Ta

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

ใส่ความเห็น

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