multipass - TCP Previous segment not captured

Viewed 34

ENV

multipass version
multipass   1.10.1+mac
multipassd  1.10.1+mac

Mac Apple M1
MacOS 12.5.1

Note: I am including qemu tag as Multipass is using qemu.

I am using two Mac computers, both MacOS M1 client and server.

curl hangs

curl hangs half way through a large file(small file no problem) , if the server is running in multipass on different vlan/network(See step 7. )

curl <--> network <--> host computer <--> multipass vm

Steps

You need to install go on the computer on the different vlan/network and do the following:

  1. Create multipass vm and mount from the same folder:
multipass launch --name myvm --network=en0
# Mount so you can edit code from host
multipass mount . myvm:~/speed
  1. Install go
multipass shell myvm
cd speed
sudo snap install go --classic
  1. Generate a large file:
base64 /dev/urandom | head -c 100000 > file.txt
echo "\The end" >> file.txt

Note: Using one zero less base64 /dev/urandom | head -c 10000 > file.txt then there is no problem.

  1. Create the following go file main.go in the same folder:
package main

import (
    "github.com/gorilla/mux"
    "log"
    "net/http"
)

func main() {
    handler := mux.NewRouter()
    handler.PathPrefix("/").Handler(http.StripPrefix("/", http.FileServer(http.Dir("."))))
    log.Fatal(http.ListenAndServe(":80", handler))
}
  1. Run go on multipass myvm on different vlan/network
go mod init test
go get
sudo go run main.go

From client machine on another vlan/network

  1. Curl to multipass mvm, IMPORTANT to multipass ip address, on the network(--network=en0), from "another" machine:
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 on the multipss host computer(same ip address) it works, just not from multipass vm - again between networks.

Note: multipass list:

Name                    State             IPv4             Image
mvm                     Running           192.168.64.132   Ubuntu 20.04 LTS
                                          192.170.1.231

TCP Previous segment not captured

If I use Wireshark I can see something standing out 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

Thanks

0 Answers
Related