Вот главная проблема.
Просто я начал реализовывать в виде необработанного сокета необходимые коды ниже. Сокет привязан к определенному интерфейсу.
socketfd=socket(AF_PACKET,SOCK_RAW,htons(ETH_P_ALL));
strncpy(ifopts.ifr_name,interfaceName,IFNAMSIZ-1);
ioctl(socketfd,SIOCGIFINDEX,&ifopts);
sll.sll_family=AF_INET;
sll.sll_ifindex=ifopts.ifr_ifindex;
sll.sll_protocol=htons(ETH_PALL);
bind(socketfd,&sll,sizeof(sll));
Вот как я читаю и размер mtu составляет 9000
while(true)
recvfrom(socketfd,buffer,9000,0,0,0);
Без какого-либо процесса на пакете я получил ~ 150 Мбит / с.
Это проблема, которую мне нужно решить. Я понимаю, что ссылка nload или ip -s показывает фактическую скорость; но я не могу достичь этих цифр около 6-7 Гбит / с.
~ 150 Мбит / с — это очень смешная скорость для меня. Мне нужно увеличить производительность настолько, насколько я могу сделать, используя один процессор. Я постараюсь использовать PF_INET, если вы хотите, я могу поделиться результатом этого.
Вот ответ.
Спасибо всем.
Других решений пока нет …