В Erlang очень просто отправить пакет UDP
, то есть использовать gen_udp:open()
для создания сокета, а затем использовать gen_udp:send()
для отправки данных.
Однако по умолчанию стек Linux TCP/IP
устанавливает флаг «не фрагментировать» (DF) в заголовке IP, если размер IP-пакета не превышает размер MTU. Если размер превышает размер MTU
, пакет UDP
будет фрагментирован.
Есть ли способ не устанавливать флаг DF только для пакета UDP
?
Я знаю, что на языке C для очистки флага DF можно использовать следующий код. Но я не мог найти способ в Erlang.
int optval=0;
if(-1 == setsockopt(sockfd,IPPROTO_IP,IP_MTU_DISCOVER,&optval,sizeof(optval))) {
printf("Error: setsockopt %d\n",errno);
exit(1);
}
Спасибо