首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Nano Transport:一种硬件实现的用于SmartNIC的低延迟、可编程传输层

摘要:传输协议可以在NIC(网卡)硬件中实现,以增加吞吐量、减少延迟并释放CPU周期。如果已知理想的传输协议,那么最佳的实现方法很简单:直接将它烧入到固定功能的硬件中。但是传输协议仍在发展,每年都有提出新的创新算法。最近的一项研究提出了Tonic,这是一种Verilog可编程硬件传输层。我们在这项工作的基础上提出了一种称为纳米传输层的新型可编程硬件传输层架构,该架构针对主导大型现代分布式数据中心应用中极低延迟的基于消息的 RPC(远程过程调用)进行了优化。Nano Transport使用P4语言进行编程,可以轻松修改硬件中的现有(或创建全新的)传输协议。我们识别常见事件和基本操作,允许流水化、模块化、可编程的流水线,包括分组、重组、超时和数据包生成,所有这些都由程序设计员来表达。

03

TCP/IP具体解释–TCP/UDP优化设置总结& MTU的相关介绍「建议收藏」

当中以太网(Ethernet)的数据帧在链路层    IP包在网络层    TCP或UDP包在传输层    TCP或UDP中的数据(Data)在应用层    它们的关系是 数据帧{IP包{TCP或UDP包{Data}}}    ——————————————————————————— 在应用程序中我们用到的Data的长度最大是多少,直接取决于底层的限制。    我们从下到上分析一下:    1.在链路层,由以太网的物理特性决定了数据帧的长度为(46+18)-(1500+18),当中的18是数据帧的头和尾,也就是说数据帧的内容最大为1500(不包含帧头和帧尾)。即MTU(Maximum Transmission Unit)为1500;   2.在网络层。由于IP包的首部要占用20字节,所以这的MTU为1500-20=1480;  3.在传输层,对于UDP包的首部要占用8字节。所以这的MTU为1480-8=1472。    所以,在应用层,你的Data最大长度为1472。

01

IPPROTO_IP , IPPROTO_RAW

对于socket(AF_INET, SOCK_RAW, IPPROTO_IP),其原型为 int socket (int domain, int type, int protocol); 1 参数protocol用来指明所要接收的协议包,如果是象IPPROTO_TCP(6)这种非0、非255的协议,当操作系统内核碰到ip头中protocol域和创建socket所使用参数protocol相同的IP包,就会交给这个raw socket来处理,因此,一般来说,要想接收什么样的数据包,就应该在参数protocol里来指定相应的协议。当内核向此raw socket交付数据包的时候,是包括整个IP头的,并且已经是重组好的IP包。 2 如果protocol是IPPROTO_RAW(255),这时候,这个socket只能用来发送IP包,而不能接收任何的数据。发送的数据需要自己填充IP包头,并且自己计算校验和。 3 对于protocol为0(IPPROTO_IP)的raw socket。用于接收任何的IP数据包。其中的校验和和协议分析由程序自己完成。

02
领券