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. 谷歌研究发现优秀的团队必须具备这五个关键特质
  2. Java技巧:用一个循环语句输出九九乘法表!
  3. birt脚本for循环语句_Python初级教程(11): for循环语句
  4. 【转】ubuntu 下 VNCview 远程桌面无法传输文件问题
  5. python 反射实体,动态应用
  6. Oracle分析函数参考手册
  7. vue请求PHP接口报错provisional headers are shown
  8. 电大计算机dm编写程序,渭南电大计算机应用基础网考答题过程介绍
  9. 4、线程--线程同部
  10. 百度地图JavaScript 选择 省份 显示 出省份的区域以及省份下的信息标点
  11. [C/C++]如何在ARM环境下进行开发
  12. git拉取远程仓库命令代码
  13. android自动亮度流程,Android 亮度自动调节是如何实现的?
  14. .rvm/gems/ruby-2.4.1@global/gems/cocoapods-1.5.0/lib/cocoapods/executable.rb:89: warning: Insecure
  15. 射极跟随器负载过重引起的失真问题(摘抄)
  16. cadence allegro 之如何隐藏/显示单个DRC
  17. OSG场景漫游(一)
  18. 计算机专业英语词组,《计算机专业英语词组.doc
  19. migo初始化库存 s4_SAP项目用户操作手册-MIGO货物移动.docx
  20. springBoot+springSecurity验证密码MD5加密

热门文章

  1. 浅析移动云计算服务端技术
  2. HA 自定义用户界面的外观StatesUI和lovelaceUI
  3. ActiveX控件 oxc文件的使用
  4. 软件工程复习知识点汇总(1)
  5. 你好,WebMIDI
  6. 基于压缩感知的心电信号QRS检测算法matlab仿真
  7. 记2019ICPC徐州打铁之感想by_Hile
  8. python递归函数公式_python之内置函数,匿名函数,递归函数
  9. 苹果cmsv10首涂模板第十三套宽屏大轮播支持DIY的自适应模板
  10. 人体动作识别、预测常用骨架数据集小结