我有一个运行内核 3.8 (BBB) 的 linux 嵌入式系统。网络层是这样的:
- 应用程序(使用 UDP/IP 和 ICMP/IP 协议)
- 通过串行 tty 进行 pppd
- 串口
- 通过 USB 串行端口(慢速链路,19kbps)提供透明无线电发射器/接收器的 USB 硬件
当无线电链路(或者可能是 USB 硬件)出现问题时,不会发送包(因此它们会在某个地方缓冲——可能在 ppp 或内核中)。
但是,由于环境嘈杂,链路每小时会断开/接通很多次。
包在某个地方被缓冲,因为当链接建立时,所有缓冲的包都会被发送(暂时超载低速链接)。
我见过一些罕见的情况,我得到了 RTT 为 400 秒的 ICMP-echo-reply!(甚至超过 255 秒或跳跃所允许的最大 TTL)
我的问题:
- 如何知道这些包是否被内核、pppd 或 usbserial 缓冲?
- 如何告诉(手动)(内核或pppd或usbserial)丢弃输出缓冲区?
- 如何检查(或限制)这些缓冲区使用了多少内存?