2010-03-26 8 views
0

네트워크 관련 프로젝트를 진행하고 있으며 통신 보안을 위해 DTLS (TLS/UDP)를 사용하고 있습니다.최대 패킷 크기 발견

DTLS의 사양을 읽었을 때, DTLS를 사용하려면 DF 플래그 (단편화하지 않음)를 설정해야합니다.

내 로컬 네트워크에서 1500 바이트보다 큰 메시지를 보내려고하면 아무 것도 보내지 않습니다. 그건 완벽하게 이해가됩니다. Windows에서 sendto()는 성공을보고하지만 아무것도 보내지지 않습니다.

DF 플래그를 수동으로 해제 할 수 없습니다. DTLS에는 필수 항목이며 어떤 상황에서는 1500 바이트 제한 (MTU?)이 변경 될 수 있는지 확실하지 않기 때문에 분명히 플래그를 수동으로 설정할 수 없습니다. 나는 그것이 할 수 있다고 생각한다.

제 질문은 "이 한계를 발견 할 수있는 방법이 있습니까?" API 사용?

그렇지 않은 경우 가능한 가장 낮은 값은 무엇입니까?)

많은 감사를,

내 소프트웨어는 UNIX (리눅스/MAC OSX) 및 Windows 운영체제 각 OS에 대한 그래서 다른 솔루션은 환영에서 실행됩니다.

+0

자신 만의 DTLS 구현을 사용하고 있습니까? RFC는 "조각 필요 및 DF 설정"오류를 확인하고 그에 따라 예상 MTU를 수정해야한다고 제안합니다. http://www.rfc-editor.org/rfc/rfc4347.txt –

+0

아니요, 저는 자체 DTLS 구현을 진행하고 있지 않습니다. 나는 OpenSSL을 사용하고있다. 패킷을 보내기 전에 패킷을 조각 내기 위해 MTU를 가져와야합니다. 그래서 내 패킷이 떨어지지 않도록 충분히 작도록하는 방법이 필요합니다. – ereOn

답변

3

IP 헤더를 포함하여 지원되어야하는 최소 MTU는 576 바이트입니다. 그러므로 패킷을 그 아래에두면 PMTU-D (DNS가하는 것)에 대해 걱정할 필요가 없습니다.

+0

최소 프레임 크기를 알지 못했습니다. 576 바이트 부분으로 프레임을 조각 내기위한 선택의 여지가 없다고 생각합니다. 감사합니다. – ereOn

+0

@ereOn : IP 및 UDP 헤더를 비롯하여 패킷 당 DTLS 오버 헤드가 포함 된 576 바이트 IP 패킷임을 기억하십시오. – caf

0

패킷 크기의 범위를 대상으로 보내고 '자동 조정'을해야합니다. think binary_search ...

+0

감사합니다. 그러나이 작업을 수행하기위한 "표준"방법이 있었으면합니다. 나는 MTU Path Discovery를 재발 명한다고 생각하지 않는다. – ereOn