Я работаю над системой as close to real-time
, насколько это возможно в Linux, и мне нужно отправить около 600-800 байт в TCP-пакете, как только я получу определенный пакет.
Для наилучших возможных задержек я хочу, чтобы этот пакет был отправлен непосредственно из ядра, вместо того, чтобы полученный пакет проходил весь путь до пользовательского пространства и приложения, а затем возвращался обратно.
Если бы я был в Windows, я бы написал фильтр NDIS, который кэшировал бы пакет для отправки и соответствующие параметры, чтобы он проверял полученный пакет и при совпадении запускал предварительно кэшированный пакет в сеть без передачи принятый пакет до более высоких уровней.
Итак, мой вопрос: какой ближайший аналог фильтра NDIS в Linux?
Я читал о netfilter и, возможно, я бы использовал его, но я не знаю, лучший ли это из возможных способов.
Что еще я мог бы сделать, чтобы добиться минимально возможных задержек?
Мой текущий чисто пользовательский код дает мне около 80-100 микросекунд на процессоре Intel Xeon 3,7 ГГц под управлением Ubuntu 10.04 на ядре 2.6.3x.