Размер буфера для получения пакетов в пространстве ядра?

От спецификации POSIX:

Путь, который начинается с двух последовательных наклонных черт, может быть интерпретирован определенным реализацией способом, хотя больше чем две ведущих наклонных черты нужно рассматривать как единственную наклонную черту.

Я принимаю Linux bash сохраняет это поведение в случае, если существует востребованное будущее использование.

(Я всегда слышал, что Al Viro удержал его на месте, потому что существует функция от Plan9, который использует его, и он хотел бы иметь ту функцию в Linux, но я испытываю затруднения при нахождении что функция в моей документации Plan9. Но, так как это находится в bash вместо этого, Al, вероятно, не имеет никакого отношения к нему.)

16
08.08.2011, 14:01
1 ответ

Tcpdump имеет опцию -B установить размер накопительного буфера. Значение затем передается libpcap (библиотека, пользовавшаяся tcpdump, чтобы сделать получение действительного пакета) через pcap_set_buffer_size() функция. Страница справочника Tcpdump не указывает, в каких единицах размер буфера указан с-B, но из источника, кажется, что это - кибибайт.

страница руководства pcap_set_buffer_size() не указывает размер буфера по умолчанию (который используется, если эта функция не вызвана), но снова, из libpcap источника, это, кажется, 2 мебибайт, по крайней мере, на Linux (но скорее всего системно-зависимо).

Относительно пакетной буферизации и отбрасывания, необходимо также обратить внимание на установку snaplen (-s) параметр соответственно. man tcpdump:

-s     Snarf  snaplen bytes of data from each packet rather than the
default of 65535 bytes.  Packets truncated because of a limited snapshot
are indicated in the output with ``[|proto]'', where proto is the name of
the protocol level at which the truncation has occurred. Note that  taking
larger  snapshots both increases the amount of time it  takes  to
process packets and, effectively, decreases the amount of packet buffering.
This may cause packets to be lost. You should limit snaplen to the
smallest number that will capture the protocol information you're
interested in. Setting snaplen to 0 sets it to the default of 65535, for
back-wards compatibility with recent older versions of tcpdump.

Это означает, что с фиксированным размером буфера, можно увеличить число пакетов, которые вписываются в буфер (и таким образом не отбрасываемый) путем уменьшения snaplen размера.

27
27.01.2020, 19:48
  • 1
    я знаю это, является старым потоком (и мне нравится этот ответ), но когда Вы цитируете источники на GitHub, укажите на текущую фиксацию (поскольку основное ответвление может измениться), например: github.com/mcr/tcpdump/blob / …. –  bruno nery 30.07.2012, 23:25
  • 2
    @brunonery, Который не является проблемой с сайтами Exchange Стека, где мы на самом деле поощряем пользователей улучшать ответы, даже если само сообщение довольно старо. (В отличие от форумов, где это осуждено.) –  Léo Lam 03.04.2015, 23:24
  • 3
    зафиксировал устаревший –  Eli Heady 11.01.2016, 19:42

Теги

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