crossbario / crossbario/autobahn-python

Complete IPv6 support

Open
#1,165 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

asyncio enhancement Twisted wamp websocket
Dominant language
Python
Stars
2.5k
Forks
768
PR merge metrics
No merged PRs in 30d

Description

So we want to support IPv6 in Autobahn - for all flavors. This is not the case as of today (see below).

Longer term, the "flavors" we need to cover are:

  • Twisted vs asyncio
  • WebSocket clients+servers
  • Twisted WebSocket clients+servers: "old API" (autobahn.twisted.websocket.listentWS and connectWS) and "new API" (using Twisted endpoints)
  • WAMP clients
  • WAMP clients: "old API" (inherit from ApplicationSession) and "new API" (Component)
  • WAMP router == Crossbar.io => different repo

Of these, the most important is Crossbar.io, then WAMP client using ApplicationSession (as we use that in Crossbar.io for historical reasons), and then Component


I have quickly looked at the status of Twisted and Twisted endpoints relating to above (I haven't analyzed all the others).

Twisted endpoints is the "new" and recommended API of Twisted, and it supports TCP v4+6, but only TLS v4 on Twisted 18.9.0:

(cpy372_1) oberstet@intel-nuci7:~/scm/crossbario/autobahn-python$ python
Python 3.7.2 (default, Feb 25 2019, 08:26:41) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from twisted.internet.endpoints import SSL4ClientEndpoint
>>> from twisted.internet.endpoints import SSL6ClientEndpoint
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'SSL6ClientEndpoint' from 'twisted.internet.endpoints' (/home/oberstet/cpy372_1/lib/python3.7/site-packages/twisted/internet/endpoints.py)
>>> from twisted.internet.endpoints import TCP4ClientEndpoint
>>> from twisted.internet.endpoints import TCP6ClientEndpoint
>>> import twisted
>>> twisted.__version__
'18.9.0'
>>> 

Autobahn is using above here to create client connecting transports.

On crossbar.io, the same restriction (resulting from above limitation) applies: IPv6 works for TCP, but not TLS: https://github.com/crossbario/crossbar/blob/master/crossbar/common/twisted/endpoint.py#L383

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing autobahn/twisted/component.py around the client transport creation and the referenced Twisted endpoint APIs, then compare the listed client, server, WAMP, and API flavors. Check the linked Crossbar endpoint implementation and Twisted's IPv6/TLS support; done means IPv6 works across the agreed flavors, including the currently missing TLS paths.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.