Intel I210网卡

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

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: i211网卡是一款常见的网卡型号,而i210则是另一款不同型号的网卡。要将i211网卡刷成i210型号,需要进行以下步骤: 1. 准备工具和软件:需要一台电脑、网线连接和刷网卡的软件。可以在网络上找到刷网卡的软件,确保选择的软件与i210型号兼容。 2. 下载并安装刷网卡软件:在合法和可信赖的网站下载i210网卡驱动程序,并按照软件提供的指导安装好。 3. 准备i210网卡的固件文件:从官方网站或其他可信赖的来源下载合适的i210网卡固件文件,并确保文件与刷网卡软件兼容。 4. 打开刷网卡软件:运行刷网卡软件,并在软件界面找到刷网卡选项。 5. 连接i211网卡:将i211网卡通过网线连接到电脑的网卡插槽上,并确保连接稳定。 6. 选择固件文件并开始刷卡:在刷网卡软件界面中,选择之前下载的i210的固件文件,并点击开始刷卡按钮。 7. 等待刷卡完成:刷卡过程可能需要一些时间,请耐心等待刷卡的完成,并注意刷卡过程中的任何错误提示。 8. 完成刷卡:刷卡过程完成后,软件会提示刷卡成功。此时,i211网卡已经成功刷成i210型号。 需要注意的是,刷卡是一项风险较高的操作,如果操作不当可能导致网卡无法正常使用或出现其他问题。因此,在进行刷卡操作之前,请确保自己具备相关知识和经验,或者寻求专业人士的帮助,以避免损坏设备或数据丢失。 ### 回答2: i211网卡是一款由Intel开发的网络接口卡,而i210网卡也是由Intel开发的另一款网络接口卡。虽然它们都是由Intel开发,但是它们之间有一些差异,包括硬件设计和功能特点。 如果您想要将i211网卡刷成i210,首先需要明确的是,这种修改操作是需要谨慎考虑的。因为i211和i210是不同的产品,它们之间存在硬件差异,刷i210固件可能会导致i211无法正常工作,甚至可能损坏设备。因此,在进行任何刷写操作之前,请务必确保您知晓风险,并备份好原始固件。 如果您确信要进行这一操作,可以尝试以下步骤: 1. 在网上搜索并下载i210的固件文件。 2. 使用支持固件刷新的工具,比如Intel提供的刷新工具或第三方刷新工具。 3. 将i210的固件文件加载到刷新工具中。 4. 连接i211网卡到电脑,并确保网络接口卡与计算机的连接是稳定的。 5. 按照刷新工具提供的步骤和说明,刷写i210固件到i211网卡上。 6. 刷新完成后,重新启动计算机,并检查i211网卡是否正常工作。 需要注意的是,刷写固件有风险,操作时要小心谨慎,并确保您具备充分的计算机硬件和软件知识。建议在进行操作前,查阅更多有关刷写网卡固件的相关资料,或者咨询专业人士的建议。 ### 回答3: i211网卡i210网卡是英特尔公司推出的两种不同型号的网卡。如果您想要将i211网卡刷成i210网卡,这需要进行一些技术性的操作。这个过程叫做刷BIOS(Basic Input Output System)。刷BIOS的目的是更新硬件设备的固件,以实现特定的功能或修复潜在问题。 首先,您需要下载适用于i210网卡的固件文件,并确保这个固件文件与您的网卡型号完全相匹配。然后,您需要下载一个工具软件,例如Intel的固件刷新工具。接下来,您需要按照软件的使用说明,将网卡与计算机连接好,并在DOS环境下运行工具软件。在运行工具软件之前,最好备份您的网卡的原始BIOS以防止出现意外情况。 一旦您运行了固件刷新工具,软件会引导您选择您所下载的固件文件,并开始执行固件刷写程序。整个刷写过程可能需要一段时间,请耐心等待。完成刷写后,您需要重新启动计算机,让新的固件生效。 值得注意的是,刷写网卡固件存在一定的风险。如果刷写过程中出现错误或中断,可能会导致网卡损坏或无法正常工作。因此,在进行这个操作之前,务必要确保您有足够的技术知识和经验,并明白刷写操作的风险。 总之,如果您希望将i211网卡刷成i210网卡,您可以通过下载适用的固件文件,并运行固件刷新工具来实现。但请记住,在进行此操作之前,请备份原来的BIOS并谨慎操作,以免造成不可逆的损坏。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值