qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Slirp/uIP incompatibility


From: Filip Navara
Subject: [Qemu-devel] Slirp/uIP incompatibility
Date: Sun, 14 Jun 2009 11:22:14 +0200

Hello,

I'm not sure this worth looking into or fixing, but there is an incompatibility between the uIP TCP/IP stack and Slirp as used with -net user option.

Guest runs uIP in an emulated ARM machine with the AT91SAM7-EK board:

$ arm-softmmu/qemu-system-arm.exe -M at91sam -kernel tests/basic-emac-uip-helloworld-at91sam7x-ek-at91sam7x256-sram.elf -net nic,model=at91sam,macaddr=00:45:5
6:78:9a:bc -net user -redir tcp:1000::1000

The guest successfully receives the IP addresses using DHCP and starts to listen on port 1000. Now I try to connect to it from the host machine. When the SYN packet is received in the guest code, the SYN-ACK packet is prepared. Due to an implementation error it is never sent though and ARP request is sent instead, if the ARP tables are not filled already (which is always the case for the first connection). After a while Slirp figures out that no reply was received and sends the SYN again. The guest code thinks that it already sent SYN-ACK and replies with ACK, probably due to mismatched sequence numbers at that point. This repeats practically forever and none of the parties can recover from it (by the means of RST or other way).

If anyone can offer some advice how to resolve it or how the TCP/IP stacks should behave if the first SYN-ACK during the connection establishment is lost I'd be glad. Attached is a packet dump from QEMU VLAN.

Best regards,
Filip Navara

Attachment: dump-uip.pcap
Description: Binary data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]