2010-03-26 6 views
0

Je travaille sur un projet lié au réseau et j'utilise DTLS (TLS/UDP) pour sécuriser les communications. En lisant les spécifications pour le DTLS, j'ai noté que le DTLS exige que le drapeau DF soit réglé (Do not Fragment).Découverte de la taille maximale des paquets

Sur mon réseau local si j'essaie d'envoyer un message de plus de 1500 octets, rien n'est envoyé. Cela fait parfaitement sens. Sur Windows le sendto() rapporte un succès mais rien n'est envoyé.

Je ne peux évidemment pas désactiver le drapeau DF manuellement car il est obligatoire pour DTLS et je ne suis pas sûr que la limite de 1500 octets (MTU?) Puisse changer dans certaines situations. Je suppose que ça peut. Donc, ma question est: "Y at-il un moyen de découvrir cette limite?" utilisant des API?

Sinon, quelle serait la valeur la plus basse possible?

Mon logiciel fonctionne sous UNIX (Linux OSX/MAC) et Windows solutions pour les systèmes d'exploitation différents pour chaque système d'exploitation sont les bienvenus;)

Un grand merci.

+0

Lancez-vous votre propre implémentation DTLS ou autre chose? La RFC suggère qu'ils devraient vérifier l'erreur "fragmentation nécessaire et DF set" et réviser le MTU estimé en conséquence. http://www.rfc-editor.org/rfc/rfc4347.txt –

+0

Non, je ne lance pas ma propre implémentation DTLS. J'utilise OpenSSL. J'ai besoin d'obtenir le MTU pour fragmenter les paquets avant de les envoyer. Donc, j'ai besoin d'un moyen de m'assurer que mes paquets sont assez petits pour ne pas tomber. – ereOn

Répondre

3

Il y a un MTU minimum qui doit être supporté - 576 octets, y compris les en-têtes IP. Donc, si vous gardez vos paquets en dessous, vous n'avez pas à vous soucier de PMTU-D (c'est ce que DNS fait).

+0

Je n'étais pas au courant de la taille minimale de l'image. Je suppose que je n'ai pas d'autre choix que de fragmenter mes images en 576 octets. Merci pour cela! – ereOn

+0

@ereOn: Souvenez-vous qu'il s'agit de paquets IP de 576 octets - ce qui inclut les en-têtes IP et UDP, et tout ce qui est nécessaire à la gestion des DTLS par paquet. – caf

0

Vous devrez probablement 'l'accorder automatiquement' en envoyant une plage de tailles de paquet à la cible, et voir lesquelles arrivent. think binary_search ...

+0

Merci, mais j'aimerais qu'il y ait un moyen "standard" de le faire. Je n'ai pas vraiment envie de réinventer MTU Path Discovery. – ereOn

Questions connexes