การจัดคิวแบบถ่วงน้ำหนักแบบถ่วงน้ำหนักและการตรวจจับแบบล่วงหน้าถ่วงน้ำหนักมีความสัมพันธ์กันอย่างไร


10

ฉันพยายามเข้าใจว่าระบบ QoS ทำงานอย่างไรและฉันไม่แน่ใจว่า WFQ และ WRED จะโต้ตอบกันอย่างไร

ตอนแรกฉันคิดว่า WFQ เป็นกลไกการเข้าคิวและ WRED นั้นเป็นกลไกการหลีกเลี่ยงความแออัด WFQ ควรกำหนดเวลาแพ็คเก็ตในคิวและ WRED อยู่ที่นั่นเพื่อปล่อยพวกเขาเมื่อคิวเต็ม ถ้าฉันตั้งค่า QoS บนเช่นสวิตช์ L3 ฉันจะตั้งกลไกการเข้าคิวและกลไกการหลีกเลี่ยงความแออัดดังนั้นในทางทฤษฎีฉันสามารถมี WFQ และ WRD ทำงานร่วมกันได้ ตัวอย่างเช่นเอกสารนี้ดูเหมือนจะบ่งบอกว่าฉันพวกเขาจะตั้งค่าในลักษณะดังกล่าว เอกสารอื่น ๆ ของ Cisco กล่าวถึงว่าฉันสามารถใช้งานได้อย่างอิสระ

จากนั้นฉันต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการทำงานและเริ่มค้นหาอินเทอร์เน็ต เป็นผลให้ตอนนี้ฉันไม่รู้ว่าพวกเขาคืออะไรและพวกเขาทำงานอย่างไร

บางไซต์ (อย่างน้อยก็เพื่อความเข้าใจในเนื้อหาของฉัน) อ้างว่าอัลกอริทึมการจัดตารางแพ็คเก็ตและอัลกอริทึมการหลีกเลี่ยงความแออัดนั้นเหมือนกัน ยกตัวอย่างเช่นในนี้บทความวิกิพีเดียพวกเขาจะอยู่ในกลุ่มเดียวกัน บางบทความสุ่มกล่าวถึงว่าฉันสามารถใช้ WFQ XOR WRED

ดังนั้นสิ่งที่ฉันอยากถามว่าเกี่ยวข้องกับ WFQ และ WRED อย่างไร ฉันจะใช้อย่างใดอย่างหนึ่งเมื่อใดและเมื่อทั้งสองถ้าเป็นไปได้


1
wfq และ wred ไม่มีความสัมพันธ์ซึ่งกันและกันนอกเหนือจากการแบ่งปันการใช้คำภาษาอังกฤษเดียวกัน
Mike Pennington

1
"จากนั้นฉันต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการทำงานของพวกเขาและเริ่มค้นหาอินเทอร์เน็ตดังนั้นตอนนี้ฉันจึงไม่ทราบเลยว่ามันคืออะไรและทำงานอย่างไร" สิ่งนี้อธิบายถึง 99.98% ของประสบการณ์ของฉันที่พยายามเข้าใจ QoS
Nanban Jim

คำตอบ:


10

Weighted Fair Queuing (WFQ) เป็นชื่อที่แสดงถึงอัลกอริทึมการเข้าคิว การจัดคิวจะใช้เมื่อมีความแออัดบนอินเทอร์เฟซ โดยปกติจะตรวจพบว่าแหวนส่งสัญญาณ (TX-Ring) เต็ม ซึ่งหมายความว่าอินเทอร์เฟซไม่ว่างส่งแพ็คเก็ต การเข้าคิวไม่ได้เกิดขึ้นนอกเสียจากว่ามีความแออัดของอินเทอร์เฟซ ในบางกรณีขนาดของแหวน TX สามารถจัดการได้ TX-ring ขนาดเล็กช่วยเพิ่มพลังให้คิวซอฟต์แวร์มากขึ้นว่าแพ็คเก็ตใดจะถูกส่งออกก่อน แต่ก็ไม่ค่อยมีประสิทธิภาพ TX-ring ที่ใหญ่เกินไปจะทำให้คิวซอฟต์แวร์เกือบไร้ประโยชน์และนำไปสู่ความล่าช้าและความกระวนกระวายใจที่สูงขึ้นสำหรับแพ็กเก็ตที่สำคัญ

อัลกอริทึมการจัดคิวเริ่มต้นมักจะเป็น First In First Out (FIFO) ซึ่งหมายความว่าแพ็กเก็ตจะถูกส่งตามลำดับที่มาถึงอินพุทของอินเทอร์เฟซ สิ่งนี้มักไม่เป็นที่ต้องการเนื่องจากบางแพ็กเก็ตควรจัดลำดับความสำคัญ

เป็นเรื่องปกติที่ลูกค้าจะซื้อบริการจากผู้ให้บริการอินเทอร์เน็ต (ISP) ที่ทำหน้าที่ย่อย นั่นคือลูกค้าซื้อบริการ 50 Mbit / s แต่ส่วนต่อประสานทางกายภาพนั้นทำงานที่ 100 Mbit / s ในกรณีนี้จะไม่มีความแออัด แต่ ISP จะ จำกัด ปริมาณการรับส่งข้อมูลจากลูกค้า เพื่อแนะนำความแออัดของเทียมในกรณีเหล่านี้สามารถใช้ shaper ได้

ดังนั้นขณะนี้มีความแออัดสามารถใช้อัลกอริทึมการจัดคิว โปรดทราบว่าอัลกอริทึมการจัดคิวไม่มีแบนด์วิดท์เพิ่มเติมใด ๆ พวกเขาเพียงแจ้งให้เราตัดสินใจว่าแพ็กเก็ตใดมีความสำคัญต่อเรามากขึ้น WFQ เป็นอัลกอริทึมที่ใช้พารามิเตอร์หลายตัวและทำการตัดสินใจตามนั้น อัลกอริทึมนั้นค่อนข้างซับซ้อนและใช้น้ำหนัก (ลำดับความสำคัญของ IP) ขนาดของแพ็คเก็ตและเวลาที่กำหนดเป็นพารามิเตอร์ มีคำอธิบายอย่างละเอียดจาก INE ที่นี่ WFQ เป็นตัวเลือกที่ดีหากไม่ต้องการเล่นซอมากเกินไปเนื่องจากมีแบนด์วิดท์เพียงพอสำหรับการไหลขนาดเล็กเช่น SSH, Telnet, เสียงและนั่นหมายความว่าการถ่ายโอนไฟล์จะไม่ขโมยแบนด์วิดท์ทั้งหมด

Weighted Random Early Detection (WRED) เป็นกลไกการหลีกเลี่ยงความแออัด WRED วัดขนาดของคิวขึ้นอยู่กับค่าลำดับที่มาก่อนและเริ่มปล่อยแพ็กเก็ตเมื่อคิวอยู่ระหว่างขีด จำกัด ขั้นต่ำและขีด จำกัด สูงสุด การกำหนดค่าจะตัดสินว่า 1 ในทุก ๆ แพ็กเก็ต N จะถูกดร็อป WRED ช่วยป้องกันการซิงโครไนซ์ TCP และความอดอยาก TCP เมื่อ TCP สูญเสียแพ็คเก็ตมันจะเริ่มช้าและหากเซสชัน TCP ทั้งหมดสูญเสียแพ็กเก็ตในเวลาเดียวกันพวกเขาอาจกลายเป็นซิงโครไนซ์ซึ่งมีกราฟดังนี้:

การซิงโครไนซ์ TCP

อย่างที่สามารถเห็นได้ว่าหาก WRED ไม่ได้ถูกกำหนดค่ากราฟจะระเบิดอย่างเต็มที่จากนั้นจึงเงียบจากนั้นก็ระเบิดเต็มรูปแบบและอื่น ๆ WRED ให้อัตราการส่งโดยเฉลี่ยที่มากกว่า เป็นสิ่งสำคัญที่จะต้องทราบว่า UDP ไม่ได้รับผลกระทบจากการทิ้งแพ็กเก็ตเนื่องจากไม่มีกลไกการตอบรับและมีการใช้งานหน้าต่างเลื่อนเช่น TCP ดังนั้นจึงไม่ควรใช้ WRED กับคลาสที่ใช้ UDP เช่นคลาสที่จัดการ SNMP, DNS หรือโปรโตคอลอื่น ๆ ที่ใช้ UDP

ทั้ง WFQ และ WRED สามารถและควรปรับใช้ร่วมกัน


2
สวัสดีแดเนียลคำตอบที่ดี ไม่ควรเป็น WFQ (ไม่ใช่ WQF) นอกจากนี้ควรพูดถึงว่า WRED ไม่มีประสิทธิภาพสำหรับ UDP และคุณควรหลีกเลี่ยงการใช้กับคลาสที่ใช้ UDP เช่น UDP Voice
Mike Pennington

ขอบคุณไมค์ ไม่แน่ใจว่าทำไมฉันพิมพ์ WFQ ผิดฉันได้แก้ไขแล้ว ยังทำบันทึกย่อบน UDP คุณให้โพสต์ที่ยอดเยี่ยมเสมอ
Daniel Dib

8

ก่อนอื่นอย่าเชื่อทุกสิ่งที่คุณอ่านบนอินเทอร์เน็ต ;-)

บางครั้งอัลกอริทึม (หรือวิธีที่พวกมันถูกนำไปใช้ทางร่างกาย) ไม่เหมาะสมอย่างเป็นระเบียบในหมวดหมู่ทางทฤษฎี สิ่งที่คุณเรียกว่ามันสำคัญน้อยกว่าการทำความเข้าใจว่ามันทำอะไร

จุดรวมของ WFQ (หรืออัลกอริทึมการจัดตารางเวลาอื่น ๆ ) คือการแชร์แบนด์วิดท์ลิงก์ที่ จำกัด ระหว่างกระแสต่างๆ WFQ พยายามจัดสรรแบนด์วิดท์ตามสัดส่วนให้กับแต่ละโฟลว์ CBWFQ ทำเช่นเดียวกันกับ "คลาส" แต่ละคลาส ในโลกที่สมบูรณ์แบบด้วยคิวไม่ จำกัด และหน่วยความจำไม่ จำกัด นั่นคือสิ่งที่คุณต้องการ - คุณแบ่งปันแบนด์วิดท์และทุกคนมีความสุข

แต่เนื่องจากอุปกรณ์ไม่มีคิวและหน่วยความจำไม่ จำกัด จึงต้องสร้าง "ทางลัด" บางรายการ เนื่องจากคิวมีขนาด จำกัด จึงมีความเสี่ยงที่คิวจะเติมทำให้หางลดลงและการประสานการจราจร หากคิวของฉันล้นฉันจะไม่ควบคุมแบนด์วิดท์อีกต่อไป

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

วิศวกรของ Cisco ที่สดใสบางคนสังเกตว่าสามารถใช้คิวน้อยลง (ฮาร์ดแวร์ที่ง่ายกว่า) และสุ่มทราฟฟิกของการรับส่งข้อมูลที่ระดับความลึกคิวที่ต่างกัน WRED จะลดทราฟฟิกจากคิวที่ระดับความลึกต่างกันขึ้นอยู่กับประเภทของทราฟฟิก แม้ว่าคุณอาจเรียก WRED ว่าเป็นกลไกการหลีกเลี่ยงความแออัดเนื่องจากความลึกที่การรับส่งข้อมูลลดลงนั้นแตกต่างกันไปตามประเภทของทราฟฟิกเอฟเฟกต์คือชนิดที่แตกต่างกัน ดังนั้นมันจึงทำหน้าที่เป็นอัลกอริทึมการตั้งเวลา คุณพูดว่า po-tay-to และฉันพูดว่า po-tah-toe

ข้อแตกต่างอีกประการหนึ่ง: FQ และ WFQ ทำงานกับการรับส่งข้อมูลทุกประเภทเนื่องจากเป็นหลักจะนับเป็นไบต์ RED และ WRED ใช้งานได้กับ TCP เท่านั้นเพราะขึ้นอยู่กับกลไกการควบคุมการไหลของ TCP เพื่อชะลอการรับส่งข้อมูลและป้องกันไม่ให้คิวล้น

(หมายเหตุ: เพื่อประโยชน์ในการอธิบายฉันไม่สนใจคิวลำดับความสำคัญและ LLQ นั่นเป็นคำตอบอื่น)

ฉันเห็นด้วยกับทุกสิ่งที่ไมค์พูดด้วย


1
คำตอบที่ดีเยี่ยมและความเห็น
generalnetworkerror

-1

นี่คือตัวอย่างของ CBWFQ และ WRED:

นโยบายแผนที่ออก

ระดับ
ความสำคัญของเสียงร้อยละ 20


แบนด์วิดธ์วิดีโอคลาสเปอร์เซ็นต์ 30


แบนด์วิดท์ของคลาส P1 เปอร์เซ็นต์ 10 การ
สุ่มตรวจจับ dscp ตาม
การตรวจจับ dscp af31 26 40 10


แบนด์วิดธ์ระดับ P2 ร้อยละ 15
การตรวจจับแบบสุ่ม dscp ตาม
การตรวจจับแบบสุ่ม dscp af21 24 40 10

คลาสเริ่มต้นระดับ
ยุติธรรมแฟร์คิว
แบบสุ่มตรวจจับตาม dscp


น่าเศร้าที่ตัวอย่างนี้ไม่ตอบคำถามของเขา เมื่อไม่เหมือนกันอย่างไร
Mike Pennington

สำหรับมุมมองนี้เป็นเหมือนการถามคนขับรถแข่งว่าเทอร์โบชาร์จเจอร์และอัตราทดเกียร์นั้นเกี่ยวข้องกันอย่างไรและให้เขาขับคุณไปรอบสนามแข่งโดยไม่พูดอะไร หากคุณเข้าใจการโต้ตอบ (และ / หรือขาดอยู่แล้ว) ก็ดี ... แต่คุณจะไม่ถามคำถาม
Nanban Jim
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.