ฉันจะจัดลำดับความสำคัญแบนด์วิดท์ของเครือข่ายในแต่ละแอปพลิเคชันได้อย่างไร


20

มีวิธีใดใน Linux ที่จะให้แอปพลิเคชั่นที่เฉพาะเจาะจงมีลำดับความสำคัญมากขึ้น / น้อยลงสำหรับแบนด์วิดท์เครือข่ายหรือไม่ สิ่งที่คล้ายกับการniceให้ความสำคัญของ CPU

บริบท:ขณะนี้ฉันใช้การเชื่อมต่อแบนด์วิดท์ต่ำมาก (ดองเกิล 3G) ในขณะที่ฉันทำการอัปเกรดที่มีขนาดใหญ่โดยใช้aptitudeมันเป็นไปไม่ได้จริงที่จะเรียกดูเว็บตั้งแต่การดาวน์โหลดอัปเกรดกำลังเชื่อมต่ออินเทอร์เน็ตของฉัน

ดังนั้นสิ่งที่ฉันต้องการจะทำคือลดความสำคัญของแบนด์วิดท์เครือข่ายของaptitudeกระบวนการ (และลูก ๆ ) เพื่อไม่ให้ใช้แบนด์วิดท์มากเกินไปในขณะที่กระบวนการอื่นกำลังใช้งานอยู่


ความถนัดใช้พอร์ตเฉพาะสำหรับการเชื่อมต่อหรือไม่? ถ้าเป็นเช่นนั้นคุณสามารถกำหนดลำดับความสำคัญของพอร์ตนั้นให้ต่ำลงโดยใช้ QoS ในเราเตอร์ของคุณ (หากเราเตอร์ของคุณมีความสามารถนั้น)
MaQleod

@MaQleod: 1) ไม่มันใช้ HTTP สำหรับการดาวน์โหลด 2) เนื่องจากฉันอยู่ในเครือข่าย 3G ฉันไม่มีเราเตอร์ (ก็ไม่ใช่คนที่ฉันสามารถเข้าถึงได้)
งาน

ฉันแค่ให้อัตรา จำกัด ความเร็วในการดาวน์โหลดของความถนัด / apt แทนที่จะพยายามเล่นโดยให้ความสำคัญกับมัน ตั้งค่าไว้ที่ครึ่งหนึ่งของแบนด์วิดท์สูงสุดเพื่อไม่ให้มีบางอย่างสำหรับการเรียกดู ฉันพยายามระบุเหตุผลที่ไม่ได้เล่นกับ QoS ในความคิดเห็นต่อคำตอบของ Catalin
vtest

คำตอบ:


8

คุณสามารถใช้ force_bind เพื่อกำหนดลำดับความสำคัญสำหรับซ็อกเก็ตทั้งหมดของแอปพลิเคชันและจากนั้นใช้ Linux QoS (คำสั่ง tc) คุณสามารถกำหนดแอปพลิเคชันให้กับแถบความสำคัญ ตรวจสอบไฟล์ README เพื่อดูตัวอย่าง

http://kernel.embedromix.ro/us/

ข้อจำกัดความรับผิดชอบ: ฉันเป็นผู้เขียน

ตัวอย่าง:

14: Force priority (between 0 and 6 for non-root users). You can
        use 'tc' command from iproute to set-up 'prio' qdisc and to
        assign prio to queues:
        # 0. setup
        export FORCE_NET_VERBOSE=1
        export LD_PRELOAD=${LD_PRELOAD}:/usr/lib/force_bind.so
        # 1. Make sure you have a 'prio' qdisc attached to eth0, for example:
        tc qdisc add ev eth0 root handle 1: prio
        # 2. Assign applications to classed (bands):
        export FORCE_NET_PRIO=6 # interactive, band 0
        your_voip_program_here
        export FORCE_NET_PRIO=0 # best effort, band 1
        your_mail_program_here
        export FORCE_NET_PRIO=2 # bulk, band 2
        your_remote_backup_program_here
        # 3. Run tc statistics so you can see the classification:
        tc -s class show dev eth0

แน่นอนคุณอาจใช้ htb หรือ qdisc อื่น ๆ


3
ขอบคุณสำหรับข้อจำกัดความรับผิดชอบ! ด้วยจิตวิญญาณของผู้ใช้ระดับสูงมันจะดีมากถ้าคุณสามารถแสดงตัวอย่างที่นี่ให้ทุกคนได้เห็น!
slhck

1
การดาวน์โหลดสร้างทราฟฟิกขาเข้า QoS สามารถกำหนดนโยบายปริมาณการรับส่งข้อมูลได้ซึ่งไม่สามารถควบคุมปริมาณข้อมูลขาเข้าได้ เพื่อให้สามารถใช้งานได้จำเป็นต้องควบคุมเราเตอร์ระหว่างโฮสต์และอินเทอร์เน็ต
vtest

2
trickle(ให้บริการอย่างน้อยในอูบุนตูและเดเบียน) trickle -d 1 -u 1 aptitudeจะทำเพื่อคุณเช่นกันและอาจจะมีบิตง่ายต่อการใช้งาน: ตัวเลขเป็นกิโลไบต์
taneli

1
เกี่ยวกับทราฟฟิกขาเข้าเป็นไปได้ไหมที่จะทำให้ทราฟฟิกขาเข้าบางประเภทมีลำดับความสำคัญสูงกว่าประเภทอื่นแม้ว่าคุณจะไม่สามารถควบคุมเราเตอร์ได้ @vtest
CMCDragonkai

3
@taneli: trickleสามารถใช้เพื่อตั้งค่าขีด จำกัด แบนด์วิดท์ แต่ไม่สามารถใช้เพื่อกำหนดลำดับความสำคัญระหว่างกระบวนการ
a3nm
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.