Несоответствия с Linux tc фильтруют соответствие u32 на пакетной полезной нагрузке данных - кто-то может объяснить?

Я наконец взломал его. Поставщик не был доступен для quering портов на сервере W2K, но решение было просто, в конце концов, это. Я просто экспортировал ключи реестра для портов на текущей конфигурации и очистил ее в Excel. Вуаля! Используя отчет, сгенерированный от очередей печати, созданных на сервере, я объединил данные и могу теперь скомпилировать полные материально-технические ресурсы устройств с очередями на моем сервере печати W2K.

Результат.

0
задан 21 July 2010 в 12:29
2 ответа

Найденный ответом. Наличие меток времени TCP НА представляет 12-байтовую дополнительную информацию заголовка, приводящую к различию в смещении.

Можно переключить их вкл\выкл в Linux путем выполнения этого:

echo 0 > /proc/sys/net/ipv4/tcp_timestamps
echo 1 > /proc/sys/net/ipv4/tcp_timestamps

Также посмотрите, включения - выключения ли они путем выполнения:

cat /proc/sys/net/ipv4/tcp_timestamps
0
ответ дан 5 December 2019 в 17:37

Я обнаружил, что это может решить проблему.

http://linux-tc-notes.sourceforge.net/tc/doc/cls_u32.txt

Смещения заголовка


Заголовок IP (и другие заголовки) имеют переменную длину. Этот создает проблему, если вы пытаетесь использовать "совпадение" для просмотра значение в последующем заголовке - вы не знаете, где оно. Это не невозможная проблема, потому что каждый заголовок в IP Пакет содержит поле длины. Функция "смещения заголовка" в u32 позволяет извлечь эту длину из пакета, а затем добавьте его к смещению, указанному в опции "match".

Вот как это работает. Напомним, что вариант совпадения выглядит как это:

match u32 VALUE MASK at OFFSET

Я сказал ранее, что OFFSET сообщает ядру, какое слово в пакет для сравнения с VALUE. Это заявление было упрощением. Два других значения могут быть добавлены к OFFSET, чтобы определить, какое слово использовать. Оба эти значения начинаются с 0, но их можно изменить. когда опция «ссылка» вызывает другой список фильтров. Любая модификация made применяется только тогда, когда вызываемый список фильтров выполняется как старые значения восстанавливаются, если вызываемый список фильтров не классифицируйте пакет. Вот два значения и имена, которые я назовите их:

permoff     This value is unconditionally added to every OFFSET
        that is done in the destination link, ie that one
    that is called.  This includes calculations of new
    permoff's and tempoff's.  Permoff's are cumulative
    in that if the destination link calls another link
    and calculates a new permoff, the result is added to
    this one.

tempoff A "match" option in the destination link can
        optionally add this value its OFFSET.  Tempoff's are
    temporary, in that it does not apply to any links the
    destination link calls.  It also does not effect the
    calculation of OFFSET's for new permoff's and
    tempoff's.

Время для примера. Рассмотрим эту команду:

# tc filter add dev eth0 parent 999:0 protocol ip prio 99 u32 \
    link 1: offset at 0 mask 0f00 shift 6 plus 0 eat \
match ip protocol 6 ff

Выражение соответствия выбирает пакеты TCP (это протокол IP 6). Если у нас есть протокол 6, мы выполняем фильтр 1: 0. Теперь для остальной части it:

offset  This signals that we want to modify permoff or tempoff
        if the link is executed.  If this is not present,
    neither permoff nor tempoff are effected - in other
    words the target of the link inherits the current
    permoff and tempoff.

at 0    This says the 16 bit word that contains the value we
        are going to use to calculate permoff or tempoff lives
    offset 0 the IP packet - ie at the start of the packet.
    This offset must be even.  If not specified 0 is used.

mask 0f00   This mask (which is in hex) is bit-wise anded with the
        16 bit word extracted from the packet header.  It
    isolates the header length from the rest of the
    information in the word.  If not specified 0 is used
    for the extracted value.

shift 6 This says the word extracted is to be divided by 64
        after being masked.  If not present the value is not
    shifted.

plus 0  After extracting the word, masking it and dividing it by
        64, this value is now added to it.  If not present is
    assumed to be 0.

eat     If this is present we are calculating permoff, and the
        result of the calculation above is added to it.  Tempoff
    is set to 0 in this case.  If this is not present we are
    calculating tempoff, and the result of the calculation
    becomes tempoff's new value.  Permoff is not altered in
    this case.
0
ответ дан 5 December 2019 в 17:37

Теги

Похожие вопросы