Score:0

การสร้างการรับส่งข้อมูล tc ด้วย HTB และ CQB ทำให้เกิดช่องว่างในการส่งแพ็กเก็ตที่ไม่สอดคล้องกัน

ธง hk

ปัญหา: เมื่อใช้ tc HTB หรือ CQB เพื่อสร้างทราฟฟิก แพ็กเก็ตสองแพ็กเก็ตแรกที่ส่งหลังจากเว้นช่วงระยะหนึ่งจะถูกส่งกลับไปกลับมาตามที่บันทึกไว้ในบันทึก pcap ฉันมีคอมพิวเตอร์ระดับกลางที่มี Ubuntu 18.4 ที่เปิดใช้งานการส่งต่อเครือข่าย ฉันรัน tc ด้วย HTB เพื่อกำหนดทราฟฟิกให้มีเอาต์พุตบิตเรตคงที่บนพอร์ตขาออก ลูกค้าร้องขอชิ้นที่มีขนาดตัวแปรจากเซิร์ฟเวอร์ เซิร์ฟเวอร์ส่งข้อมูลที่เข้ารหัสการถ่ายโอนก้อนที่มีช่องว่าง 200ms ระหว่างแต่ละก้อนไปยังไคลเอนต์ เมื่อการตั้งค่าของฉันมีคอมพิวเตอร์ระดับกลาง แพ็กเก็ตเหล่านี้จะถูกส่งผ่านทราฟฟิก Shaper บนคอมพิวเตอร์ระดับกลางเพื่อให้ได้บิตเรตคงที่ที่ 500kbps เมื่อฉันปิดใช้งาน offload (TSO และ GRO) แต่ละ n ไบต์จะถูกแบ่งออกเป็นเฟรมโดย pcap แพ็กเก็ต 1448B ส่วนใหญ่มีช่องว่างเวลาใกล้เคียงกับ 24.224ms ซึ่งคาดว่าจะอยู่ที่ 500kbps

ปัญหา: แม้ว่าเฟรมจะมาถึงตามลำดับ แต่ช่องว่างของเวลาที่มาถึงไม่สอดคล้องกัน แพ็กเก็ตขนาดใหญ่ที่สอง (1448B) หลังจากช่องว่าง 200 มิลลิวินาทีมักจะกลับมาเกือบชนกับแพ็กเก็ตแรกเสมอ แพ็กเก็ตสุดท้ายเป็นกลุ่ม (654B) มาถึงโดยมีความล่าช้า (24.224ms แทนที่จะเป็น 10.464ms ในตัวอย่างในรูปที่แนบมา) ภาพหน้าจอของการกำหนดเวลา ช่องว่างเวลาระหว่างแพ็กเก็ต

คำสั่ง TC กับ HTB:

tc qdisc เดล dev enx00e04c080ecf รูท 2> /dev/null > /dev/null
tc qdisc เพิ่ม dev enx00e04c080ecf ตัวจัดการรูท 1:0 htb เริ่มต้น 2
คลาส tc เพิ่ม dev enx00e04c080ecf พาเรนต์ 1:1 classid 1:2 อัตรา htb 500kbit ceil 500kbit ระเบิด 10 cburst 10 prio 2
ตัวกรอง tc เพิ่ม dev enx00e04c080ecf โปรโตคอล ip parent 1:0 u32 จับคู่ ip dst 192.168.2.103 flowid 1:2

หากฉันไม่ได้ทำการคำนวณผิดพลาด ฉันคิดว่าปัญหาอาจเกิดจากการจัดการโทเค็นใน tc ที่ฉันใช้สำหรับการสร้างทราฟิก ฉันคิดว่าโทเค็นถูกสะสมในช่วงเวลาว่าง และเมื่อได้รับแพ็กเก็ตถัดไป มันจะส่งแพ็กเก็ตสองแพ็กเก็ตกลับไปกลับมา จากอัตราการบริโภคโทเค็นแพ็กเก็ตที่สามตกลง หากนี่คือสิ่งที่เกิดขึ้น ฉันต้องการทราบว่ามีวิธีหลีกเลี่ยงการใช้โทเค็นที่สะสมสำหรับแพ็กเก็ตที่สองในกลุ่มหรือไม่

ฉันลองใช้ตัวเลือกต่าง ๆ ในคำสั่ง tc ฉันยังลองใช้ CQB - คำสั่งด้านล่าง อ้างอิง : https://lartc.org/lartc.html#AEN2233

ข้อสังเกต: ลดการระเบิด = 10 เพิ่มช่องว่างระหว่างแพ็กเก็ตที่หนึ่งและที่สองเล็กน้อย tc ด้วย CQB:

tc qdisc เดล dev enx00e04c080ecf รูท 2> /dev/null > /dev/null
tc qdisc เพิ่ม dev enx00e04c080ecf ที่จับรูต 1: cbq avpkt 5000 แบนด์วิดท์ 10mbit
คลาส tc เพิ่ม dev enx00e04c080ecf พาเรนต์ 1: classid 1:1 อัตรา cbq 500kbit จัดสรร 5000 prio 5 แยกขอบเขต
tc class เพิ่ม dev enx00e04c080ecf parent 1:1 classid 1:10 อัตรา cbq 500kbit allot 5000 prio 1 avpkt 5000 ขอบเขต
คลาส tc เพิ่ม dev enx00e04c080ecf parent 1:1 classid 1:20 อัตรา cbq 500kbit allot 5000 avpkt 5000 prio 2
ตัวกรอง tc เพิ่ม dev enx00e04c080ecf โปรโตคอล ip parent 1:0 u32 จับคู่ ip dst 192.168.2.103 flowid 1:10
ตัวกรอง tc เพิ่ม dev enx00e04c080ecf parent 1: โปรโตคอล ip prio 13 u32 จับคู่ ip dst 0.0.0.0/0 flowid 1:20

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา