sqConnectToAddressSize: Address family not supported by protocol

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
16 messages Options
Reply | Threaded
Open this post in threaded view
|

sqConnectToAddressSize: Address family not supported by protocol

Chris Muller-4
After 15 years of paying $50 / month for Internet service, Google
Fiber has arrived and offering a much better deal.

Unfortunately, there seems to be a problem using Squeak's HTTPSocket
with GF.  I'm getting ready to call their tech-support but wanted to
ask you all first to see if I can at least understand a background of
the problem from a networking perspective.

The difference between connecting to my old ISP and new GF begins at
obtaining a SocketAddress via NetNameResolver.  If I do:

   NetNameResolver addressForName: 'www.google.com' timeout: 20.

With Surewest (old ISP) I get:

   64.126.1.187(64-126-1-187.static.everestkc.net),0(0)

But with Google Fiber I get:

    2607:f8b0:4001:c05::93(ig-in-x93.1e100.net),80(http)

Those are the printStrings for instances of SocketAddress.  The first
one is 24 bytes, the GF one is 36 bytes and will not allow me to
connect.  If I try to use the one from GF to connect to HTTP server
like this:

    SocketStream openConnectionToHostNamed:  'www.google.com' port: 80

then I get a ConnectionRefused is signaled, 'Cannot Connect to
2607:f8b0:4001:c05::93(ig-in-x93.1e100.net),80(http)'.

and the subject line of this mail is reported from the VM on the command-line.

Turning off "Enable IPv6 and new network support" in Preferences works
but my understanding when we flipped that ON by default was that it
would be "transparent" with old IPv4.

Did no one else in the community experience an issue or is Google
doing something unique from other ISP's that could be causing this
issue?  Is this a problem with Squeak or Google Fiber?

Many thanks.

Reply | Threaded
Open this post in threaded view
|

Re: sqConnectToAddressSize: Address family not supported by protocol

timrowledge
All I can think of for now is to try some non-squeak resolver type tools and at least get evidence as to whether it's them or us.

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Useful random insult:- Has an inferiority complex, but not a very good one.



Reply | Threaded
Open this post in threaded view
|

Re: sqConnectToAddressSize: Address family not supported by protocol

Chris Muller-3
Name-resolution does not seem to be the issue.  NetNameResolver
produces a SocketAddress whose printString pretty much matches what I
get using "host" on the linux command-line.

The issue is that Squeak is unable to use its own SocketAddress
representation to make the connection.  And it reports this error from
the VM:

   sqConnectToAddressSize: Address family not supported by protocol

Does anyone know what that means?


On Fri, Sep 20, 2013 at 9:21 PM, tim Rowledge <[hidden email]> wrote:
> All I can think of for now is to try some non-squeak resolver type tools and at least get evidence as to whether it's them or us.
>
> tim
> --
> tim Rowledge; [hidden email]; http://www.rowledge.org/tim
> Useful random insult:- Has an inferiority complex, but not a very good one.
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: sqConnectToAddressSize: Address family not supported by protocol

Frank Shearar-3
On 21 September 2013 18:14, Chris Muller <[hidden email]> wrote:

> Name-resolution does not seem to be the issue.  NetNameResolver
> produces a SocketAddress whose printString pretty much matches what I
> get using "host" on the linux command-line.
>
> The issue is that Squeak is unable to use its own SocketAddress
> representation to make the connection.  And it reports this error from
> the VM:
>
>    sqConnectToAddressSize: Address family not supported by protocol
>
> Does anyone know what that means?

Well, the error is quite clear, or would be if the error told us which
"address family" and "protocol" were involved. What does strace tell
you?

frank

> On Fri, Sep 20, 2013 at 9:21 PM, tim Rowledge <[hidden email]> wrote:
>> All I can think of for now is to try some non-squeak resolver type tools and at least get evidence as to whether it's them or us.
>>
>> tim
>> --
>> tim Rowledge; [hidden email]; http://www.rowledge.org/tim
>> Useful random insult:- Has an inferiority complex, but not a very good one.
>>
>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: sqConnectToAddressSize: Address family not supported by protocol

timrowledge
In reply to this post by Chris Muller-3

On 21-09-2013, at 10:14 AM, Chris Muller <[hidden email]> wrote:

>   sqConnectToAddressSize: Address family not supported by protocol

Googling the error message suggests it's a pretty common issue. The explanations seem to veer all over the place but the simplest one (ie one I can understand…) is
http://help.directadmin.com/item.php?id=474
It seems as if it is a widely caused library error, but we're well outside my OS comfort zone already.

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Quality assurance: A way to ensure you never deliver shoddy goods accidentally.



Reply | Threaded
Open this post in threaded view
|

Re: sqConnectToAddressSize: Address family not supported by protocol

Frank Shearar-3
Chris, if you go here - http://www.kame.net/ - do you see a dancing
turtle? (If you do, you have full IPv6 connectivity to that machine.)

frank

On 21 September 2013 18:48, tim Rowledge <[hidden email]> wrote:

>
> On 21-09-2013, at 10:14 AM, Chris Muller <[hidden email]> wrote:
>
>>   sqConnectToAddressSize: Address family not supported by protocol
>
> Googling the error message suggests it's a pretty common issue. The explanations seem to veer all over the place but the simplest one (ie one I can understand…) is
> http://help.directadmin.com/item.php?id=474
> It seems as if it is a widely caused library error, but we're well outside my OS comfort zone already.
>
> tim
> --
> tim Rowledge; [hidden email]; http://www.rowledge.org/tim
> Quality assurance: A way to ensure you never deliver shoddy goods accidentally.
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: sqConnectToAddressSize: Address family not supported by protocol

Chris Muller-3
In reply to this post by timrowledge
Using curl for http get produces nearly the opposite results as using squeak.

Connected to GF:
   curl --ipv6 --get www.yahoo.com
           ("...a bunch of http...")

Connected to Surewest:
    curl --ipv6 --get www.yahoo.com
           "curl: (7) Failed to connect to 2001:4998:f011:1fe::3000:
Network is unreachable"


On Fri, Sep 20, 2013 at 9:21 PM, tim Rowledge <[hidden email]> wrote:
> All I can think of for now is to try some non-squeak resolver type tools and at least get evidence as to whether it's them or us.
>
> tim
> --
> tim Rowledge; [hidden email]; http://www.rowledge.org/tim
> Useful random insult:- Has an inferiority complex, but not a very good one.
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: sqConnectToAddressSize: Address family not supported by protocol

Tobias Pape
Am 21.09.2013 um 22:04 schrieb Chris Muller <[hidden email]>:

> Using curl for http get produces nearly the opposite results as using squeak.
>
> Connected to GF:
>   curl --ipv6 --get www.yahoo.com
>           ("...a bunch of http...")
>
> Connected to Surewest:
>    curl --ipv6 --get www.yahoo.com
>           "curl: (7) Failed to connect to 2001:4998:f011:1fe::3000:
> Network is unreachable"
>

are you positive that IPv6 is enables in your image?

> On 21 September 2013 18:14, Chris Muller <[hidden email]> wrote:
>> Name-resolution does not seem to be the issue.  NetNameResolver
>> produces a SocketAddress whose printString pretty much matches what I
>> get using "host" on the linux command-line.
>>
>> The issue is that Squeak is unable to use its own SocketAddress
>> representation to make the connection.  And it reports this error from
>> the VM:
>>
>>   sqConnectToAddressSize: Address family not supported by protocol
>>
>> Does anyone know what that means?
>
> Well, the error is quite clear, or would be if the error told us which
> "address family" and "protocol" were involved. What does strace tell
> you?
>
protocol would ipv6 in this case but af might be inet, but should be inet6, iirc.

Best
        -tobias



signature.asc (210 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: sqConnectToAddressSize: Address family not supported by protocol

Bert Freudenberg
On 2013-09-21, at 23:55, Tobias Pape <[hidden email]> wrote:

> Am 21.09.2013 um 22:04 schrieb Chris Muller <[hidden email]>:
>
>> Using curl for http get produces nearly the opposite results as using squeak.
>>
>> Connected to GF:
>>  curl --ipv6 --get www.yahoo.com
>>          ("...a bunch of http...")
>>
>> Connected to Surewest:
>>   curl --ipv6 --get www.yahoo.com
>>          "curl: (7) Failed to connect to 2001:4998:f011:1fe::3000:
>> Network is unreachable"
>>
>
>
> are you positive that IPv6 is enables in your image?
>
>> On 21 September 2013 18:14, Chris Muller <[hidden email]> wrote:
>>> Name-resolution does not seem to be the issue.  NetNameResolver
>>> produces a SocketAddress whose printString pretty much matches what I
>>> get using "host" on the linux command-line.
>>>
>>> The issue is that Squeak is unable to use its own SocketAddress
>>> representation to make the connection.  And it reports this error from
>>> the VM:
>>>
>>>  sqConnectToAddressSize: Address family not supported by protocol
>>>
>>> Does anyone know what that means?
>>
>> Well, the error is quite clear, or would be if the error told us which
>> "address family" and "protocol" were involved. What does strace tell
>> you?
>>
>
> protocol would ipv6 in this case but af might be inet, but should be inet6, iirc.
>
> Best
> -tobias

Definitely looks like an IPv6 issue, which should work in theory if the VM has the new Socket plugin, but has not been extensively tested.

You could try with Etoys from squeakland.org which used to handle IPv6 just fine, at least under Linux. It was not tested much on other OS either.

Would be nice to get this ironed out (though there is the option of disabling IPv6 in your OS).

- Bert -



Reply | Threaded
Open this post in threaded view
|

Re: sqConnectToAddressSize: Address family not supported by protocol

Chris Muller-3
A tier-2 support specialist from Google just left.  No one was sure
what the precise cause of the issue was, but by changing my IPv6
Method (in Ubuntu's connection editor) from "Automatic" to "Ignore",
and then back to "Automatic", followed by a reboot of the router,
seems to have cleared the issue up.  Everything seems to be working
fine even with Squeak's IPv6 turned on.

Thank you all for the suggestions, I'm glad it was my problem and not Squeak.

On Mon, Sep 23, 2013 at 6:09 AM, Bert Freudenberg <[hidden email]> wrote:

> On 2013-09-21, at 23:55, Tobias Pape <[hidden email]> wrote:
>
>> Am 21.09.2013 um 22:04 schrieb Chris Muller <[hidden email]>:
>>
>>> Using curl for http get produces nearly the opposite results as using squeak.
>>>
>>> Connected to GF:
>>>  curl --ipv6 --get www.yahoo.com
>>>          ("...a bunch of http...")
>>>
>>> Connected to Surewest:
>>>   curl --ipv6 --get www.yahoo.com
>>>          "curl: (7) Failed to connect to 2001:4998:f011:1fe::3000:
>>> Network is unreachable"
>>>
>>
>>
>> are you positive that IPv6 is enables in your image?
>>
>>> On 21 September 2013 18:14, Chris Muller <[hidden email]> wrote:
>>>> Name-resolution does not seem to be the issue.  NetNameResolver
>>>> produces a SocketAddress whose printString pretty much matches what I
>>>> get using "host" on the linux command-line.
>>>>
>>>> The issue is that Squeak is unable to use its own SocketAddress
>>>> representation to make the connection.  And it reports this error from
>>>> the VM:
>>>>
>>>>  sqConnectToAddressSize: Address family not supported by protocol
>>>>
>>>> Does anyone know what that means?
>>>
>>> Well, the error is quite clear, or would be if the error told us which
>>> "address family" and "protocol" were involved. What does strace tell
>>> you?
>>>
>>
>> protocol would ipv6 in this case but af might be inet, but should be inet6, iirc.
>>
>> Best
>>       -tobias
>
> Definitely looks like an IPv6 issue, which should work in theory if the VM has the new Socket plugin, but has not been extensively tested.
>
> You could try with Etoys from squeakland.org which used to handle IPv6 just fine, at least under Linux. It was not tested much on other OS either.
>
> Would be nice to get this ironed out (though there is the option of disabling IPv6 in your OS).
>
> - Bert -
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: sqConnectToAddressSize: Address family not supported by protocol

Bert Freudenberg
On 2013-09-23, at 21:01, Chris Muller <[hidden email]> wrote:

> A tier-2 support specialist from Google just left.  No one was sure
> what the precise cause of the issue was, but by changing my IPv6
> Method (in Ubuntu's connection editor) from "Automatic" to "Ignore",
> and then back to "Automatic", followed by a reboot of the router,
> seems to have cleared the issue up.  Everything seems to be working
> fine even with Squeak's IPv6 turned on.
>
> Thank you all for the suggestions, I'm glad it was my problem and not Squeak.


So does your Squeak use IPv6 now? Or does it work because it falls back on IPv4?

- Bert -



Reply | Threaded
Open this post in threaded view
|

Re: sqConnectToAddressSize: Address family not supported by protocol

Chris Muller-3
How can I tell?

On Mon, Sep 23, 2013 at 2:10 PM, Bert Freudenberg <[hidden email]> wrote:

> On 2013-09-23, at 21:01, Chris Muller <[hidden email]> wrote:
>
>> A tier-2 support specialist from Google just left.  No one was sure
>> what the precise cause of the issue was, but by changing my IPv6
>> Method (in Ubuntu's connection editor) from "Automatic" to "Ignore",
>> and then back to "Automatic", followed by a reboot of the router,
>> seems to have cleared the issue up.  Everything seems to be working
>> fine even with Squeak's IPv6 turned on.
>>
>> Thank you all for the suggestions, I'm glad it was my problem and not Squeak.
>
>
> So does your Squeak use IPv6 now? Or does it work because it falls back on IPv4?
>
> - Bert -
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: sqConnectToAddressSize: Address family not supported by protocol

Chris Muller-3
In reply to this post by Frank Shearar-3
Oops, just saw your second note Frank--
    No, the turtle doesn't dance.

But I'm back to using my old ISP again because GF started flaking out
again with the same issues.

So is it possible THAT is why it's "working" with my old ISP?  Because
my connection with them is not even IPv6 "capable" and so Squeak was
never attempting to use IPv6 even though the preference was enabled?
(Whew!)

On Sat, Sep 21, 2013 at 1:38 PM, Frank Shearar <[hidden email]> wrote:

> Chris, if you go here - http://www.kame.net/ - do you see a dancing
> turtle? (If you do, you have full IPv6 connectivity to that machine.)
>
> frank
>
> On 21 September 2013 18:48, tim Rowledge <[hidden email]> wrote:
>>
>> On 21-09-2013, at 10:14 AM, Chris Muller <[hidden email]> wrote:
>>
>>>   sqConnectToAddressSize: Address family not supported by protocol
>>
>> Googling the error message suggests it's a pretty common issue. The explanations seem to veer all over the place but the simplest one (ie one I can understand…) is
>> http://help.directadmin.com/item.php?id=474
>> It seems as if it is a widely caused library error, but we're well outside my OS comfort zone already.
>>
>> tim
>> --
>> tim Rowledge; [hidden email]; http://www.rowledge.org/tim
>> Quality assurance: A way to ensure you never deliver shoddy goods accidentally.
>>
>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: sqConnectToAddressSize: Address family not supported by protocol

Frank Shearar-3
It's actually harder to tell than that. If you say "connect to
www.kame.net" you'll issue some kind of DNS request. IPv6 addresses
are stored in AAAA records and IPv4 addresses in A records, so if you
ask for both you could end up connecting using either IPv6 or IPv4,
depending on how the socket code's written.

For instance you could write the socket connection logic to say
'resolve for AAAA and A, and iterate over the AAAA records trying to
connect to each IPv6 address in turn, falling back to the A records,
and bailing as a last resort'. I have no idea how Squeak's network
code will do this. Running strace would tell you the OS level calls
Squeak made, which should shed some light on the problem.

Just yesterday I ran into a problem at work where 'localhost' meant
127.0.0.1 on my machine, and ::1 on a build slave. That wasn't fun to
understand.

frank

On 24 September 2013 02:12, Chris Muller <[hidden email]> wrote:

> Oops, just saw your second note Frank--
>     No, the turtle doesn't dance.
>
> But I'm back to using my old ISP again because GF started flaking out
> again with the same issues.
>
> So is it possible THAT is why it's "working" with my old ISP?  Because
> my connection with them is not even IPv6 "capable" and so Squeak was
> never attempting to use IPv6 even though the preference was enabled?
> (Whew!)
>
> On Sat, Sep 21, 2013 at 1:38 PM, Frank Shearar <[hidden email]> wrote:
>> Chris, if you go here - http://www.kame.net/ - do you see a dancing
>> turtle? (If you do, you have full IPv6 connectivity to that machine.)
>>
>> frank
>>
>> On 21 September 2013 18:48, tim Rowledge <[hidden email]> wrote:
>>>
>>> On 21-09-2013, at 10:14 AM, Chris Muller <[hidden email]> wrote:
>>>
>>>>   sqConnectToAddressSize: Address family not supported by protocol
>>>
>>> Googling the error message suggests it's a pretty common issue. The explanations seem to veer all over the place but the simplest one (ie one I can understand…) is
>>> http://help.directadmin.com/item.php?id=474
>>> It seems as if it is a widely caused library error, but we're well outside my OS comfort zone already.
>>>
>>> tim
>>> --
>>> tim Rowledge; [hidden email]; http://www.rowledge.org/tim
>>> Quality assurance: A way to ensure you never deliver shoddy goods accidentally.
>>>
>>>
>>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: sqConnectToAddressSize: Address family not supported by protocol

Bert Freudenberg

On 2013-09-24, at 11:03, Frank Shearar <[hidden email]> wrote:

> It's actually harder to tell than that. If you say "connect to
> www.kame.net" you'll issue some kind of DNS request. IPv6 addresses
> are stored in AAAA records and IPv4 addresses in A records, so if you
> ask for both you could end up connecting using either IPv6 or IPv4,
> depending on how the socket code's written.
>
> For instance you could write the socket connection logic to say
> 'resolve for AAAA and A, and iterate over the AAAA records trying to
> connect to each IPv6 address in turn, falling back to the A records,
> and bailing as a last resort'. I have no idea how Squeak's network
> code will do this. Running strace would tell you the OS level calls
> Squeak made, which should shed some light on the problem.
>
> Just yesterday I ran into a problem at work where 'localhost' meant
> 127.0.0.1 on my machine, and ::1 on a build slave. That wasn't fun to
> understand.
>
> frank


The old socket plugin code uses gethostbyname() and returns the first of the list of answers, without even checking that the answer is, in fact, an IPv4 address.

The new socket plugin code uses getaddrinfo() and answers the full list of addresses, so the image can figure out which one it prefers.

Both old and new is still supported in the plugin so it's up to the image to use either.

NetNameResolver addressesForName: 'www.google.com'
==> an OrderedCollection(
        173.194.44.51(muc03s08-in-f19.1e100.net),0(0)-inet4-stream-tcp
        173.194.44.48(muc03s08-in-f16.1e100.net),0(0)-inet4-stream-tcp
        173.194.44.49(muc03s08-in-f17.1e100.net),0(0)-inet4-stream-tcp
        173.194.44.52(muc03s08-in-f20.1e100.net),0(0)-inet4-stream-tcp
        173.194.44.50(muc03s08-in-f18.1e100.net),0(0)-inet4-stream-tcp
        2a00:1450:4016:803::1011(muc03s08-in-x11.1e100.net),0(0)-inet6-stream-tcp)

If you use "NetNameResolver addressForName: ..." then it will either use the old code (if forced by preference) or answer the first of the addresses.

I myself cannot easily test IPv6 as it's not natively supported by my ISP, yet.

If it did, then both of these should work equally:

        HTTPSocket httpGetDocument: 'ipv4.whatismyv6.com'
        HTTPSocket httpGetDocument: 'ipv6.whatismyv6.com'


- Bert -



Reply | Threaded
Open this post in threaded view
|

Re: sqConnectToAddressSize: Address family not supported by protocol

Chris Muller-3
Thanks for those links Bert.  I was able to confirm that my old ISP
does not, in fact, support IPv6 connections.  So that's why I thought
it was "working" when, in fact, it was just using IPv4.  So, there may
yet be an issue with Squeak and IPv6.


On Tue, Sep 24, 2013 at 10:08 AM, Bert Freudenberg <[hidden email]> wrote:

>
> On 2013-09-24, at 11:03, Frank Shearar <[hidden email]> wrote:
>
>> It's actually harder to tell than that. If you say "connect to
>> www.kame.net" you'll issue some kind of DNS request. IPv6 addresses
>> are stored in AAAA records and IPv4 addresses in A records, so if you
>> ask for both you could end up connecting using either IPv6 or IPv4,
>> depending on how the socket code's written.
>>
>> For instance you could write the socket connection logic to say
>> 'resolve for AAAA and A, and iterate over the AAAA records trying to
>> connect to each IPv6 address in turn, falling back to the A records,
>> and bailing as a last resort'. I have no idea how Squeak's network
>> code will do this. Running strace would tell you the OS level calls
>> Squeak made, which should shed some light on the problem.
>>
>> Just yesterday I ran into a problem at work where 'localhost' meant
>> 127.0.0.1 on my machine, and ::1 on a build slave. That wasn't fun to
>> understand.
>>
>> frank
>
>
> The old socket plugin code uses gethostbyname() and returns the first of the list of answers, without even checking that the answer is, in fact, an IPv4 address.
>
> The new socket plugin code uses getaddrinfo() and answers the full list of addresses, so the image can figure out which one it prefers.
>
> Both old and new is still supported in the plugin so it's up to the image to use either.
>
> NetNameResolver addressesForName: 'www.google.com'
> ==> an OrderedCollection(
>         173.194.44.51(muc03s08-in-f19.1e100.net),0(0)-inet4-stream-tcp
>         173.194.44.48(muc03s08-in-f16.1e100.net),0(0)-inet4-stream-tcp
>         173.194.44.49(muc03s08-in-f17.1e100.net),0(0)-inet4-stream-tcp
>         173.194.44.52(muc03s08-in-f20.1e100.net),0(0)-inet4-stream-tcp
>         173.194.44.50(muc03s08-in-f18.1e100.net),0(0)-inet4-stream-tcp
>         2a00:1450:4016:803::1011(muc03s08-in-x11.1e100.net),0(0)-inet6-stream-tcp)
>
> If you use "NetNameResolver addressForName: ..." then it will either use the old code (if forced by preference) or answer the first of the addresses.
>
> I myself cannot easily test IPv6 as it's not natively supported by my ISP, yet.
>
> If it did, then both of these should work equally:
>
>         HTTPSocket httpGetDocument: 'ipv4.whatismyv6.com'
>         HTTPSocket httpGetDocument: 'ipv6.whatismyv6.com'
>
>
> - Bert -
>
>
>