lwip-users
[Top][All Lists]
Advanced

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

Re: [lwip-users] windows 7, IPv6, and WiFi


From: Ivan Delamer
Subject: Re: [lwip-users] windows 7, IPv6, and WiFi
Date: Fri, 06 Sep 2013 16:41:38 -0600

Thanks for the update, Zach.

I'm using IPv6 and Redpine modules as well, but didn't run into this problem. Perhaps it's a NIC thing like you said.

Good to have it posted here in case someone else runs into the same issue.

Cheers
Ivan


Date: Fri, 6 Sep 2013 22:04:59 +0000
From: Zach Smith <address@hidden>
To: Mailing list for lwIP users <address@hidden>
Subject: Re: [lwip-users] windows 7, IPv6, and WiFi
Message-ID:
        <address@hidden>

Content-Type: text/plain; charset="us-ascii"

For anyone who is interested in this:
I posted a couple months ago I was having trouble with Windows7 and
IPv6 working with my WiFi device.  Well, I was able to get it working
and I thought I'd post an update here for anyone (if anyone) that
might care. I wasn't suspecting it to be a problem with LwIP and turns
out, it was not.

Quick recap:

I wasn't able to communicate using a PC with Windows 7 (tried many
machines) to my embedded device via TCP/IPv6 over Wi-Fi.  I was able
to communicate using PC(Win7) to my embedded device via TCP/IPv4.  And
I was able to communicate using PCs with Windows XP via TCP/IPv4 or
IPv6.

1. PC(WinXP) ---[TCP/IPv4] ---[WiFi router] --- [embedded device] **worked 2. PC(WinXP) ---[TCP/IPv6] ---[WiFi router] --- [embedded device] **worked
3. PC(Win7)    ---[TCP/IPv6] ---[WiFi router] --- [embedded device]
**didn't work

So, I discovered I was doing something wrong in my low level driver
sending packets to the Wi-Fi module.  I use a Redpine module and send
it raw Ethernet packets which the module sends out to the network. The
module requires packets to be in a multiple of 4 bytes so you have to
pad with dummy bytes before you send to the module.  I was padding but
not quite correctly so my Ethernet packets were going out with extra
zero bytes on the end.

The PC TCP client would send TCP SYN and the embedded device would
reply with TCP SYN/ACK and the PC would not then send ACK. So I assume
the Win7 stack was rejecting the SYN/ACK because of the extra 2 bytes
of 00.  It is interesting that my extra byte problem has always been
there but has not caused communication problems with other versions of
windows or other TCP clients.  Also interesting is that this was not
causing a problem when using IPv4.

It might be because in a successful IPv4 communication the TCP
SYN/ACK packet is smaller than the minimum Ethernet packet size. So
the extra 00 bytes that I was putting at the end were probably
considered as padding which is supposed to be there for small packets.
But with IPv6, the TCP SYN/ACK packet  is larger than the minimum
size so Windows7 apparently doesn't like the extra zero bytes. Or
perhaps it is the NIC? Not sure.

Anyway, I removed the extra 00 byte padding and all is working well now.


-----Original Message-----
From: address@hidden
[mailto:address@hidden On
Behalf Of Ivan Delamer
Sent: Tuesday, July 09, 2013 10:20 AM
To: address@hidden
Subject: Re: [lwip-users] windows 7, IPv6, and WiFi

Sounds like a routing problem to me. Try a PC<->PC IPv6 connection
through your Intranet and see if that works.

PS: I'm using redpine modules too.

Cheers
Ivan

Date: Tue, 9 Jul 2013 15:02:17 +0000
From: Zach Smith <address@hidden>
To: Mailing list for lwIP users <address@hidden>
Subject: Re: [lwip-users] windows 7, IPv6, and WiFi
Message-ID:

<address@hidden
om>

Content-Type: text/plain; charset="us-ascii"

Thank you for the response.  Unfortunately we have tried these things
and still can't get it to work.

Interestingly, we can't get communication with our setup like this:
[Win7 PC] --- (wired Ethernet) --- (Intranet) ---(wired Ethernet) ---
[wireless router] --- (WiFi) --- [Embedded device]

But if we try a setup like this then it works:
[Win7 PC] --- (WiFi) --- [Wireless Router] --- (Embedded device]

-Zach


-----Original Message-----
From: address@hidden
[mailto:address@hidden On
Behalf Of Ivan Delamer
Sent: Sunday, July 07, 2013 2:52 PM
To: address@hidden
Subject: Re: [lwip-users] windows 7, IPv6, and WiFi

Hi Zach,

I have been able to use LwIP with IPv6, Windows 7, and Wifi, so I
don't think it is specific to those technologies.

I believe Windows 7 has much higher integration of IPv6 (previous
versions were more like patches). I think one of the changes is that
there are many more interfaces, and this can complicate things if you
are using link-local addresses.

So my advice is:
- If you are using link-local addresses, make sure your PC app is
specifying the correct interface
- Try using a specific prefix for your addresses such as aaaa:: and
use iproute to send all those packets through the interface (Ethernet,
Wifi) to which the lwip device is connected.

Lastly, you can try temporarily disabling the firewall.

Again, I have used this in many Win7 installations, usually there is a
configuration issue that can be solved with iproute.

Cheers
Ivan


Date: Fri, 5 Jul 2013 19:54:28 +0000
From: Zach Smith <address@hidden>
To: "address@hidden" <address@hidden>
Subject: [lwip-users] windows 7, IPv6, and WiFi
Message-ID:

<address@hidden
c
om>

Content-Type: text/plain; charset="us-ascii"

I am experiencing a problem that has me very confused and I wonder if
anybody has seen this or could suggest an idea.

My embedded device runs lwip and has been working great with IPv4.
It uses a WiFi module to handle raw Ethernet packets that I send it
and I get raw Ethernet from it. I updated to latest lwip to add IPv6
support. I was able to add it and it seemed to work great. That is,
with my windows XP machine (IP6 enabled) I could communicate fine
with the IP6 embedded device.  But someone else in my company then
tried it with their Windows 7 machine and couldn't connect.  Since
then we have tried many different machines - XP, Vista, Win7.  Only
the Windows 7 machines have problems.

A strange thing is that they can ping the embedded device fine but
can't open a TCP connection. I have done many Wireshark captures and can see that the Win7 PC sends a SYN and the embedded device responds
with a SYN,ACK. But then the PC acts as though it never received the
SYN,ACK because it just times out and sends the SYN again.  I have
compared Wireshark captures from PCs that are able to connect and PCs
that are not able to connect and those SYN and SYN,ACK packets look
identical except for IP and MAC addresses.

I thought maybe it's the WiFi routers but they are just bridged to
pass everything through and it does seem that they are routing the
packets OK as the PC wireshark logs show - the SYN,ACK from the
embedded device gets to the PC but the PC never responds with the
ACK.

Is there some special thing to configure windows 7 to work with IP6
or something I am missing? Any Ideas??


_______________________________________________
lwip-users mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/lwip-users

This email may contain information that is confidential and/or
legally privileged in nature. The message is intended for the use of
the individual(s) or entity listed above. If you are not the intended
recipient, please do not read, copy, publish or distribute the
communication; and notify the sender by replying to this message and
deleting this copy and any copies that may be in your electronic
system. Thank you for your compliance.


_______________________________________________
lwip-users mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/lwip-users

________________________________
 This email may contain information that is confidential and/or
legally privileged in nature. The message is intended for the use of
the individual(s) or entity listed above. If you are not the intended
recipient, please do not read, copy, publish or distribute the
communication; and notify the sender by replying to this message and
deleting this copy and any copies that may be in your electronic
system. Thank you for your compliance.






reply via email to

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