LINUX.ORG.RU

Ищу протокол и C-либы к нему: как UDP но с пакетами произвольного размера.

 , ,


0

4

Т.е. datagram, без подтверждения доставки, но с фрагментацией больших пакетов.

И чтобы сишная либа не выбрасывала хвост пакета если я ей буфер слишком маленький подсуну. Или например, чтобы я мог сначала спросить размер пакета, выделить буфер этого размера, и подсунуть этот буфер в recv().

Есть чё?

★★★★★

Последнее исправление: dimgel (всего исправлений: 1)
Ответ на: комментарий от XyAH

Любопытно, сенькс. Хотя на вскидку слишком фичасто. С ходу: нафига мне connection management с постоянными пингами? Если оно нужно для прочих фичей, то например channels мне тоже не нужен (а если приспичит, то я на два порта сяду).

dimgel ★★★★★
() автор топика

По прочтении ссыки выше чуть включился сонный мозг: может просто заюзаю UDP, и в первых байтах каждого пакета буду гнать его номер, а старшим битом – признак последнего пакета в сообщении. Как в UTF-8. %)

dimgel ★★★★★
() автор топика
Последнее исправление: dimgel (всего исправлений: 1)

И чтобы сишная либа не выбрасывала хвост пакета если я ей буфер слишком маленький подсуну.

Вот так совсем нельзя. Собирай udp в паровоз… или используй tcp, ты уже около него.

aiqu6Ait ★★★★
()
Последнее исправление: aiqu6Ait (всего исправлений: 1)
Ответ на: комментарий от dimgel

SCTP передает датаграммы, а не голый поток байтов, как TCP. Но в нем есть гарантия доставки, мультиплексирование и прочие дополнительные плюшки. Если нужен только UDP с ручной фрагментацией, то наверное можно и простой нумерацией пакетов обойтись

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

Вот и выросло поколение. Вот, нагуглил: «чтобы понять, что означает тот или иной смайл, надо скорчить такую же рожу и прислушаться к ощущениям». Из моих любимых есть ещё Ж8-O.

dimgel ★★★★★
() автор топика
Последнее исправление: dimgel (всего исправлений: 1)
Ответ на: комментарий от dimgel

и в первых байтах каждого пакета буду гнать его номер, а старшим битом – признак последнего пакета в сообщении

Что если по дороге перепутаются? Лучше в одно слово класть какой-нибудь ID, во второе — номер пакета.

Ну или jumbo frames попробовать.

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

Я имею в виду сквозную нумерацию пакетов. Т.к. соединения нет, то сквозная не «в рамках соединения», а вообще. Например timestamp (с базой не 1970-01-01, а где-нибудь рядышком, но больше чем все возможные таймауты протухания пакета) + номер пакета внутри секунды.

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

Выше (в третьем каменте) написал, что таки-рассматриваю.

размер, чуть меньший MTP

ХЗ что такое MTP, но у UDP есть «размер payload, гарантированно пролезающий через все сети». Что-то типа 400 с чем-то байт, а может и нет, не помню.

dimgel ★★★★★
() автор топика
Последнее исправление: dimgel (всего исправлений: 2)
Ответ на: комментарий от dimgel

тьфублин MTU - Maximum transmission unit там да 400 байт пролезут где угодно.
но малый размер мту режет скорость и увеличивает процент лишней работы, посему его стараются сделать побольшеее.

мож у тебя на всей протяженности канала связи есть поддержка jumbo-frame :)

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

мож у тебя на всей протяженности канала связи есть поддержка jumbo-frame :)

А есть какие-нибудь способы детектить? Ну, кроме как послать гигантский пакет с мусором и посмотреть, какая его часть пролезет.

Хотя насколько я понимаю, это в любом случае плохая идея: топология сети может поменяться посреди работы, и что раньше пролезало, вдруг перестанет. Придётся пилить уведомления отправителю, чтобы слал пакеты поменьше, потом перепосылать повторно… так себе упрощение.

увеличивает процент лишней работы

dimgel ★★★★★
() автор топика
Последнее исправление: dimgel (всего исправлений: 2)
Ответ на: комментарий от dimgel

иного не дано :) Path MTU Dyscovery мильон раз все обсосано, написано и допилено.

ахга :) потому pmud обычно работает постоянно/часто и на графике скорости периодические провалы.

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

Понял, за термин&ссылку спасибо.

(в сторону) Как говорится, не было печали… Впрочем, я повторную отправку на уровне приложения один хрен собирался делать, надо будет просто держать в голове ещё этот фактор на будущее. Может там чего готовое есть.

dimgel ★★★★★
() автор топика
Последнее исправление: dimgel (всего исправлений: 2)