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

Linux.

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

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

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

Спасибо

2 ответа

Решение

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

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

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

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

Другие вопросы по тегам