crossbario / crossbario/autobahn-python
Complete IPv6 support
Nobody has claimed this yet.
- 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.listentWSandconnectWS) 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 thenComponent
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.
- https://twistedmatrix.com/trac/wiki/IPv6
- https://twistedmatrix.com/documents/current/api/twisted.internet.interfaces.IReactorSSL.html
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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