Необработанный сокет позволяет вам связываться с протоколами нижнего уровня, такими как Ethernet, IP и т. Д. Да, снижение может дать вам некоторые преимущества, однако вам нужно сбалансировать это с тем, что вы теряете.
В этом случае вы указываете, что сервер написан для использования протокола Udp, поэтому на проводнике связь должна быть Udp. Теперь, если вы идете использовать сырой сокет, вам нужно будет обязательно отправить данные приложения, инкапсулированные в Udp-пакет. Вам также нужно будет написать код, чтобы убедиться, что вы подчиняетесь протоколу Udp и конечному автомату, чтобы на сервере ваш клиент отображался как просто еще один клиент Udp. Выполнение всего этого требует написания большого количества кода и имеет некоторые недостатки в увеличенном обслуживании, увеличении стоимости, чтобы заставить его работать правильно и т. Д.
Я не полностью прочитал документ, который вы указали выше, но вопрос, который вы задали себе, - это , можете ли вы получить прибыль, полученную в этом исследовательском документе, и скопировать их для своего сценария?
На мой взгляд, вы должны сначала попытаться выяснить, почему ваш клиент так медленно. Каковы ваши требования? Есть ли у вас какие-либо показатели относительно того, что представляет собой хороший, быстрый клиент? Если бы я был вами, я бы сначала измерил текущую реализацию, имея в виду некоторые метрики, которые полезны для сценария, например, переданные Bytes/sec и т. Д. Затем я хотел бы профилировать клиента, чтобы увидеть, где он тратит слишком много времени, и попытайтесь выяснить, могу ли я уменьшить накладные расходы и сделать это намного быстрее.
Чтобы подвести итоги, найдите сбережения в верхней части стека (например, в своем приложении), прежде чем спускаться в стек. Если ваше приложение не написано хорошо, то независимо от того, насколько вы низко стоите, вы не увидите ожиданий, которые вы ожидаете.
Кроме того, какая часть работы udp выиграет от rawsockets - отправки или получения? – osgx
Производительность скорости достигается за счет снижения уровня IP, т. Е. Маршрутизации, фильтрации, управления портами и т. Д. Хорошим направлением для просмотра будет RDMAoE, то есть RDMA через Ethernet, поговорить с Mellanox. –
Steve-o, это программное обеспечение (RDMAoE) или аппаратное обеспечение? Нужно ли, чтобы обе машины находились в одной подсети (между ними только переключатели)? – osgx