ฉันอ่านต้นฉบับPostScript ของ SIGCOMM '97เกี่ยวกับ HFSC มันเป็นเรื่องทางเทคนิคมาก แต่ฉันเข้าใจแนวคิดพื้นฐาน แทนที่จะให้เส้นโค้งบริการแบบเส้นตรง (เช่นเดียวกับอัลกอริธึมการตั้งเวลาอื่น ๆ ) คุณสามารถระบุเส้นโค้งการให้บริการแบบนูนหรือเว้าได้ดังนั้นจึงเป็นไปได้ที่จะแยกแบนด์วิดท์และการหน่วงเวลาออก อย่างไรก็ตามแม้ว่าบทความนี้จะกล่าวถึงชนิดของอัลกอริทึมการจัดตารางเวลาที่ใช้ (เรียลไทม์และลิงค์แบ่งปัน) มันมักจะกล่าวถึงหนึ่งโค้งต่อชั้นเรียนการตั้งเวลา (decoupling จะทำโดยระบุโค้งนี้เพียงหนึ่งโค้งที่จำเป็นสำหรับ )
ตอนนี้ HFSC ได้รับการดำเนินการสำหรับ BSD (OpenBSD, FreeBSD, ฯลฯ ) โดยใช้กรอบการจัดตารางเวลา ALTQและมันได้รับการดำเนินการลินุกซ์โดยใช้กรอบการจัดตารางเวลา TC (ส่วนหนึ่งของ iproute2) การใช้งานทั้งสองเพิ่มเส้นโค้งบริการเพิ่มเติมสองเส้นซึ่งไม่ได้อยู่ในเอกสารต้นฉบับ! เส้นโค้งบริการแบบเรียลไทม์และเส้นโค้งบริการขีด จำกัด บน อีกครั้งโปรดทราบว่ากระดาษต้นฉบับกล่าวถึงอัลกอริธึมการตั้งเวลาสองแบบ (เรียลไทม์และลิงค์แชร์) แต่ในบทความนั้นทั้งคู่ทำงานร่วมกับเส้นโค้งบริการเดียว ไม่เคยมีเส้นโค้งบริการที่เป็นอิสระสองเส้นสำหรับเส้นโค้งใดเส้นหนึ่งตามที่คุณพบใน BSD และ Linux
ยิ่งแย่ไปกว่านั้น ALTQ บางรุ่นดูเหมือนว่าจะเพิ่มลำดับความสำคัญของคิวเพิ่มเติมให้กับ HSFC (ไม่มีสิ่งใดที่มีความสำคัญในเอกสารต้นฉบับเช่นกัน) ฉันพบ BSD HowTo หลายแห่งที่กล่าวถึงการตั้งค่าลำดับความสำคัญนี้ (แม้ว่าหน้า man ของการเผยแพร่ ALTQ ล่าสุดจะไม่รู้พารามิเตอร์ดังกล่าวสำหรับ HSFC ดังนั้นอย่างเป็นทางการจึงไม่มีอยู่)
ทั้งหมดนี้ทำให้การจัดตารางเวลา HFSC มีความซับซ้อนยิ่งกว่าอัลกอริทึมที่อธิบายไว้ในเอกสารต้นฉบับและมีบทเรียนมากมายบนอินเทอร์เน็ตที่มักจะขัดแย้งกันซึ่งคนหนึ่งอ้างว่าตรงกันข้ามกับอีกคนหนึ่ง นี่อาจเป็นเหตุผลหลักว่าทำไมไม่มีใครดูเหมือนจะเข้าใจจริงๆว่าการตั้งเวลา HFSC ทำงานอย่างไร ก่อนที่ฉันจะสามารถถามคำถามเราจำเป็นต้องมีตัวอย่างบางประเภท ฉันจะใช้ง่าย ๆ อย่างที่เห็นในภาพด้านล่าง:
alt text http://f.imagehost.org/0177/hfsc-test-setup.png
นี่คือคำถามบางข้อที่ฉันไม่สามารถตอบได้เพราะบทเรียนจะขัดแย้งกัน:
ฉันต้องทำอะไรกับเส้นโค้งแบบเรียลไทม์? สมมติว่า A1, A2, B1, B2 ทั้งหมดเป็น 128 kbit / s link-share (ไม่มีเส้นโค้งแบบเรียลไทม์สำหรับหนึ่ง) จากนั้นแต่ละอันจะได้รับ 128 kbit / s หากรูทมี 512 kbit / s เพื่อกระจาย (และ A และ B มีทั้ง 256 kbit / s) ใช่ไหม? เพราะเหตุใดฉันจึงให้ A1 และ B1 เป็นเส้นโค้งแบบเรียลไทม์กับ 128 kbit / s สิ่งนี้จะเป็นสิ่งที่ดีสำหรับ เพื่อให้ทั้งสองมีความสำคัญสูงกว่า? จากเอกสารต้นฉบับฉันสามารถให้ความสำคัญกับพวกเขาได้มากขึ้นโดยใช้เส้นโค้งนั่นคือสิ่งที่ HFSC ให้ความสำคัญ โดยให้ทั้งสองคลาสเป็นเส้นโค้งของ [256kbit / s 20ms 128kbit / s] ทั้งสองมีลำดับความสำคัญเป็นสองเท่ากว่า A2 และ B2 โดยอัตโนมัติ (ยังคงรับเพียง 128 kbit / s โดยเฉลี่ย)
แบนด์วิดท์ตามเวลาจริงนับรวมกับแบนด์วิดท์ลิงก์แชร์หรือไม่ เช่นถ้า A1 และ B1 มีเพียง 64kbit / s เรียลไทม์และ 64kbit / s แบนด์วิธแชร์ลิงค์หมายความว่าเมื่อพวกเขาให้บริการ 64kbit / s ผ่านเรียลไทม์ความต้องการแชร์ลิงค์ของพวกเขาก็พอใจเช่นกัน รับแบนด์วิดท์ที่มากเกินไป แต่ให้เพิกเฉยสักวินาที) หรือนั่นหมายความว่าพวกเขาได้รับอีก 64 kbit / s ผ่านลิงค์แชร์ ดังนั้นแต่ละคลาสจะมีแบนด์วิดธ์ "ข้อกำหนด" ของเรียลไทม์รวมถึงลิงค์แชร์ หรือคลาสนั้นมีความต้องการสูงกว่าเส้นโค้งแบบเรียลไทม์หากเส้นโค้งลิงค์ร่วมกันสูงกว่าเส้นโค้งเรียลไทม์ (ข้อกำหนดลิงค์ปัจจุบันแบ่งปันแชร์เท่ากับความต้องการลิงค์แชร์ร่วมที่ระบุลบแบนด์วิดท์ตามเวลาจริง class)?
เส้นโค้งขีด จำกัด บนนำไปใช้กับเรียลไทม์เช่นเดียวกับการแชร์ลิงก์หรือทั้งสองอย่าง แบบฝึกหัดบางคำบอกทางเดียวบางคนพูดแบบอื่น บางคนเรียกร้องขีด จำกัด บนคือสูงสุดสำหรับแบนด์วิดท์แบบเรียลไทม์ + แบนด์วิดท์ลิงค์แชร์? ความจริงคืออะไร?
สมมติว่า A2 และ B2 มีทั้ง 128 kbit / s มันสร้างความแตกต่างหรือไม่ถ้า A1 และ B1 เป็น 128-link link-share เท่านั้นหรือ 64 kbit / s เรียลไทม์และ 128 kbit / s link-share และถ้าเป็นเช่นนั้น แตกต่างกันอย่างไร
ถ้าฉันใช้เส้นโค้งแบบเรียลไทม์แยกเพื่อเพิ่มลำดับความสำคัญของชั้นเรียนทำไมฉันต้องใช้ "เส้นโค้ง" เลย? ทำไมค่าแฟลตและลิงค์แชร์ไม่ใช่ค่าเรียลไทม์? ทำไมเส้นโค้งทั้งสอง ความต้องการเส้นโค้งนั้นชัดเจนในกระดาษดั้งเดิมเพราะมีเพียงคุณลักษณะเดียวต่อประเภทนั้น แต่ตอนนี้มีคุณลักษณะสามอย่าง (เรียลไทม์ลิงก์แชร์และขีด จำกัด บน) ฉันจะต้องใช้เส้นโค้งสำหรับแต่ละรายการอย่างไร เหตุใดฉันจึงต้องการให้รูปร่างโค้ง(ไม่ใช่แบนด์วิดท์เฉลี่ย แต่ความลาดชัน) จะแตกต่างกันสำหรับปริมาณการใช้งานแบบเรียลไทม์และลิงก์แบ่งปัน
ตามเอกสารเล็ก ๆ น้อย ๆ ที่มีอยู่ค่าของเส้นโค้งแบบเรียลไทม์จะถูกละเว้นสำหรับคลาสภายใน (คลาส A และ B) พวกมันจะถูกนำไปใช้กับคลาสของใบไม้ (A1, A2, B1, B2) เท่านั้น หากเป็นจริงทำไมการกำหนดค่าตัวอย่าง ALTQ HFSC (ค้นหา3.3 การกำหนดค่าตัวอย่าง ) ตั้งค่าเส้นโค้งแบบเรียลไทม์ในคลาสภายในและอ้างว่าตั้งค่าอัตราการรับประกันของคลาสภายในเหล่านั้นหรือไม่ นั่นไม่มีจุดหมายอย่างสมบูรณ์หรือ (หมายเหตุ: pshare ตั้งค่ากราฟการแชร์ลิงค์ใน ALTQ และเสียดสีโค้งเรียลไทม์คุณสามารถเห็นสิ่งนี้ในย่อหน้าด้านบนการกำหนดค่าตัวอย่าง)
บทเรียนบางบทบอกว่าผลรวมของเส้นโค้งแบบเรียลไทม์ทั้งหมดอาจไม่สูงกว่า 80% ของความเร็วของเส้น แต่บางคนบอกว่าจะต้องไม่สูงกว่า 70% ของความเร็วของเส้น เป็นที่หนึ่งที่ถูกต้องหรือพวกเขาอาจผิดทั้งคู่?
บทช่วยสอนหนึ่งกล่าวว่าคุณจะลืมทฤษฎีทั้งหมด ไม่ว่าสิ่งต่างๆจะทำงานอย่างไร (ตัวกำหนดตารางเวลาและการกระจายแบนด์วิดท์) ให้จินตนาการถึงสามเส้นโค้งตาม "รูปแบบความคิดที่เรียบง่าย" ดังต่อไปนี้: แบบเรียลไทม์คือแบนด์วิดท์ที่รับประกันว่า link-share คือแบนด์วิดท์ที่คลาสนี้ต้องการที่จะพึงพอใจอย่างเต็มที่ แต่ไม่สามารถรับประกันความพึงพอใจได้ ในกรณีที่มีแบนด์วิดท์มากเกินไปคลาสอาจได้รับแบนด์วิดท์มากกว่าที่จำเป็นเพื่อให้เป็นที่พอใจ แต่ก็ไม่อาจใช้เกินขีด จำกัด บนได้ เพื่อให้ใช้งานได้ทั้งหมดผลรวมของแบนด์วิดท์แบบเรียลไทม์ทั้งหมดอาจไม่เกิน xx% ของความเร็วของสาย (ดูคำถามข้างต้นเปอร์เซ็นต์แตกต่างกันไป) คำถาม: สิ่งนี้มีความแม่นยำมากขึ้นหรือน้อยลงหรือความเข้าใจผิดทั้งหมดของ HSFC?
และถ้าข้อสันนิษฐานข้างต้นมีความแม่นยำจริง ๆ การจัดลำดับความสำคัญของโมเดลนั้นอยู่ที่ไหน เช่นทุกคลาสอาจมีแบนด์วิดท์แบบเรียลไทม์ (รับประกัน) แบนด์วิดท์ลิงก์แชร์ (ไม่รับประกัน) และอาจมีขีด จำกัด บน แต่บางคลาสมีความต้องการลำดับความสำคัญสูงกว่าคลาสอื่น ในกรณีนี้ฉันยังต้องจัดลำดับความสำคัญอย่างใดแม้ในเวลาจริงการจราจรของชั้นเรียนเหล่านั้น ฉันจะจัดลำดับความสำคัญโดยความชันของเส้นโค้งหรือไม่ และถ้าเป็นเช่นนั้นเส้นโค้งใด เส้นโค้งแบบเรียลไทม์? เส้นโค้งลิงค์แบ่งปัน? เส้นโค้งขีด จำกัด บน? พวกเขาทุกคน? ฉันจะให้ความชันเดียวกันหรือแต่ละอันต่างกันและหาวิธีความชันที่ถูกต้องได้ไหม?
ฉันยังไม่ได้สูญเสียความหวังว่ามีอย่างน้อยมือที่เต็มไปด้วยผู้คนในโลกนี้ที่เข้าใจ HFSC อย่างแท้จริงและสามารถตอบคำถามเหล่านี้ได้อย่างถูกต้อง และการทำเช่นนั้นโดยไม่แย้งกันในคำตอบน่าจะดีจริงๆ ;-)