LINUX.ORG.RU

Механизм распределения сетевых ресурсов между сокетами


0

1

Каков механизм распределения сетевых ресурсов между сокетами? Ведь сетевое устройство одно, а сокетов много...И как unix решает, содержимое какого сокета передавать, очередность и т.д.?


Ну, для начала, неплохо бы сказать о каком именно «Unix» идет речь. Далее, определившись с конкретной ОС, лезем с исходники стека TCP/IP и смотрим глазками. Для Linux еще рекомендую посмотреть на tc — там целая подсистема для контроля очередями и правилами, по которым пакеты разбрасываются по этим самым очередям.

Sectoid ★★★★★ ()

самый простой вариант - передавать все по очереди, в каком порядке программы записали в сокет, в том же и отправлять на сетевой интерфейс

Harald ★★★★★ ()

а все проще
пнула приложение ядро - записала в сокет данные
ядро данные завернула в пакетик и тутже отдало своей системе (которой управляется через tc)
в простом случае оно сразуже (в томже самом системном вызове - еще до возвращении управления программе) отдало пакет драйверу сетевой в ядре
драйвер переслал пакет сетевой
у сетевой есть некоторый буфер - из которого они и отсылает пакеты в сеть
особых приоритетов по умолчанию нет - а настраиваются они через tc

это самый нижний уровень
если же интересуют буферы уже tcp то это уже совершенно другая подсистема

ae1234 ★★ ()
Ответ на: комментарий от ae1234

А вообще по-умолчанию, распределение между ними происходит равномерно? И из приложения нельзя никак повлиять на распределение трафика между сокетами? Ну скажем сделать свой трафик менее приоритетным или более?

dump ()
Ответ на: комментарий от dump

по умолчанию - на интерфейсе действует tc настройка вот такая
tc qdisc show dev eth0

qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

тоесть по умолчанию ядро ставит правило pfifo_fast на выход пакетов через сетевую
man pfifo_fast

но чтото мне кажеться ты нетуда копаеш
обычьно такую задачу делает само приложение - просто чаще или реже отсылая данные
ведь сеть с пакетами твоих данных может лиш сделать чтото простое - иль доставить иль отбросить (потерять) - както сверх хитро оно делать неможет (покарйней мере глобальная сеть)

ae1234 ★★ ()
Ответ на: комментарий от dump

по умолчаю
умолчанию это неправильное слово

вот у тебя на компе гигабитная сетевевая - значит по умолчанию твой комп способен выдавать гигбит в сеть
но сеть оказываеться не гигабит а 100 мегабитная - значит аблом всего 100 мегабит
далее провод в провайдера - а провайдер выдает от силы несколько десятков мегабит
вот уже не гигабит а 30 мегабит скажем

поэтому читай про tc + htb + sfq

ae1234 ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.