Моя цель - использовать WebSockets с собственным стеком TCP/IP или ISO/OSI. Я хочу загрузить баланс всех запросов от клиента на сервер приложений (поскольку мы знаем, что WebSockets может работать только с одним сервером, который установил соединение). Я хочу иметь возможность подключиться к одному узлу и отправлять запросы на любой узел.Как написать собственный стек TCP/IP или ISO/OSI для использования WebSockets без использования рукопожатия каждый раз?
Алгоритм является следующим:
1. Клиент устанавливает соединение с одним из узлов за балансировщиком нагрузки.
2. Клиент отправляет данные через WebSocket в балансировщик нагрузки.
3. Балансировщик нагрузки получает данные и отправляет их на любой сервер.
4. Сервер видит данные и отправляет их в приложение. Даже если соединение не установлено, сервер не отбрасывает пакеты, он просто отправляет пакеты в приложение.
В этой ситуации мы можем легко загрузить балансные запросы WebSockets. Я попытался понять, как переписать стек TCP/IP и передать пакеты прямо в приложение в пользовательском пространстве, но я смущен.
Нужно ли нам использовать DPDK? Да, тогда вы можете показать минимальный пример того, как получать и отправлять пакеты напрямую или как пропускать проверку соединения? Если нет, то что нам нужно использовать в этой ситуации?
Перезаписать стек TCP/IP? Удачи с этим. Если вы описываете фактическую проблему (не описывая смысл решения), мы можем помочь вам с гораздо более практичным решением. Нам также нужно знать, какой тип клиента это (браузер, пользовательский код и т. Д.) И каковы его возможности. – jfriend00
FYI, вы не можете отправлять пакеты в приложение, которое еще не подключено к вашему серверу или оно не является сервером, к которому вы можете подключиться. Должно быть какое-то чувство связи для отправки по TCP. Существуют и другие протоколы, такие как UDP (и другие) с различными свойствами/характеристиками, но вы не дали нам никакого реального представления о реальной проблеме или ограничениях ваших двух конечных точек, чтобы мы знали, что еще можно предложить. – jfriend00
Мне нужно обработать пакеты в пользовательском пространстве. По умолчанию транспортный уровень обрабатывается ОС Linux, но DPDK может обрабатывать его в пользовательском пространстве. Я хочу немного изменить протокол TCP. Назовем это Changed_TCP. Клиенты - это браузеры. Но я не знаю, с чего начать. – Alexandr