锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

监视和调整Linux网络协议栈:发送数据

时间:2022-07-05 15:30:00 智能压力变送器apt

目录

监控和调整Linux网络堆栈的一般建议

总览

详细外观

协议族注册

网络数据通过套接字发送

sock_sendmsg,__sock_sendmsg和__sock_sendmsg_nosec

inet_sendmsg

UDP协议层

udp_sendmsg

udp_send_skb

监视:UDP协议层统计信息

调整:套接字发送队列内存

IP协议层

ip_send_skb

ip_local_out和__ip_local_out

netfilter和nf_hook

目标缓存

ip_output

ip_finish_output

ip_finish_output2

dst_neigh_output

neigh_hh_output

n->output

监控:IP协议层

Linux网络设备子系统

Linux流量控制

dev_queue_xmit和__dev_queue_xmit

正在恢复__dev_queue_xmit

__dev_xmit_skb

调整:传输数据包导向(XPS)

排队学科!

qdisc_run_begin和qdisc_run_end

__qdisc_run

qdisc_restart

提醒,同时循环__qdisc_run

终于可以见到我们的朋友了dev_hard_start_xmit

监控qdiscs

调优qdiscs

网络设备驱动程序

驱动注册

与传输数据ndo_start_xmit

igb_tx_map

传输完成

监控网络设备

监控动态队列限制

调整网络设备

结束

附加功能

减少ARP流量(MSG_CONFIRM)

UDP瓶塞

时间戳记

结论

帮助Linux联网或其他系统


这篇博客文章解释了运行Linux当数据包从用户程序流向网络硬件时,内核计算机如何发送数据包,如何监控和调整网络堆栈的每个组件。

本文与我们之前的英文原文《监控与调整》一起Linux网络堆栈:接收数据或中文翻译《监视和调整Linux网络协议栈:接收数据》一对。span>

如果不阅读内核的源代码并且对正在发生的事情有深刻的了解,就不可能调整或监视Linux网络堆栈。

希望该博客文章可以为希望这样做的任何人提供参考。

 

有关监视和调整Linux网络堆栈的一般建议


正如我们在上一篇文章中提到的,Linux网络堆栈很复杂,没有一种适合所有解决方案的监视或调整解决方案。如果您确实想调整网络堆栈,则别无选择,只能花费大量的时间,精力和金钱来了解网络系统各部分之间的交互方式。

本博客文章中提供的许多示例设置仅用于说明目的,不建议或反对某些配置或默认设置。在调整任何设置之前,您应该围绕需要监视的内容建立参考框架,以注意到有意义的更改。

通过网络连接到机器时调整网络设置很危险;您可以轻松地将自己定在外,或者完全断开网络连接。不要在生产机器上调整这些设置;取而代之的是,对新机器进行调整,然后将其轮流投入生产。

 

总览


作为参考,您可能希望随身携带一份器件数据手册。这篇文章将检查由igb设备驱动程序控制的Intel I350以太网控制器。您可以在此处找到该数据表(警告:大PDF)以供参考。

从用户程序到网络设备的高级路径网络数据如下:

  1. 数据是使用系统调用写入(如sendtosendmsg等人)。
  2. 数据通过套接字子系统传递到套接字的协议系列系统(在我们的示例中为AF_INET)。
  3. 协议族通过协议层(在许多情况下)将数据安排到数据包中传递数据。
  4. 数据通过路由层,沿途填充目标缓存和邻居缓存(如果它们很冷)。如果需要查找以太网地址,则可以生成ARP通信。
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章