QoS เป็นตัวกำหนดชุดของคุณสมบัติของประสิทธิภาพของการติดต่อ หรือเรียกว่าเป็นการส่งข้อมูลในเครือข่ายโดยรับประกันว่าการส่งข้อมูลจะเป็นไปตามคุณภาพหรือเงื่อนไขที่ต้องการ เช่น ดีเลย์ แบนด์วิดธ์ การเปลี่ยนแปลงของดีเลย์ (jitter) อัตราการสูญหายของข้อมูล (loss) หลักการทั่วไปของ QoS Routing จึงเป็นการตรวจวัดและควบคุมการไหลของข้อมูลให้เป็นไปตามเงื่อนไขที่กำหนด โดยวิธีการพื้นฐานของ QoS มีอยู่ 2 แบบด้วยกัน คือ Reservation และ Prioritization
Reservation หลักการคือการรับประกันด้วยวิธีจองทรัพยากรของเครือข่าย ก่อนที่จะเริ่มส่งข้อมูล ทรัพยากรที่จำเป็นต้องจองก็คือ บัฟเฟอร์ , แบนด์วิดธ์ และ ดีเลย์ ในส่วนของการคำนวณนั้นจะเน้นไปที่การหาขนาดของบัฟเฟอร์และแบนด์วิดธ์ที่เหมาะสมที่จะรักษาดีเลย์ระหว่างต้นทางไปยังปลายทางไม่ให้เกินที่กำหนด ในแต่ละ hop สามารถแยกดีเลย์ออกมาได้ 4 ส่วน คือ
1.Queueing Delay คือดีเลย์ที่เกิดจากการรอคิวส่ง สำหรับในเราท์เตอร์นั้น คือ ช่วงเวลาที่ข้อมูลที่ถูกเก็บไว้ในหน่วยความจำสามารถเก็บได้มากหรือน้อยขึ้นกับการจัดคิว และขนาดของคิว ถ้าคิวขนาดใหญ่จะมีโอกาสที่หน่วยความจำจะเก็บข้อมูลได้มากทำให้ค่าเฉลี่ยของดีเลย์สูง ถ้าคิวสั้นค่าเฉลี่ยของดีเลย์จะน้อยกว่าแต่ทำให้อัตรการสูญเสียมีมากขึ้นเนื่องจากแพ็คเกตถูกละทิ้งจากระบบ
2.Processing Delay คือดีเลย์ที่เกิดจากการประมวลผลของเราท์เตอร์ เช่น การ lookup routing table การ load/transfer memory การติดต่อ I/O ระหว่างซีพียู กับ network interface
3.Transmission Delay คือดีเลย์ที่เกิดจากอัตราการส่งข้อมูล ค่านี้จะมีความสัมพันธ์กับแบนด์วิดธ์ ถ้าแบนด์วิดธ์กว้างดีเลย์จะน้อย
4.Propagation Delay คือดีเลย์ของสื่อที่ใช้ส่งข้อมูล เป็นคุณสมบัติเฉพาะตัวของสื่อนั้น ๆ
ปัจจุบันมีเฟรมเวิร์กที่ใช้หลักการของ Reservation ในเครือข่ายอินเทอร์เน็ตเรียกว่า Integrated Services ซึ่งใช้ Resource Reservation Protocol (RSVP) ในการจองทรัพยากรเครือข่าย เส้นทางของการส่งข้อมูลระหว่างต้นทางไปยังปลายทางจะไม่แตกต่างจากการส่งข้อมูลแบบ Best Effort แต่ Integrated Services สามารถรับประกันได้ว่าดีเลย์ในการส่งจากต้นทางไปถึงปลายทางจะไม่เกินค่า ๆ หนึ่งแน่นอน ยกเว้นกรณีที่เส้นทางมีการเปลี่ยนแปลง ปัญหาใหญ่ของ Integrated Services คือ Scalability เพราะเครือข่ายต้องแบ่งทรัพยากรบางส่วนไปใช้กับ QoS Routing โดยเฉพาะถ้าใช้งาน QoS Routing มาก ทรัพยากรจะหมดไป นอกจากนี้ การจองทรัพยากรด้วย RSVP ไม่ได้กระทำอย่างถาวร จึงต้องมีการส่งแพ็คเกตของ RSVP ไปยังเราท์เตอร์เพื่อรีเฟรชการจองทรัพยากรตลอดเวลา จึงมี processing overhead สูง ปกติแล้ว Integrated Services จึงจำกัดให้ใช้งานเฉพาะใน Autonomous System (AS) เดียวกันเท่านั้น
Prioritization เป็นการจัดลำดับความสำคัญ คือข้อมูลที่มีความสำคัญมากจะได้รับการส่งก่อน หรือให้การเซอร์วิสก่อน การเลือกระดับความสำคัญจะเป็นไปตามชนิดของข้อมูลเป็นหลัก ซึ่งการส่งข้อมูลที่ต้องการดีเลย์น้อย ๆ จะมีระดับความสำคัญสูง ข้อดีของวิธีการนี้คือ ไม่ต้องมีการจองทรัพยากรของเครือข่าย จึงสามารถใช้งานได้ในวงกว้าง บางครั้งการทำงานแบบ Prioritization จะเรียกว่าเป็น Class-of-Service Routing (CoS Routing) เพราะแพ็คเกตจะถูกแบ่งออกเป็นคลาส หรือระดับความสำคัญ ข้อมูลในคลาสเดียวกันจะมีความสำคัญเท่ากัน ใช้ทรัพยากรทั้งหมดร่วมกัน ซึ่งเป็นข้อเสีย เนื่องจากวิธีนี้ไม่สามารถรับประกันได้แน่นอนว่าการจัดส่งจะเป็นไปตามเงื่อนไข
Queueing Discipline
Priority Queueing เป็นรูปแบบหนึ่งที่ปรับเปลี่ยนมาจาก FIFO คือ เราเตอร์จะสามารถเลือกแพ็คเกตได้จากคิวหลายคิว และ จะมีการกำหนดความสำคัญให้กับแต่ละคิว ซึ่งจะแตกต่างกันไป เราเตอร์จะส่งแพ็คเกตโดยเลือกจากคิวที่มีความสำคัญมากที่สุดเป็นอันดับแรก จากนั้นจะเลือกคิวที่มีความสำคัญรองลงไปตามลำดับ และในแต่ละคิวจะมีการจัดการกับแพ็คเกตในคิวนั้นแบบ FIFO
Class-Based Queueing (CBQ)
CBQ จะมี class ทั้งหมดหลาย class มีการกำหนด default class โดยในแต่ละclass จะมีคิวของมันเองและมีการกำหนดค่าแชร์แบนวิธด์ให้กับแต่ละ class ด้วย โดยที่ class ลูกนั้นสามารถขอยืมใช้แบนวิธด์ของ class พ่อแม่ได้
จากรูป classifier จะจำแนกแพ็คเกตที่มาถึงไปยัง class ที่เหมาะสม โดย estimator จะเป็นตัวตรวจสอบว่า class มีการใช้แบนวิธด์เกินค่าที่กำหนดไว้หรือไม่ ถ้าเกิน estimator จะทำการ กำหนด overlimit ไว้ที่ class นั้นๆ ส่วน scheduler จะพิจารณาแพ็คเกตต่อไปที่จะถูกส่งจาก class อื่นซึ่งขึ้นอยู่กับระดับความสำคัญและสถานะของ class โดยจะใช้ weighted-round robin scheduling ระหว่าง class ที่มีระดับความสำคัญเท่ากัน
Alternate Queueing (ALTQ)
ALTQ เป็น Queueing Framework ที่อนุญาตให้สามารถใช้กลุ่มของ Queueing Disciplines ได้ เช่น CBQ , RED , and WFQ โดย ALTQ สามารถ Implement ได้บน Free BSD
ALTQ ถูกออกแบบให้สนับสนุนในหลาย ๆ Queueing Disciplines กับองค์ประกอบที่แตก ต่างกัน เช่น Scheduling Strategies, Packet Drop Strategies, Buffer Allocation Sreategies, Multiple Priority Levels, and Non-Work Conserving Queues. ALTQ แต่ละแบบสามารถแชร์กันได้ในบางส่วน เช่น Flow Classification, Packet Handling, and Device Driver Support ดังนั้น เราสามารถที่จะ Implement Queueing Discipline อันใหม่ โดยที่ไม่ต้องจำเป็นต้องรู้รายละเอียดของการ Implement Kernel
แพ็คเกตจะส่งผ่านมายัง ip_output หลังจากนั้นจะถูกเติม ip header แล้วจึงถูกส่งต่อไปที่ if_output ซึ่งทำหน้าที่ enqueue แพ็คเกตเข้าสู่ transmission queue หรือเรียกอีกชื่อหนึ่งว่า ifqueue structure เมื่อ output link ว่างพร้อมที่จะส่งแพ็คเกตได้ แพ็คเกตจะถูก dequeue ออกจาก ifqueue structure โดยฟังก์ชั่น if_start ซึ่ง ALTQ ได้มีการจัดเตรียมฟังก์ชั่น enqueue และฟังก์ชั่น dequeue ทำหน้าที่แทน if_output และ if_start ซึ่งฟังก์ชั่น dequeue และ enqueue นี้จะถูกกำหนดไว้ให้กับ queueing discipline โดยเฉพาะ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น