Published on: 2013-03-24T09:11:24+00:00
The conversation revolves around the usage of SCTP (Stream Control Transmission Protocol) and newer user-mode transports that run over UDP. The person expressing their opinions is a fan of SCTP but acknowledges that firewall practices often restrict the implementation of new protocols like SCTP. They suggest exploring alternative protocols like UDT (UDP-based Data Transfer Protocol) and SCTP, which offer advanced features such as reliable data transfer, multi-streaming capabilities, and support for multiple flows sharing a single port. The person also mentions that they are not directly involved in the project but want to prevent reinventing the wheel.In another conversation between Gregory Maxwell and Jeff Garzik, it is mentioned that SCTP is considered an optimal transport for Bitcoin-like messaging due to its versatility in adjusting almost everything into a message. However, Jeff Garzik points out that firewall practices tend to hinder the implementation of new protocols like SCTP.Jay F raises concerns about TCP/UDP port forwarding for bulk data transfer and suggests using tunneling. They provide a link to a document discussing the encapsulation of DTLS over SCTP and suggest that using SCTP could be beneficial for Bitcoin-like messaging. Jay F also suggests that using SCTP could result in a data stream resembling WEBRTC traffic.UDT is highlighted as a solution for breaking the data transfer bottleneck, as it uses UDP to transfer bulk data with its own reliability control and congestion control mechanisms. It allows multiple UDT flows to share a single UDP port, making it firewall-friendly. However, it may not be friendly to NAT. SCTP is mentioned as another protocol that provides reliable, ordered, and error-checked delivery of data between applications, with support for multiple streams of messages in a single connection.Jeff Garzik proposes a rough draft implementation of a UDP P2P protocol extension for Bitcoin. The goals include improving "inv" relay speed, unconditional "tx" broadcasting via UDP as an alternative to "inv" for small transactions, improving block relay speed, and opening up new design avenues more suited to UDP than TCP. The protocol specification includes using UDP bound to the same port as TCP P2P, requiring an active simultaneous TCP P2P connection, permitting multiple P2P messages per UDP packet, and setting a maximum UDP packet size of 100*1024 bytes.The conversation discusses the usage of UDP and the need for a notion of association when subscribing to a broadcast. It is proposed that a parallel TCP connection with a version/verack sequence can be used if a connection is needed. Alternatively, a more robust and heavyweight UDP P2P protocol could be a hole-punching TCP alternative, but further experimentation and community input are required. Bittorrent's use of UDP in its protocols is mentioned as a potential solution to problems with short-lived HTTP connections and bufferbloat in active TCP connections.Randy Willis suggests introducing super-nodes with thousands of connected peers to enhance the capabilities of UDP, but Luke-Jr emphasizes that any UDP bitcoin protocol should not try to emulate a connection.Jeff Garzik's rough draft implementation of the UDP P2P protocol extension for Bitcoin is detailed, highlighting its features, such as multiple P2P messages per UDP packet, advertising NODE_UDP, and handling commands like "inv", "tx", and "addr". The project aims to improve "inv" relay speed, investigate unconditional "tx" broadcasting via UDP, improve block relay speed, and explore new design avenues for P2P patterns more suited to UDP. Jeff Garzik believes that productive discussions start with code rather than endless discussion.
Updated on: 2023-08-01T04:34:51.200804+00:00