[PROPOSAL] Add SCTP network protocol to postgresql backend and frontend

Поиск
Список
Период
Сортировка
От Eduardo Morras
Тема [PROPOSAL] Add SCTP network protocol to postgresql backend and frontend
Дата
Msg-id 20160323135533.dea858405f9ca0b783b43a82@yahoo.es
обсуждение исходный текст
Ответы Re: [PROPOSAL] Add SCTP network protocol to postgresql backend and frontend
Список pgsql-hackers
Hello,

I want to propose to add sctp network protocol to backend and frontend code.

Light Sctp description:

Sctp is a layer 3 network protocol over ip networks, similar to tcp, udp and others. It's message oriented protocol,
unliketcp and udp that are data stream oriented, and it ensures that a message reach its destination, as tcp does with
packets.Each sctp packet can have multiple messages or parts of messages inside. It provides multihoming, dinamically
bindand unbind network devices (eth0, eth1, wifi...), mix ipv4 and ipv6, congestion control algorithms similar to tcp,
messagereliability and administration (message time to live, retries on failure...). A connection between server and
clientis called association.
 

Sctp support exists in Linux since 2.4+, FreeBSD 7+, Solaris10+ and Cisco, Juniper, F5 and others routers. Windows and
MacOSXneeds (AFAIK) third-party drivers.
 

Benefits:

Dynamic multihoming, modifiable at run time, don't need aggregate links at OS level or shutdown servers/clients for a
hardwareor topology network change.
 
Message oriented connection.
Message reliability.
Inmune to SYN floods that affect tcp.
Assimetric multihoming, a client with 4 links(3x 1GbEth + wifi) can connect to a server with 1 link (10GbEth).
Metadata connection messages.

Problems:

Windows and MacOSX needs a third-party drivers.
Can't use TLS, encryption of tls record n depends on previous record. In sctp order and reliability of packets is not
assuredand packet content may change. As sctp is message oriented it needs DTLS-SCTP (not in this proposal) where
encryptionof packet n is independent from any other. See RFC 6083
 
Some network cards and drivers don't support hardware acceleration, cpu does crc check/calculation.
Firewalls needs sctp rules.

Implementation:

The tcp code resides in src/backend/libpq/pqcomm.c (unix/windows sockets and SSL socket portion) and
src/backend/libpq/ip.c(ipv6). Similar in frontend. 
 
Need new GUCs for sctp configuration, and a way to modify them at runtime.

I don't know how you want it, if you accept this proposal:

a) replicate pqcomm.c replacing tcp code with sctp in a new file pqcommsctp.c (full sctp, not compatibility tcp hack),
b) inside pqcomm.c and ip.c,
c) other

My main develop environment is FreeBSD10 and my contractor uses FreeBSD10 too but I'll check it works on some Linux
distros.


Useful links:

http://www.bsdcan.org/2008/schedule/attachments/44_bsdcan_sctp.pdf
https://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol
https://tools.ietf.org/html/rfc6083

Thanks

---   ---
Eduardo Morras <emorrasg@yahoo.es>



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Michael Paquier
Дата:
Сообщение: Re: Postgres_fdw join pushdown - getting server crash in left outer join of three table
Следующее
От: Andreas Karlsson
Дата:
Сообщение: Re: [PROPOSAL] Add SCTP network protocol to postgresql backend and frontend