[Issue] UDP Packet Payload Loss: RTP Packets drop to Header-only size (20 bytes) after initial frames on Jetson Xavier

Please provide complete information as applicable to your setup.

• Hardware Platform (Jetson / GPU) - xavier NX
• DeepStream Version - deepstream 6.2 + deepstream python apps v1.1.6
• JetPack Version (valid for Jetson only) - 5.1(L4T 35.2.1)
• TensorRT Version - 8.5.2.2 + CUDA 11.4
**• Issue Type( questions, new requirements, bugs) - Issue

I am trying to stream Gazebo RGB sensor data from my PC to Jetson Xavier via UDP. While the network connectivity is verified, the video stream fails to decode on the Jetson side.

2. Test & Verification

  • Network Test: ping -s 1400 from PC to Jetson is successful (0% packet loss).

  • Local Loopback: Running the same pipeline on the PC (decoding locally) works perfectly with x264enc.

  • MTU: Both interfaces are set to 1500.

4. Command Used (Sender - PC)

PC gst send :

gst-launch-1.0 videotestsrc is-live=true pattern=ball ! \
video/x-raw,width=640,height=640,framerate=30/1 ! \
videoconvert ! video/x-raw,format=I420 ! \
x264enc tune=zerolatency bitrate=4000 speed-preset=ultrafast key-int-max=15 byte-stream=true ! \
h264parse ! \
rtph264pay mtu=1400 config-interval=1 pt=96 ! \
udpsink host=192.168.137.100 port=5000 sync=false

Jetson Xavier receive:

gst-launch-1.0 udpsrc port=5000 buffer-size=20000000 ! \
"application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! \
rtph264depay ! \
h264parse ! \
nvv4l2decoder ! \
nvvidconv ! \
nveglglessink sync=false

5. Symptoms (The “20-byte” issue) When monitoring the incoming traffic on Jetson using tcpdump -i any udp port 5000 -n, I observe the following:

  • Initial few packets show length 1400 (actual payload).

  • Then it drops to length 400 (SPS/PPS headers).

  • After a few seconds, it stays at length 20 or length 18 indefinitely.

6. Question Since raw data (ping -s 1400) passes through, why does the GStreamer pipeline fail to maintain the payload size? Is this related to rtph264pay timestamping, or is there a specific kernel-level UDP buffer setting required for Xavier to handle high-bitrate RTP streams?

  1. You should use nv3dsink on Jetson.
  2. If changing to nv3dsink doesn’t work, first confirm that your switch can handle a 4Mbps bitrate. loopback receive and ping cannot verify this.
# Jetson start a server
iperf3 -s

# PC send/recive 4M udp stream
iperf3 -c 192.168.137.100 -u -b 4M -t 10

Thank you Very Very much
nv3dsink worked! Thank you