Назад | Перейти на главную страницу

Что означает параметр кольца в выводе ethtool -g?

Например, если я бегу ethtool -g eth0 в моей системе я получаю следующий результат:

Ring parameters for eth0:
Pre-set maximums:
RX:             4096
RX Mini:        0
RX Jumbo:       0
TX:             4096
Current hardware settings:
RX:             4096
RX Mini:        0
RX Jumbo:       0
TX:             4096

4096 - это размер буфера в байтах, выделенный для одного кадра, при наличии нескольких таких буферов или это количество буферов?

Буферы Tx / Rx - это области памяти, выделенные сетевым адаптером для обработки пакетов трафика. Буферизация происходит, когда объем трафика превышает физическую емкость сетевого адаптера. Увеличение размера буфера поможет избежать потери пакетов при перегрузке адаптера.

Я нашел эту статью, которая помогает проиллюстрировать функцию кольцевого буфера, также известного как. (очередь драйверов), что может помочь понять ее назначение / функцию. Статья называется, Очередь в сетевом стеке Linux.

Этот раздел представляет интерес:

Очередь драйверов (также известная как кольцевой буфер)

Между стеком IP и контроллером сетевого интерфейса (NIC) находится очередь драйверов. Эта очередь обычно реализуется как кольцевой буфер FIFO (first-in, first-out) (http://en.wikipedia.org/wiki/Circular_buffer) - просто думайте об этом как о буфере фиксированного размера. Очередь драйвера не содержит пакетных данных. Вместо этого он состоит из дескрипторов, которые указывают на другие структуры данных, называемые буферами ядра сокетов (SKB, http://vger.kernel.org/%7Edavem/skb.html), которые содержат пакетные данные и используются во всем ядре.

На этой диаграмме показано, где кольцевой буфер соответствует архитектуре:

                    

Согласно этой статье, размер кольцевого буфера контролирует количество SKB (буферы ядра сокета) дескрипторы. Вы можете узнать больше о SKB по предоставленным ссылкам, они показывают структуры данных C, которые составляют SKB.

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