n0-computer / n0-computer/sendme

ERROR iroh_quinn_udp::imp: got transmit error, halting segmentation offload

Open
#45 9 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
1.2k
Forks
78
PR merge metrics
No merged PRs in 30d

Description

2024-08-10T06:19:59.120474Z ERROR iroh_quinn_udp::imp: got transmit error, halting segmentation offload

I provide a server that will generate this file for you:

sendme receive blobacyeboyfhlszybnlqliyhvlbgkdnt5teybpm27yrpj6xahetgpbluajdnb2hi4dthixs6zlvo4ys2mjoojswyylzfzuxe33ifzxgk5dxn5zgwlrpaiafp3khwt2wqagavac6fp55ama6gzgbecgcklcx4ddcnyhuh5lf53uak4hgp754aquyz5slaqwlakq

this is a 1GB file that fails to download from the server,

the server says 2024-08-10T06:24:36.963867Z ERROR iroh_quinn_udp::imp: got transmit error, halting segmentation offload


qlm@qlmfb1:~/git/tmp$ sendme --version
sendme 0.13.0

qlm@qlmfb1:~/git/tmp$ uname --all
Linux qlmfb1 5.15.0-116-generic #126-Ubuntu SMP Mon Jul 1 10:14:24 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

qlm@qlmfb1:~/git/tmp$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.4 LTS
Release:        22.04
Codename:       jammy

looking at https://github.com/quinn-rs/quinn/blob/c0b1e281e3167d4f4c8496082cb1117c4a270ad8/quinn-udp/src/unix.rs#L288

and

https://www.ibm.com/docs/en/linux-on-systems?topic=offload-tcp-segmentation

I discover:


qlm@qlmfb1:~/git/tmp$ sudo ethtool -K enp0s3 tx on sg on tso on
Actual changes:
tx-scatter-gather: off [requested on]
tx-checksum-ipv4: off [requested on]
tx-checksum-ip-generic: off [requested on]
tx-checksum-ipv6: off [requested on]
tx-scatter-gather-fraglist: off [requested on]
tx-tcp-segmentation: off [requested on]
tx-tcp-ecn-segmentation: off [requested on]
tx-tcp-mangleid-segmentation: off [requested on]
tx-tcp6-segmentation: off [requested on]
tx-checksum-fcoe-crc: off [requested on]
tx-checksum-sctp: off [requested on]
Could not change any device features


and

qlm@qlmfb1:~/git/tmp$ sudo ethtool --offload enp0s3  rx on  tx on
Actual changes:
tx-checksum-ipv4: off [requested on]
tx-checksum-ip-generic: off [requested on]
tx-checksum-ipv6: off [requested on]
tx-checksum-fcoe-crc: off [requested on]
tx-checksum-sctp: off [requested on]
rx-checksum: off [requested on]
Could not change any device features

In other words, this platform does not support tcp segmentation,
is there a way to get sendme working in such case?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the 1GB transfer with sendme 0.13.0 on Ubuntu 22.04 using the provided command, then inspect quinn-udp/src/unix.rs around the referenced line and the transmit-error path. Check how sendme behaves when segmentation and checksum offload cannot be enabled; done means the provided transfer completes successfully or the limitation is clearly handled.

Written by the indexing model from the issue text.

Assessment

Tech stack
linux, rust
Domain
cli, networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.