Saya memiliki pembentuk yang bagus, dengan filter hash, dibangun di jembatan linux. Singkatnya, br0
koneksi external
dan internal
antarmuka fisik, paket yang ditandai VLAN dijembatani "secara transparan" (maksud saya, tidak ada antarmuka VLAN di sana).
Sekarang, kernel yang berbeda melakukannya secara berbeda. Saya bisa salah dengan rentang kernel yang tepat, maafkan saya. Terima kasih.
2.6.26
Jadi, dalam debian, 2.6.26 dan lebih tinggi (hingga 2.6.32, saya percaya) --- ini berfungsi:
tc filter add dev internal protocol 802.1q parent 1:0 prio 100 \
u32 ht 1:64 match ip dst 192.168.1.100 flowid 1:200
Di sini, "kernel" cocok dengan dua byte dalam bidang "protokol" dengan 0x8100, tetapi menghitung awal paket ip sebagai "posisi nol" (maaf untuk bahasa Inggris saya, jika saya agak tidak jelas).
2.6.32
Sekali lagi, di debian (saya tidak membangun kernel vanilla), 2.6.32-5 --- ini berfungsi:
tc filter add dev internal protocol 802.1q parent 1:0 prio 100 \
u32 ht 1:64 match ip dst 192.168.1.100 at 20 flowid 1:200
Di sini, "kernel" cocok dengan protokol yang sama, tetapi menghitung offset dari awal header protokol ini --- saya harus menambahkan 4 byte ke offset (20, bukan 16 untuk alamat dst). Tidak apa-apa, sepertinya lebih logis, bagi saya.
3.2.11, stabil terbaru sekarang
Ini berfungsi --- seolah-olah tidak ada tag 802.1q sama sekali:
tc filter add dev internal protocol ip parent 1:0 prio 100 \
u32 ht 1:64 match ip dst 192.168.1.100 flowid 1:200
Masalahnya adalah bahwa saya tidak dapat menemukan cara untuk mencocokkan tag 802.1q sejauh ini.
Mencocokkan tag 802.1q di masa lalu
Saya bisa melakukan ini sebelumnya sebagai berikut:
tc filter add dev internal protocol 802.1q parent 1:0 prio 100 \
u32 match u16 0x0ed8 0x0fff at -4 flowid 1:300
Sekarang aku tidak dapat mencocokkan 802.1q tag dengan at 0
, at -2
, at -4
, at -6
atau seperti itu. Masalah utama yang saya miliki nol hit count --- filter ini tidak sedang diperiksa sama sekali, "protokol yang salah", dengan kata lain.
Tolong, siapa saja, bantu saya :-)
Terima kasih!
protocol all
memberi sayaRTNETLINK answers: Invalid argument
(kernel 3.3.4 di sini). Saya akan menguji ini dengan kernel yang lebih baru. Terima kasih.