TCP-слияние
TCP Fusion — это функция обеспечения обратной связи TCP, которая реализована в стеке протокола управления передачей (TCP) в Oracle операционных системах Solaris -10 и Solaris-11, а также в ряде программных проектов, основанных на базе кода с открытым исходным кодом OpenSolaris . проект. Идея тривиальна: соединение клиента и сервера через локальный интерфейс обратной связи внутри одной системы не требует использования всего стека протоколов TCP/IP для обмена данными. Поэтому обеспечьте более быстрый путь передачи данных за счет объединения двух конечных точек.
Исходный код хорошо документирован в inet/tcp/tcp_fusion.c, где четко указано:
TCP fusion — это путь передачи данных без протокола для TCP-соединений с обратной связью. Объединение двух локальных конечных точек TCP происходит во время установления соединения. Для успешного слияния должны быть выполнены различные условия (подробнее см. в tcp_fuse()). Если это не удается, мы возвращаемся к обычному пути данных TCP; если это удастся, обе конечные точки продолжат использовать tcp_fuse_output() в качестве пути передачи. tcp_fuse_output() помещает данные приложения непосредственно в очередь приема партнера; никакая обработка протокола не задействована. Синхронизация осуществляется с помощью очереди и мьютекса tcp_non_sq_lock. Одним из требований для успешного слияния является то, что обе конечные точки должны использовать одну и ту же очередь. Это гарантирует, что ни одна из сторон не сможет исчезнуть, пока другая сторона все еще отправляет данные. Информация управления потоком обрабатывается вне очереди, поэтому tcp_non_sq_lock должен удерживаться при касании tcp_flow_stopped.
Эту функцию можно включить или отключить через файл конфигурации /etc/system для ядра Solaris или genunix, и единственная необходимая строка — это «set ip:do_tcp_fusion = 0x0», которая отключает эту функцию или устанавливает значение FALSE, а значение «0x1» для шестнадцатеричного значения TRUE. .
См. https://github.com/illumos/illumos-gate/blob/master/usr/src/uts/common/inet/tcp/.