Solusi 1:
Jawaban yang dipilih salah/tidak lengkap. Saya menghadapi masalah serupa, jawaban yang dipilih memberikan bantuan, tetapi tidak cukup.
Pertama, perintah berikut tidak terlalu diperlukan.
tc qdisc del dev eth0 root
Ini akan 'menghapus' root qdisc, tetapi segera diganti dengan yang pfifo_fast (agar Anda tidak kehilangan konektivitas).
Perintah kedua:
tc qdisc tambahkan dev eth0 root handle 1:prio
Akan mengganti qdisc pfifo_fast dengan yang prio. Secara default, antrean prio memiliki 3 band (0, 1, 2) yang masing-masing dikelola oleh satu kelas (1:1, 1:2, dan 1:3).
Paket akan dikirim ke salah satu band tersebut dengan menggunakan bidang TOS dari paket IP. Konfigurasi ini ditampilkan saat Anda menjalankan:
tc qdisc ls
melihat nilai 'priomap'.
Kemudian, Anda menambahkan netem qdisc:
tc qdisc tambahkan dev eth0 parent 1:1 handle 2:netem delay 500ms
Dengan perintah ini, Anda menunda semua lalu lintas yang menuju pita 1:1 (hingga filter terpasang).
Namun ada dua peringatan:
- Lalu lintas Anda dapat memiliki nilai TOS yang berbeda dan kemudian dikirim ke band lain.
- Prio qdisc dapat dikonfigurasi sehingga lalu lintas beralih ke band lain.
Berikut ini memecahkan masalah saya agar tidak terpengaruh oleh netem saat filter tidak diterapkan. Alih-alih langkah-langkah di atas, saya melakukan:
tc qdisc tambahkan dev eth0 root handle 1:prio priomap 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Ini akan mengirimkan semua lalu lintas secara default ke pita 1:3.
Kemudian, saya menambahkan aturan untuk menunda lalu lintas:
tc qdisc tambahkan dev eth0 parent 1:1 handle 10:netem delay 100ms 10ms
Ini membuat qdisc di band 0, tetapi karena semua lalu lintas masuk ke band 3, itu tidak memengaruhi saya.
Setelah itu, saya menambahkan filter:
filter tc tambahkan protokol dev eth0 ip induk 1:0 prio 1 u32 cocokkan ip dst 10.0.0.1/32 cocokkan ip dport 80 0xffff flowid 1:1
Sekarang dengan filter, hanya IP/port yang dipilih yang akan terpengaruh, karena kami mengalihkan lalu lintas yang dipilih ke pita 0.
Semua lalu lintas lainnya terus tidak terpengaruh karena terus mengalir ke jalur 3.
Solusi 2:
Ok, saya memecahkan masalah saya sendiri. Ternyata jika Anda mengeksekusi 3 baris pertama di atas ("tc qdisc"), itu akan menunda semua paket karena belum ada filter. Baris ke-4 mengubahnya menjadi hanya menunda paket dari alamat IP tunggal itu. Garis filter tambahan dapat ditambahkan untuk menambahkan alamat IP tambahan ke daftar "tertunda". Jadi:jangan membuat baris "penundaan netem" tanpa filter yang mengarah ke sana.