Linux 查看网卡接收报文信息命令ethtool
来源:互联网 发布:js canvas 图片合成 编辑:程序博客网 时间:2024/04/29 05:51
POS(packet over sonet)就是为了在传统SDH/SONET网络上传输IP分组。由于历史上电信的传输基本上都是基于SDH的,无法直接传输IP分组,所以需要使用PoS端口与IP分组网络互连互通。现在很多电信运营商都在计划布设纯IP的传输网络,直接放弃SDH网。(不过基本上都是“计划”而已,好像只有BT在真的做网卡
FIFO buffer
大部分的Intel千兆网卡都内置了 FIFO buffer,通过FIFO buffer 网卡将数据包传入、传出DMA,所以对于高吞吐量的应用来说,这个部件是非常重要的。 不过,Intel 的前兆网卡的差别不大,按官方资料都可支持高负责的应用。不过,集成到主板的ICH8 千兆网卡 82566DC 不知是否因为失误Gigabit adapter只设计了16K的FIFO buffer。这就意味着,默认8K 用来接收,8K 用来发送,其潜在问题,不言而喻。如果FIFO buffer过小,也会增加PCI-Express延迟,使得吞吐在100Kpps左右就到达极限。继而首先flow-control 将不能正常工作,即便不出问题也会出现丢包。
因此,足够大的"Packet buffer",或者称为FIFO 是非常必要的。intel家族的网卡,可以通过查看PBA的值确认其大小,有时候 RX 的buffer大于TX, 例如 PBS 64K, PBA 48K。通常将 RX FIFO buffer 大小定义为 PBA ,可在源码中查看:
oid e1000_reset(struct e1000_adapter *adapter)
{
u32 pba = 0, tx_space, min_tx_space, min_rx_space;
u16 fc_high_water_mark = E1000_FC_HIGH_DIFF;
bool legacy_pba_adjust = false;
switch (adapter->hw.mac_type)
{
case e1000_82542_rev2_0:
case e1000_82542_rev2_1:
case e1000_82543:
case e1000_82544:
case e1000_82540:
case e1000_82541:
legacy_pba_adjust = true;
pba = E1000_PBA_48K;
break;
case e1000_82545:
case e1000_82545_rev_3:
case e1000_82546:
case e1000_82546_rev_3:
pba = E1000_PBA_48K;
break;
case e1000_82547:
case e1000_82547_rev_2:
legacy_pba_adjust = true;
pba = E1000_PBA_30K;
break;
case e1000_82571:
case e1000_82572:
case e1000_80003es2lan:
pba = E1000_PBA_38K;
break;
case e1000_82573:
pba = E1000_PBA_20K;
break;
case e1000_ich8lan:
pba = E1000_PBA_8K;
}
请注意,就像前面提到的,pba = E1000_PBA_8K;
网卡错误诊断
如果发现网卡丢包,可以通过ethtool查看错误原因 ethtool -S ethX.
MegaRouterXeon-KARAM ~ # ethtool -S eth0
NIC
statistics:
rx_packets: 3282740738
tx_packets: 3279620759
rx_bytes: 1890275803477
tx_bytes: 1885940915317
rx_broadcast: 243768
tx_broadcast: 26050
rx_multicast: 1894634
tx_multicast: 67842
rx_errors: 0
tx_errors: 0
tx_dropped: 0
multicast: 1894634
collisions: 0
rx_length_errors: 0
rx_over_errors: 0
rx_crc_errors: 0
rx_frame_errors: 0
rx_no_buffer_count: 113102
rx_missed_errors: 10308
tx_aborted_errors: 0
tx_carrier_errors: 0
tx_fifo_errors: 0
tx_heartbeat_errors: 0
tx_window_errors: 0
tx_abort_late_coll: 0
tx_deferred_ok: 30151971
tx_single_coll_ok: 0
tx_multi_coll_ok: 0
tx_timeout_count: 0
tx_restart_queue: 4967999
rx_long_length_errors: 0
rx_short_length_errors: 0
rx_align_errors: 0
tx_tcp_seg_good: 102
tx_tcp_seg_failed: 0
rx_flow_control_xon: 30545078
rx_flow_control_xoff: 30730827
tx_flow_control_xon: 2799
tx_flow_control_xoff: 5653
rx_long_byte_count: 1890275803477
rx_csum_offload_good: 3081285221
rx_csum_offload_errors: 140979
rx_header_split: 0
alloc_rx_buff_failed: 0
tx_smbus: 0 rx_smbus: 3 dropped_smbus: 0
rx_no_buffer_count: 113102
如果出现这个类型的错误,可能原因是需要增加 "ring" 的大小。例如
MegaRouterXeon-KARAM ~ # ethtool -g eth0
Ring parameters for eth0:
Pre-set
maximums:
RX: 4096 RX
Mini: 0 RX
Jumbo: 0
TX: 4096 Current hardware settings:
RX: 1024 RX
Mini: 0 RX
Jumbo: 0
> ethtool -S eth1 内核协议栈对校验和错误的报文会丢弃。
NIC statistics:rx_packets: 1859
tx_packets: 178
rx_bytes: 1063575
tx_bytes: 9516
rx_broadcast: 0
tx_broadcast: 0
rx_multicast: 0
tx_multicast: 0
rx_errors: 0
tx_errors: 0
tx_dropped: 0
multicast: 0
collisions: 0
rx_length_errors: 0
rx_over_errors: 0
rx_crc_errors: 0
rx_frame_errors: 0
rx_no_buffer_count: 0
rx_missed_errors: 0
tx_aborted_errors: 0
tx_carrier_errors: 0
tx_fifo_errors: 0
tx_heartbeat_errors: 0
tx_window_errors: 0
tx_abort_late_coll: 0
tx_deferred_ok: 0
tx_single_coll_ok: 0
tx_multi_coll_ok: 0
tx_timeout_count: 0
tx_restart_queue: 0
rx_long_length_errors: 0
rx_short_length_errors: 0
rx_align_errors: 0
tx_tcp_seg_good: 0
tx_tcp_seg_failed: 0
rx_flow_control_xon: 0
rx_flow_control_xoff: 0
tx_flow_control_xon: 0
tx_flow_control_xoff: 0
rx_long_byte_count: 1063575
rx_csum_offload_good: 1740
rx_csum_offload_errors: 119
alloc_rx_buff_failed: 0
tx_smbus: 0
rx_smbus: 0
dropped_smbus: 0
- Linux 查看网卡接收报文信息命令ethtool
- ethtool - 查看网卡信息
- linux网卡信息-ethtool
- 查看网卡信息linux命令
- linux下查看网卡信息的命令
- linux下查看网卡信息的命令
- linux 网卡参数 ethtool
- 查看linux系统网卡工作模式、速率等ethtool eth0
- linux查看网卡信息
- 用ethtool 命令解决Linux 网卡丢包
- linux系统中查看网卡的信息命令小汇
- Linux 查看系统信息命令 cpu、内存、进程、硬盘、网卡
- Linux 环境下查看网卡的信息的命令
- linux查看网卡信息的几种方法(命令)
- linux命令--ethtool
- linux ethtool命令
- Linux ethtool命令
- linux中的ethtool命令
- 嵌套循环连接(nested loops join)原理
- VC 多线程编程
- WPF读写.exe.config 或 app.config文件
- 再探Java基础——String.format(String format, Object… args)的使用
- ResultSet转换List或直接遍历解决null问题
- Linux 查看网卡接收报文信息命令ethtool
- 由openSession、getCurrentSession和HibernateDaoSupport浅谈Spring对事物的支持
- 借用snort实现网络扫描器发现功能
- 向eclipse中导入android自带的demo
- vim 使用 技巧
- 关于javascript URL 传递参数乱码的问题及解决方案。
- hdu 4433 locker(DP)
- 猴子选大王
- xhEditor在线编辑器使用实例