TCP 之上是不是有针对高吞吐量和低延迟进行优化的协议/标准?

     2023-02-24     193

关键词:

【中文标题】TCP 之上是不是有针对高吞吐量和低延迟进行优化的协议/标准?【英文标题】:Are there any protocols/standards on top of TCP optimized for high throughput and low latency?TCP 之上是否有针对高吞吐量和低延迟进行优化的协议/标准? 【发布时间】:2009-09-04 16:54:43 【问题描述】:

是否有任何适用于 TCP 的协议/标准针对高吞吐量和低延迟进行了优化?

我能想到的只有FAST。

目前我只设计了一个由特殊字符分隔的简单的基于文本的协议。我想采用一种专为快速传输而设计的协议,并且可能支持通过 TCP 套接字传输的数据的压缩和缩小。

【问题讨论】:

【参考方案1】:

我们可以通过以下任何一种方式,在UDP之上利用TCP的面向连接/可靠的特性,而不是使用重量级的TCP:

    UDP-based Data Transfer Protocol(UDT): UDT 通过添加拥塞控制和可靠性控制机制建立在用户数据报协议 (UDP) 之上。 UDT 是一种应用程序级、面向连接的双工协议,支持可靠的数据流和部分可靠的消息传递。

    致谢: UDT 使用定期确认 (ACK) 来确认数据包传递,而否定 ACK(丢失报告)用于报告数据包丢失。当数据传输速度较高时,周期性 ACK 有助于减少反向路径上的控制流量,因为在这些情况下,ACK 的数量与时间成正比,而不是与数据包的数量成正比。

    可靠的用户数据报协议 (RUDP): 它旨在提供一种解决方案,其中 UDP 过于原始,因为需要保证顺序的数据包交付,但 TCP 增加了太多的复杂性/开销。

    它通过添加以下附加功能来扩展 UDP:

      确认收到的数据包 窗口化和拥塞控制 丢失数据包的重传 过度缓冲(比实时流更快)

    en.wikipedia.org/wiki/Reliable_User_Datagram_Protocol

【讨论】:

【参考方案2】:

如果在 TCP 之上分层,您将不会获得比“最简单”的 TCP 连接更好的吞吐量或延迟。

还有其他非 TCP 高吞吐量和/或低延迟的面向连接的协议,通常位于 UDP 之上。

我知道的几乎唯一一个是UDT,它针对高带宽或长往返时间 (RTT) 导致典型 TCP 重传次优的网络进行了优化。这些被称为“超长脂肪网络”(LFN, pronounced 'elefan')。

【讨论】:

【参考方案3】:

您可能需要考虑JMS。 JMS 可以在 TCP 之上运行,您可以使用像 ActiveMQ 这样的消息代理获得合理的延迟。

不过,这实际上取决于您的目标受众。如果您构建一个必须在任何地方运行的游戏,您几乎需要使用 HTTP 或 HTTP/Streaming。如果您在 LAN 上推送市场数据,那么不使用 TCP 的东西可能更适合您。 Tibco RV 和 JGroups 都通过多播提供可靠的低延迟消息传递。

【讨论】:

【参考方案4】:

正如您提到的 FAST - 它旨在用于市场数据分发,并被领先的证券交易所使用,并在 UDP 多播之上运行。

一般而言,以目前的网络可靠性水平,将您的协议置于 UDP 之上总是值得的。 无论会话序列号如何,NACK+server-to-client-heartbeat 和 binary marshalling 都应该接近理论性能。

【讨论】:

【参考方案5】:

如果你在发送端有admin/root权限,你也可以试试SuperTCP之类的TCP加速驱动。

【讨论】:

高吞吐低延迟java应用的gc优化实践

...高性能应用构成了现代网络的支柱。LinkedIn内部有许多高吞吐量服务来满足每秒成千上万的用户请求。为了获得最佳的用户体验,以低延迟响应这些请求是非常重要的。例如,我们的用户经常使用的产品是Fe 查看详情

确定图像存储是不是针对设备进行了优化

】确定图像存储是不是针对设备进行了优化【英文标题】:identifyingifimagestoreisoptimizedfordevice确定图像存储是否针对设备进行了优化【发布时间】:2015-07-0915:06:54【问题描述】:我正在使用ALAssetsLibrary访问照片。我的应用需要高... 查看详情

简谈以太网rdma网卡的应用

...次拷贝内存,还可绕过内核直接向网卡写数据,实现了高吞吐量、超低时延和低CPU开销的效果。实现这样功能的技术就是RDMA(RemoteDirectMemoryAccess)技术,也就把RDMA【远程直接数据存取】技术运用到了网卡控制器上。那么具有RDMA... 查看详情

简谈以太网rdma网卡的应用

...次拷贝内存,还可绕过内核直接向网卡写数据,实现了高吞吐量、超低时延和低CPU开销的效果。实现这样功能的技术就是RDMA(RemoteDirectMemoryAccess)技术,也就把RDMA【远程直接数据存取】技术运用到了网卡控制器上。那么具有RDMA... 查看详情

hadoop都有哪些优缺点

一、HDFS缺点:1、不能做到低延迟:由于hadoop针对高数据吞吐量做了优化,牺牲了获取数据的延迟,所以对于低延迟数据访问,不适合hadoop,对于低延迟的访问需求,HBase是更好的选择,2、不适合大量的小文件存储:由于namenode... 查看详情

消息中间件如何选型

特性ActiveMQRabbitMQRocketMQKafka单机吞吐量万级,吞吐量比RocketMQ和Kafka要低了一个数量级万级,吞吐量比RocketMQ和Kafka要低了一个数量级10万级,RocketMQ也是可以支撑高吞吐的一种MQ10万级别,这是kafka最大的优点,就是吞吐量高。 ... 查看详情

Spring Batch:用于高容量和低延迟的 ItemReader 实现

】SpringBatch:用于高容量和低延迟的ItemReader实现【英文标题】:SpringBatch:WhichItemReaderimplementationtouseforhighvolume&lowlatency【发布时间】:2020-12-2307:32:11【问题描述】:用例:从数据库中读取1000万行[10列]并写入文件(csv格式)。... 查看详情

分布式事务的性能设计

分布式事务的性能设计,主要包含吞吐量和相应延迟两方面。分布式事务更适合对吞吐量要求高,对相应延迟要求不苛刻的应用。性能设计有三个层面,分别为代码优化层、算法逻辑层以及架构设计层。1、代码优化层代码优化... 查看详情

分布式事务的性能设计

分布式事务的性能设计,主要包含吞吐量和相应延迟两方面。分布式事务更适合对吞吐量要求高,对相应延迟要求不苛刻的应用。性能设计有三个层面,分别为代码优化层、算法逻辑层以及架构设计层。1、代码优化层代码优化... 查看详情

http性能优化

...立新连接的成本是非常高的,有可能会占到客户端总延迟的一半以上。长连接虽然不能优化连接握手,但可以把成本“均摊”到多次请求里,这样只有第一次请求会有延迟,之后的请求就不会有连接延迟,总... 查看详情

http性能优化

...立新连接的成本是非常高的,有可能会占到客户端总延迟的一半以上。长连接虽然不能优化连接握手,但可以把成本“均摊”到多次请求里,这样只有第一次请求会有延迟,之后的请求就不会有连接延迟,总... 查看详情

linux网络性能优化(代码片段)

...分析。性能指标我们常用的衡量网络性能的指标有带宽、吞吐量、延时、PPS(PacketPerSecond)等带宽,表示链路的最大传输速率,单位通常为b/s(比特/秒)吞吐量,表示单位时间内成功传输的数据量,单位通常为b/s(比特/... 查看详情

AWS SNS 中的延迟和吞吐量是不是足以取代用于发布/订阅的专用 MQ?

】AWSSNS中的延迟和吞吐量是不是足以取代用于发布/订阅的专用MQ?【英文标题】:islatencyandthroughputinAWSSNSgoodenoughtoreplacededicatedMQforpub/sub?AWSSNS中的延迟和吞吐量是否足以取代用于发布/订阅的专用MQ?【发布时间】:2013-01-2406:57:20... 查看详情

kafka简介

...给了Apache基金会并成为顶级开源项目。二、kafka的优势高吞吐量、低延迟:kafka美妙之处是可以处理几十万条信息,它的延迟最低只有几毫秒,每个topic可以分多个partition,consumergroup对partition进行consume操作。可扩展性:kafka集群... 查看详情

性能优化总结(代码片段)

性能的定义吞吐量每秒钟可以处理的请求数—>throughout越大,延迟会越大.系统太繁忙,所以响应速度自然会降低系统延迟系统在处理一个请求或者任务时候的延迟—>系统延迟越低,能支持的吞吐就越高服务可用性在流量高峰时... 查看详情

http性能优化

...,对于HTTP协议传输的各种格式数据,我们可以有针对性地采用特殊的压缩方式。HTML/CSS/JavaScript属于纯文本,就可以采用特殊的压缩,去掉源码里多余的空格、换行、注释等元素。图片在HTTP传输里占有非常高的比... 查看详情

srt协议简述

...    SRT解决了复杂的传输时序问题,可以做到支持高吞吐量文件和超清视频的实时传输。优 查看详情

在 intel 内部函数 (AVX) 中使用混合指令

...blendv_pd函数的代码。不幸的是,这具有相当高的延迟和低吞吐量。此函数将三个__m256d变量作为输入,其中最后一个变量表示用于从前 查看详情