ireader / media-server

RTSP/RTP/RTMP/FLV/HLS/MPEG-TS/MPEG-PS/MPEG-DASH/MP4/fMP4/MKV/WebM
MIT License
3.06k stars 1.07k forks source link

s_max_packet_size为什么不取大于1500的长度 #327

Closed kongxa closed 8 months ago

kongxa commented 8 months ago

根据我自己网络环境的测试结果,udp完全可以发送大于1500字节的数据。 使用iperf3信令如下: iperf3 -c xx.xx.xx.xx -p 40001 -u -l 60000 udp包长度为60000依然可以在公网上正常传输。如果s_max_packet_size=4000的话(exosip中默认的信令最大长度),可以提高发送效率。但是为什么要让s_max_packet_size等于1434?虽然大包会导致IP分片,但是为何不利用IP分片机制传输数据呢?

// Default max packet size (1500, minus allowance for IP, UDP, UMTP headers) // (Also, make it a multiple of 4 bytes, just in case that matters.) //static int s_max_packet_size = 1456; // from Live555 MultiFrameRTPSink.cpp RTP_PAYLOAD_MAX_SIZE //static size_t s_max_packet_size = 576; // UNIX Network Programming by W. Richard Stevens static int s_max_packet_size = 1434; // from VLC

ireader commented 8 months ago

分片机制依赖中间路由器,大包是否丢弃依赖路由器设置,局域网内可控环境可以调大, 互联网环境比较复杂, 一般不建议使用分片。

kongxa commented 8 months ago

在exosip和libosip中,国标信令使用udp发送时,最大可发送长度默认是4K(osip_message.h),国标设备和平台间的级联都可能走互联网,他们就不担心吗?

`

ifndef SIP_MESSAGE_MAX_LENGTH

/**

ireader commented 8 months ago

没有强制标准,可以根据实际情况选择合适的值。

kongxa commented 8 months ago

好的 谢谢拉