canonical / canonical/multipass
Simplified error example of: TCP Previous segment not captured
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 9.2k
- Forks
- 829
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 45
Description
ENV
multipass version
multipass 1.11.1+mac
multipassd 1.11.1+mac
Mac Apple M1
MacOS 12.5.1
curl hangs half way through a large file(small file no problem) , if the server(multipass vm) is running in multipass on different computers on different vLAN.
Steps
- Create multipass vm and mount from the same folder:
multipass launch --name myvm --network=en0
multipass mount . myvm:~/speed
Question: Is it a "Bonded interface", when using --network=en0
- Generate a large file:
multipass shell myvm
base64 /dev/urandom | head -c 100000 > file.txt
echo "\The end" >> file.txt
- run web server server in multipass vm:
multipass shell myvm
cd speed
python3 -m http.server
- Curl to multipass mvm - from another computer vLAN
curl <ip>/file.txt
In my case: `curl 192.170.1.231/file`
7AVzmECVWNbcShP+TE+/6AM/KZWc12AzLKvtctv0pqeSW0SNDW3OSM82SkzF+/UExUUBH4dxlIcM
dObLOlLgz9WfoiEtvZ4Hbx/yq85C+WwnFr2Trhu75qmFrg8Ht8t/x+MyDfI0MyuGw91tKqFgHL4F
Now it hangs, what to do?
If you run this python3 -m http.server on the host computer it works, just not from multipass vm.
Wireshark
If I use Wireshark I can see something standing out(Line 2) right about where it hangs:
10287 0.000580 0.000580 64 192.168.1.22 192.170.1.231 TCP 54 53941 → 80 [RST] Seq=1 Win=0 Len=0
4818 0.004338 0.004338 62 192.170.1.231 192.168.1.22 TCP 1514 [TCP Previous segment not captured] 80 → 50623 [ACK] Seq=84853 Ack=86 Win=65152 Len=1448 TSval=1019606200 TSecr=2732723127 [TCP segment of a reassembled PDU]
4820 0.000249 0.000249 64 192.168.1.22 192.170.1.231 TCP 78 [TCP Dup ACK 4817#1] 50623 → 80 [ACK] Seq=86 Ack=67477 Win=131072 Len=0 TSval=2732723132 TSecr=1019605978 SLE=84853 SRE=86301
4821 0.000057 0.000057 64 192.168.1.22 192.170.1.231 TCP 78 [TCP Dup ACK 4817#2] 50623 → 80 [ACK] Seq=86 Ack=67477 Win=131072 Len=0 TSval=2732723132 TSecr=1019605978 SLE=84853 SRE=87749
4822 0.002414 0.002414 62 192.170.1.231 192.168.1.22 TCP 1514 [TCP Fast Retransmission] 80 → 50623 [ACK] Seq=67477 Ack=86 Win=65152 Len=1448 TSval=1019606202 TSecr=2732723132 [TCP segment of a reassembled PDU]
4823 0.000001 0.000001 62 192.170.1.231 192.168.1.22 TCP 1514 [TCP Out-Of-Order] 80 → 50623 [ACK] Seq=68925 Ack=86 Win=65152 Len=1448 TSval=1019606203 TSecr=2732723132 [TCP segment of a reassembled PDU]
4827 0.002141 0.002141 62 192.170.1.231 192.168.1.22 TCP 1514 [TCP Out-Of-Order] 80 → 50623 [ACK] Seq=70373 Ack=86 Win=65152 Len=1448 TSval=1019606205 TSecr=2732723135 [TCP segment of a reassembled PDU]
4829 0.000165 0.000165 62 192.170.1.231 192.168.1.22 TCP 1514 [TCP Retransmission] 80 → 50623 [PSH, ACK] Seq=71821 Ack=86 Win=65152 Len=1448 TSval=1019606205 TSecr=2732723135
4830 0.000002 0.000002 62 192.170.1.231 192.168.1.22 TCP 1514 [TCP Retransmission] 80 → 50623 [ACK] Seq=73269 Ack=86 Win=65152 Len=1448 TSval=1019606205 TSecr=2732723135
4831 0.000000 0.000000 62 192.170.1.231 192.168.1.22 TCP 1514 [TCP Retransmission] 80 → 50623 [ACK] Seq=74717 Ack=86 Win=65152 Len=1448 TSval=1019606205 TSecr=2732723135
iperf - to multipass vm
iperf -c 192.170.1.98
------------------------------------------------------------
Client connecting to 192.170.1.98, TCP port 5001
TCP window size: 128 KByte (default)
------------------------------------------------------------
[ 1] local 192.168.1.135 port 53580 connected with 192.170.1.98 port 5001 (icwnd/mss/irtt=14/1448/4000)
[ ID] Interval Transfer Bandwidth
[ 1] 0.00-10.11 sec 348 MBytes 288 Mbits/sec
iperf - to multipass host machine
iperf -c 192.170.1.36
------------------------------------------------------------
Client connecting to 192.170.1.36, TCP port 5001
TCP window size: 128 KByte (default)
------------------------------------------------------------
[ 1] local 192.168.1.135 port 53640 connected with 192.170.1.36 port 5001 (icwnd/mss/irtt=14/1448/3000)
[ ID] Interval Transfer Bandwidth
[ 1] 0.00-10.06 sec 350 MBytes 291 Mbits/sec
I have added this issue to:
Hyperkit: https://github.com/moby/hyperkit/issues/338
Qemu: https://gitlab.com/qemu-project/qemu/-/issues/1584
stackoverflow.com: https://stackoverflow.com/questions/73753103/multipass-tcp-previous-segment-not-captured
Thanks
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the report with multipass launch --name myvm --network=en0, the mounted directory, and python3 -m http.server, then compare large-file curl behavior with the supplied Wireshark and iperf results. Read the linked HyperKit, QEMU, and Stack Overflow investigations first; done requires a confirmed cause and a documented or implemented resolution for the cross-vLAN TCP hang.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- macos, python
- Domain
- networking, operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100