[nanomsg] Re: patterns for complex applications, pub/sub filtering, tls+tcp;//, and tunneling transports

  • From: Dirkjan Ochtman <dirkjan@xxxxxxxxxx>
  • To: nanomsg <nanomsg@xxxxxxxxxxxxx>
  • Date: Wed, 27 Aug 2014 11:29:32 +0200

Here's an attempt at some answers:

On Wed, Aug 27, 2014 at 11:00 AM, Roman Puls <puls@xxxxxxxxxxxx> wrote:
> II) PUB/SUB Filtering
>
> in the context of I), where some files are needed, pub/sub came into my mind
> to push the missing piece of information from a producer into all workers.
> Am I right that currently the pub/sub subscription is a host-local
> filtering. or do we have sender-side filtering in nanomsg?
>
> If no pub-side filtering: what are the reasons to do that on the receiver
> side only, and are there plans to change that to pub-side filtering?

That's right. I think we'd like to have sender-side filtering at some
point, but we haven't implemented it yet (it has higher complexity
than receiver-side filtering).

> III) Transports
>
> I have read a few postings here about creating new transports. The first
> stuff I'd be interested in (of course) would be to use a "tcp+tls://"
> socket. Is somebody working on that one? If not, do we have a trivial
> example on how to create new transports, i.e. a loop-back transport?

I don't think anyone has done work on an implementation yet, but we do
have an RFC for tcp+tls:

https://github.com/nanomsg/nanomsg/blob/master/rfc/sp-tls-mapping-01.txt

I also don't think we have a trivial example for how to create new transports.

> As a second topic: did somebody ever consider to write a multiplexing
> transport, which would allow you to run i.e. a req/rep and a pub/sub over
> the same tcp or tls+tcp connection? Head of line blocking is known, but can
> be solved here IMO.

A tcpmux transport has been discussed on this mailing list.

> IV) Endianness
>
> I have no information found on that topic, and grepping the sources for
> hton-functions, and the endian keyword did not show me any entry-points, so
> here yet another question: is nanomsg endianess aware? I don't mean user
> payload, but are the headers swapped in network-byte order, so you can
> connect big-endian with a little-endian system?

I'm not really sure, but searching for "network byte order" suggests
that it's been thought about at least:

https://github.com/nanomsg/nanomsg/search?utf8=%E2%9C%93&q=network+byte+order&type=Code

Cheers,

Dirkjan

Other related posts: