I210 supports AVB and ETF (Earliest TxTime First, Time-Based Scheduling), but does not support TSN (802.1Qbv).
I225 (IGC) supports TSN, each Tx queue has the start_time and end_time, they are within [0, cycle_time].

1 Intel I210网卡
1.1 PHY配置
Intel的LAN芯片中,一般情况下PHY是集成的,所以通过EEPROM可以配置LAN芯片输出信号的种类,可以接电口RJ45和光口SFP。
如果LAN芯片接SFP,则在EEPROM中将Link Mode配置成SerDes(1000Base-BX);如果LAN芯片接RJ45,则在EEPROM中将Link Mode配置成copper PHY;如果LAN芯片接另外一颗PHY,则在EEPROM中将Link Mode配置成SGMII Mode。

1.2 MAC地址寄存器
EEPROM size is Nx16 bit, the first 3x16 bit for ethernet MAC, the value from this field is loaded into the Receive Address Register 0 (RAL0/RAH0). There are 16 pairs RALx/RAHx, they could be used to filter AVB Rx MAC to separate queues, refer to I210 page 259.

1.3 DMA
有5种不同形式的DMA描述符。Legacy和Advanced Receive描述符不能同时工作,由寄存器SRRCTL[n].DESCTYPE = 000b控制二选一;而Transmit描述符中的bit 29位DEXT表示是Legacy还是Advanced。E1000 DMA描述符指向内存的数据传输完毕后,网卡会修改描述符的数据,并且修改后的描述符格式与软件准备的数据差别很大。
Legacy Receive Descriptor
Advanced Receive Descriptor
Legacy Transmit Descriptor
Advanced Transmit Context Descriptor
Advanced Transmit Data Descriptor

RX BD有关的4个寄存器,其中n的范围从0到3。
RDBA[n]:存放描述符缓冲的首地址
RDH[n]和RDT[n]:头尾指针,存放相对基址的偏移量,网卡使用RDH[n]和RDT[n]之间的描述符进行接收报文处理。RDH[n]寄存器由网卡在回写一个报文接收描述符给驱动之后更新,RDT[n]寄存器由网卡驱动在提供报文接收描述符给网卡之后更新
RDLEN[n]:为缓冲区分配的总空间的字节大小

注:如果RDH[n]追上了RDT[n](RDH[n] == RDT[n]),那么说明接收队列已经没有空闲的描述符了,网卡将丢弃这个包。如果有空闲的接收描述符,它将复制这个包的数据到描述符指向的缓存中,设置这个描述符的DD和EOP状态位,并递增RDH[n]。参考文档Virtio networking: A case study of I/O paravirtualization。

1.4 FIFO
In legacy mode, all of Tx (Rx) queues share only one Tx (Rx) FIFO, refer to 82576EB.
In Qav mode, every Tx queue has a dedicated Tx FIFO, but all of Rx queues still share only one Rx FIFO, refer to I210 page 388, multiple Tx FIFO are similar to dwc eqos.

1.5 Linux网卡驱动2个重要函数
struct net_device {
    [...]
    dev_addr; // arp
    // ifconfig eth0 hw ether 00:11:22:33:44:55
    set_mac_address;
    // promiscuous and multicast
    // ifconfig eth0 promisc
    // ifconfig eth0 -promisc
    set_multicast_list;
    [...]
};

1.6 关闭I210网卡的硬件tcp分段功能
ethtool -k eth0
ethtool -K eth0 tso off

1.7 校验和offload
软件校验和计算位置
dev_queue_xmit() -> validate_xmit_skb()

1.8 NIC PXE Option ROM
[24-Feb-2022]
Preboot Execution Environment is short for PXE, which is for diskless work station, iSCSI, etc. PXE includes simple BIOS NIC driver, dhcp and ftp applications, and is recognized as a NIC bootROM. Refer to C3000 Integrated 10 GbE LAN Controller PRM.

1.9 Linux网卡流量控制工具tc
Linux tc mqprio对接net_device_ops中的函数指针ndo_setup_tc()。

script实现
qdisc: dev_queue_xmit()
HTB: Hierarchical Token Bucket
burst: size of the bucket, in bytes. This is the maximum amount of bytes that tokens can be available for instantaneously, whose minimum buffer size is equal to rate / HZ(zcat /proc/config.gz | grep HZ). The final piece is a token-making machine that adds rate/HZ tokens to the bucket every tick

# tc uses the following units when passed as a parameter.
# kbps: Kilobytes per second
# mbps: Megabytes per second
# kbit: Kilobits per second
# mbit: Megabits per second
# bps: Bytes per second
#
# Amounts of data can be specified in:
# kb or k: Kilobytes
# mb or m: Megabytes
# mbit: Megabits
# kbit: Kilobits
# To get the byte figure from bits, divide the number by 8 bit
#

# disable eth0 qdisc
tc qdisc del dev eth0 root

# enable eth0 qdisc
# parent class: 1
# subclass ID: 1
tc qdisc add dev eth0 root handle 1: htb default 20
tc class add dev eth0 parent 1: classid 1:1 htb rate 200kbps ceil 200kbps burst 4k # burst max 4 Kilobytes per 1/HZ
tc class add dev eth0 parent 1: classid 1:20 htb rate 90mbit ceil 95mbit burst 14k # burst max 14 Kilobytes per 1/HZ
# fwmark classifier, u32 classifier (Universal/Ugly 32bit)
tc filter add dev eth0 parent 1: prio 1 protocol ip u32 match ip dport 8000 0xffff flowid 1:1

2 Wireshark
2.1 时间戳调整为UTC显示格式
View -> Time Display Format -> Date and Time of Day

2.2 常用过滤关键字
1)someip
2)ip.src == 192.168.1.1 - 改到对应的ip地址
3)ip.src == 192.168.1.1 and ip.dst == 192.168.1.2 - 改到对应的ip地址
4)someip.messageid == 0xffff8100 and ip.src == 192.168.1.2 - 改到对应的ip地址
5)dns - 调试域名解析
6)tcp.port == 8000
7)!(tcp.analysis.retransmission)
8)tcp.flags.syn==1 or tcp.flags.ack==0
9)tcp.flags.fin == 1
10)usb.src == "1.6.1" and usb.dst == "host" - 改到对应的USB bus_no.addr.ep_no

2.3 tcpdump抓包原理
__netif_receive_skb_core()
xmit_one()

3 网络丢包分析工具
set_irq_affinity
netstat -i
netstat -su (for Linux desktop)
ethtool -g eth0
ethtool -G eth0 tx 4096
MSS(Maximum Segment Size)就是IP数据包每次能传输的最大数据分段,这个值是MTU值减去IP数据包头大小20Byte和TCP数据段的包头20Byte。即MSS + 40 = MTU。

4 socket发送接收缓冲区修改
4.1 Windows
Windows默认是8K。
AFD:Ancillary Function Driver for WinSock

[HKEY_LOCAL_MACHINE SYSTEM CurrentControlSetServicesAfdParameters]
DefaultReceiveWindow = 1800 (16进制)
DefaultSendWindow = 1800(16进制)

4.2 Linux
/proc/sys/net/core/rmem_default
/proc/sys/net/core/wmem_default

5 Abbreviations
3Com: Computer, Communication, Compatibility, by Robert Metcalfe
FM2112: Fulcrum Microsystems switch IC, was acquired by Intel in July, 2011
IGB:Intel Gigabit Ethernet
ioat:Intel Ethernet I/O Acceleration Technology
MIB:Management Information Base,交换机收发数据统计模块
OFA:OpenFabrics Alliance
PTP:Precision Time Protocol ,精准时间同步协议
Qav:Queuing and Forwarding Protocol,队列及转发协议
tdt:tx_descriptor_tail
Traffic Shaping:流量整形
TSO:TCP Segment Offload,把TCP数据分段放到网卡(offload)来做
XAUI:读作Zowie,万兆以太网物理层接口收发都是4-Lane,每个Lane的速度是3.125Gb/s

Intel I210网卡相关推荐

  1. Intel I210网卡简述

    命名 型号 Code Name 描述 I210-AT Springville Commercial Temperature, Support a Media dependent interface(M ...

  2. Intel I210芯片网卡

    Intel I210芯片 Intel I210以太网控制器低功耗,小尺寸,单端口千兆位网络控制器,为运行严格控制的媒体流同步和缓冲提供了理想的GbE解决方案,增强网络连接性,其功能可提高嵌入式应用的性 ...

  3. Intel 82576网卡

    基于Intel 82576芯片自主研发的光纤网卡,主要有2个型号,千兆双电口网卡和千兆双光口网卡,Intel 82576网卡被广泛运用在网络项目中.下面给大家想想介绍下Intel 82576网卡. I ...

  4. Server2012R2下安装intel 82579v网卡驱动

    不知道有没有和我一样喜欢使用新系统的IT人士,在使用新系统的过程中,总会遇到这样那样的问题.两周前在安装windows server 2012时,无法安装有线网卡驱动.在使用驱动精灵驱动了一下后出现计 ...

  5. x99ud4装linux,技嘉(GIGABYTE)X99-UD4主板集成的Intel I218-V网卡,安装Ubuntu12.04无法正确驱动...

    帖子 技嘉(GIGABYTE)X99-UD4主板集成的Intel I218-V网卡,安装Ubuntu12.04无法正确驱动 1)ifconfig没有eth0: 2)lspci能查找到I218-V设备 ...

  6. inteli211网卡linux驱动,Intel i211网卡在server2016中无驱动的解决方案

    Intel为增加其服务器版本的主板销量,对一些非服务器的网卡,不提供驱动支持,所以在一些PC机.工控机.嵌入式系统上,你会为装了server2012R2或SERVER2016,却找不到网卡驱动而抓狂. ...

  7. 统信UOS安装Intel I219-LM 网卡

    在联想的台式机上安装统信UOS,结束后发现没有网卡.于是检查当前的网卡设备: lspci -nn | grep -i net 或使用设置管理器也可以看到是Intel I219-LM网卡,这个在Inte ...

  8. Intel e1000 网卡

    参考资料: 1.Intel 82547 网卡 开发 手册.其他Intel网卡的手册应该也可以从网上下载到. http://linux.chinaunix.net/bbs/thread-1142051- ...

  9. linux e1000e 网卡驱动,在centos7上安装intel e1000e 网卡驱动

    入手了一个intel nuc小盒子玩,网卡是e1000e的, 需要安装驱动. 首先安装 kernel-devel, gcc, 注意这个时候没有网的,你需要把对应的rpm从ios里面解压出来安装 下载 ...

最新文章

  1. vue 移动端签字_Vue 移动端
  2. HTML5圆形线性渐变,css中linear-gradient()函数是干什么的?实现线性渐变的圆形边框(代码)...
  3. shiro教程:整合ehcache缓存
  4. rust-let 不可变绑定与可变绑定(4)
  5. Java8学习笔记(三)--方法引入
  6. 看完这篇还不了解Nginx,那我就哭了!
  7. 【报告分享】2021年品牌CDP与营销数字化转型报告.pdf(附下载链接)
  8. OpenStack KVM环境搭建
  9. 如何去除PDF的水印
  10. 【最新最全】JavaScript从入门到精通_Web前端必学的JS教程
  11. 手动挡五个档位示意图_小型C1手动挡汽车档位分布示意图
  12. MATLAB 读取图片像素处理
  13. Djano3.0使用-CBV使用实例
  14. 什么是IC封测?语音芯片封装与测试的流程步骤
  15. Android9.0 Wifi模块Framework层分析
  16. C++算法:最大回文子串---动态规划-----夹逼法----中心扩展法
  17. 蔡徐坤:千万级“顶流”的背后,到底有多少真实成绩?
  18. 【开源物联网】MQTT物联网网关Broker与Java开源实现
  19. 有几种水果不能空腹吃,你知道吗?
  20. 北斗三号频点有哪些_北斗一号二号三号区别

热门文章

  1. 推流式搅拌器选型功率计算方法_缺氧池潜水搅拌器选型计算 铁氧池水下搅拌机功率选择...
  2. dtsi与dts_设备树dts dtsi文件
  3. kangle怎么找php.ini_kangle主机伪静态规则怎么配置
  4. 第十届山东省ACM省赛总结
  5. 修改Element-ui中tree组件最底层节点的样式
  6. IEEE-Micro 2021-2010年间CPU Micro-architecture方向文章总结
  7. MATLAB simulink小电流系统单相接地故障选线仿真模型
  8. Handler源码翻译
  9. 浙大三维视觉团队提出 Neural Body,单目RGB视频重建人体三维模型,无需预训练网络...
  10. 中国天气网天气预报API接口城市代码,XML格式,数据具体到县 区级别