Назад | Перейти на главную страницу

TCP - производительность TAP

Linux.

Есть ли потеря производительности от использования устройства с ответвлением по сравнению с аппаратным, например eth0?

Цель состоит в том, чтобы создать стек tcp / ip в пользовательском пространстве и по возможности избегать использования ядра.

Я хотел бы быть уверен, что разработка на основе устройства с краном - это правильное решение.

Спасибо

Да, есть. Использование устройства разветвления вызывает переключение контекста между клиентским процессом и процессом, в котором находится устройство разветвления. Это также вызывает дополнительные копии, поскольку данные необходимо скопировать из клиентского процесса в ядро, а затем из ядра в держатель ответвителя.

Однако Linux довольно хорош в переключении контекста, а копии в кэше довольно дешевы, поэтому накладные расходы могут быть достаточно небольшими. Я бы порекомендовал вам реализовать свой стек в пользовательском пространстве, используя tap, а затем выполнить некоторый тест и профилирование, чтобы решить, стоит ли переносить ваш код в ядро.

Я отправляю это как ответ из-за недостаточных разрешений на комментирование.

По моему опыту, VPN через tcp - тап в лучшем случае был ужасным по сравнению с беспроводными соединениями из-за природы TCP. При переключении на UDP больше не было таймаутов соединения - даже лучше с устройством tun. Я бы посоветовал вам протестировать при плохих сетевых соединениях как TCP, так и UDP и нажать / tun.