Use generic extensible URI identifiers in the config file instead of current bind_address/port

Registered by Kostja Osipov

Today, to specify IP address and ports to connect to in the configuration file, one has to set the following:
bind_address = 127.0.0.1
admin_port = 33013

This scheme has the following shortcomings:
- there is no way to specify the desired transport (e.g. ssl).
- each protocol requires its own port
- there is no support for DNS
- there is no support for UNIX sockets or other transport mechanisms.

We need a scheme which allows to specify:
- multiple ports/transports to listen on
- an IPV6 address
- choose transport format
- use unix sockets or DNS if necessary

Something like:

listen_on = 127.0.0.1:33013/{rpl,binary,admin}
- bind to address 127.0.0.1, port 33013, support on this address/port rpl, binary and admin protocols
listen_on = auth:///tmp/tarantool.sock/{admin} - open a UNIX socket, require authenticated connection, support admin protocol only

listen_on = ssl://192.0.0.15:33015:{binary,memcached} - require ssl, bind to 192.0.0.15, support memcached protocol (memcached protocol has to be mutually exclusive with everything else, other protocols can be specified together, since we can make protocol request part of the handshake).

We'll have to perform some magic to ensure that multiple listen-to clauses do not contradict.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
None
Direction:
Needs approval
Assignee:
None
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.