Прежде всего нет никакого глобального значения по умолчанию, полномочия зависят от приложения, которое создает файл. Например, эта небольшая программа C создаст файл '/tmp/foo' с полномочиями 0777, если umask будет 0000 (в любом случае, то полномочия будут 0777 и ~umask):
int main()
{
creat("/tmp/foo", 0777);
return 0;
}
Однако много приложений создают файлы с полномочиями 0666. Это имеет две причины:
Обычно это происходит потому, что компьютер слишком занят для обработки входящего пакета, а интерфейс некуда поставить. Возможно, драйвер не предоставил буферы интерфейсу, прерывание может быть заблокировано слишком долго, серьезные проблемы с ресурсами, подобные этой.
Этого больше не происходит, поскольку реализация ОС и производительность оборудования улучшились, но в первые дни это было реальной проблемой, когда (например) дисковый накопитель мог перегружать шину памяти или ОС приходилось предоставить интерфейсу буфер как часть обслуживания прерывания приема (плохая конструкция оборудования).
Как вы указали, в документации нет ничего о счетчике "пакеты, отброшенные интерфейсом". Итак, нам нужно немного покопаться в исходном коде.
Из исходного кода tcpdump счетчик отбрасывания интерфейса извлекается изstats.ps_ifdrop
:
if (stats.ps_ifdrop != 0) {
if (!verbose)
fputs(", ", stderr);
else
putc('\n', stderr);
(void)fprintf(stderr, "%u packet%s dropped by interface\n",
stats.ps_ifdrop, PLURAL_SUFFIX(stats.ps_ifdrop));
ps_ifdrop
number of packets dropped by the network interface or its driver.
И из исходного кода libpcap:
* "ps_ifdrop" is supported. It will return the number
* of drops the interface reports in /proc/net/dev,
* if that is available.
Таким образом, счетчик tcpdump «пакеты, отброшенные интерфейсом» соответствует количеству пакетов, зарегистрированных как отброшенные в /proc/net/dev
во время tcpdump
захвата .
Значение полей /proc/dev/net
объясняется здесь
Чтобы лучше понять дроп, я бы начал со следующей статистики:
ethtool -S <interface>
grep '' /sys/class/net/<interface>/statistics/*