首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当NIC接收数据时,网络中断处理程序将执行什么操作?

当NIC接收数据时,网络中断处理程序将执行以下操作:

  1. 中断处理程序会首先检查接收到的数据包的完整性和有效性,包括校验和、帧头等信息的验证。
  2. 接着,中断处理程序会将接收到的数据包从NIC的接收缓冲区复制到内存中的指定位置,以便后续的处理和分析。
  3. 中断处理程序会根据数据包的目的地址和协议类型,将数据包分发给相应的网络协议栈进行进一步处理。例如,如果数据包是TCP/IP协议栈的数据包,中断处理程序会将数据包交给TCP/IP协议栈进行处理。
  4. 在数据包被交给相应的网络协议栈之前,中断处理程序可能会进行一些基本的过滤和筛选操作,例如根据源地址或目的地址进行过滤,或者根据一些特定的规则进行数据包的分类和处理。
  5. 最后,中断处理程序会通知操作系统或应用程序,告知有新的数据包到达,并可能触发相应的事件或回调函数,以便操作系统或应用程序能够及时处理接收到的数据。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(Elastic Cloud Server,ECS):提供灵活可扩展的云服务器实例,满足不同规模和需求的应用场景。详情请参考:https://cloud.tencent.com/product/cvm
  • 腾讯云云原生容器服务(Tencent Kubernetes Engine,TKE):基于Kubernetes的容器管理服务,提供高可用、弹性伸缩的容器集群,简化容器化应用的部署和管理。详情请参考:https://cloud.tencent.com/product/tke
  • 腾讯云云数据库MySQL版(TencentDB for MySQL):提供稳定可靠的云数据库服务,支持高可用、备份恢复、性能优化等功能,适用于各种规模的应用。详情请参考:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云内容分发网络(Content Delivery Network,CDN):通过在全球部署的节点,加速静态内容的传输,提高用户访问速度和体验。详情请参考:https://cloud.tencent.com/product/cdn
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ethtool 原理介绍和解决网卡丢包排查思路

驱动处理速度跟不上网卡收包速度,驱动来不及分配缓冲区,NIC 接收到的数据包无法及时写到 sk_buffer,就会产生堆积, NIC 内部缓冲区写满后,就会丢弃部分数据,引起丢包。...提到中断,就涉及到硬中断和软中断,首先需要简单了解一下它们的区别: 硬中断:由硬件自己生成,具有随机性,硬中断被 CPU 接收后,触发执行中断处理程序。...每个网卡都有一个中断处理程序,用于通知网卡该中断已经被接收了,以及把网卡缓冲区的数据包拷贝到内存中。 网卡接收来自网络数据,需要通知内核数据包到了。网卡立即发出中断。...内核通过执行网卡已注册的中断处理函数来做出应答。中断处理程序开始执行,通知硬件,拷贝最新的网络数据包到内存,然后读取网卡更多的数据包。 这些都是重要、紧迫而又与硬件相关的工作。...网络数据包被拷贝到系统内存后,中断的任务算是完成了,这时它把控制权交还给被系统中断前运行的程序

1.3K30

网卡卸载(Nic Offload)-硬件卸载-DPU-智能网卡

简介为了降低CPU利用率, 更多的CPU释放给业务使用, 大多数现代操作系统都支持某种形式的网络卸载,其中一些网络处理发生在网卡 NIC 而不是 CPU 上, 它可以释放系统其余部分的资源, 这样操作系统就能处理更多连接...可以创建最大允许 64KiB 的数据包,并提供发送 (Tx) 和接收 (Rx) 选项。发送或接收大量数据,这可能意味着每发送或接收 64KiB 的数据处理一个大数据包,而不是处理多个较小的数据包。...如果 NIC 无法处理分段/碎片,GSO 会绕过 NIC 硬件执行相同的操作。这是通过尽可能晚地延迟分段来实现的,例如,数据包由设备驱动程序处理。...它们可以在驱动程序中或使用 NIC 进行合并。LRO 的一个问题是它倾向于重新分段所有传入数据包,通常会忽略标头和其他可能导致错误的信息的差异。启用 IP 转发,通常无法使用 LRO。...NIC 执行 TCP 分段(读取 - 它将把大数据块分成段)。支持 LRO 的 NIC 接收数据包并重新组装它们,然后再将数据传递到本地软件。

74500
  • LINUX网络子系统中DMA机制的实现

    不论是最早的轮询方式,还是我们学过的中断方式。虽然中断方式相比轮询方式已经节省了大量的CPU资源。但是在处理大量的数据,DMA相比中断方式进一步解放了CPU。...在I/O准备阶段,程序轮询方式的CPU一直在查询等待,而中断方式的CPU可以继续执行现行程序,但是I/O准备就绪,设备向CPU发出中断请求,CPU响应以实现数据的传输,这个过程会占用CPU一段时间,而且这段时间比使用程序轮询方式的...每一个输入数据包被放置在环形缓冲区中下一个可用缓冲区,然后发出中断。接着驱动程序网络数据包传给内核的其它部分处理,并在环形缓冲区中放置一个新的 DMA 缓冲区。...上图中虚线步骤的解释: 1.DMA 接口网卡(NIC接收数据包(packet)逐个写入 sk_buff ,被写入数据的 sk_buff 变为 used 状态。...4.poll 函数对数据进行检查,例如几个 sk_buff 合并,因为可能同一个数据可能被分散放在多个 sk_buff 中。 5.poll 函数 sk_buff 交付上层网络处理

    5.2K62

    分析核亲和性对高吞吐量的流的影响

    Linux网络接收处理消息在现代系统上主要有两种实现方式:首先通过中断处理(通常会联合处理),一旦NIC接收到特定数量的报文后,就会向处理器发起中断,然后NIC会通过DMA报文传输到处理器(应该是先将报文放到...DMA,然后再向处理器发起中断),随后NIC驱动核OS内核会继续协议处理,直到给应用准备好数据;其次,通过NIC轮询(在Linux中称为NEW API,NAPI),这种方式下,内核会轮询NIC来检查是否有需要接收网络数据...不论哪种方式,都存在两类亲和性:1)流亲和性,用于确定那个核将会中断处理网络流;2)应用亲和性,用于确定哪个核会执行接收网络数据的应用进程。...执行网络处理[6],通常明智的做法是选择共享相同的最低缓存结构的核[18]。例如,一个给定的核(如核A)被选择来执行协议/中断处理,与核A共享L2缓存的核应该执行相应的用户应用程序。...一个处理器核和另外一个核进行通信数据需要在系统(芯片)网络间进行传输。为了实现大规模数据复制和一致性,必须在WAN上进行数据的传输。那么这些网络什么不同?

    89320

    扩展Linux网络

    扩展Linux网络栈 来自Linux内核文档。之前看过这篇文章,一直好奇,问什么一条网络流会固定在一个CPU上进行处理,本文档可以解决这个疑问。为了更好地理解本文章中的功能,这篇文章穿插入内。...建议配置 当关注延迟或接收中断处理成为瓶颈后应该启用RSS。负载分担给多个CPU可以有效减小队列长度。对于低延迟网络来说,最佳设置是分配与系统中CPU数量一样多的队列。...作为一个软件实现,需要在数据路径的后端调用它。鉴于RSS会给流量选择CPU队列,因此会触发CPU运行硬件中断处理程序,RPS会在中断处理程序之上选择CPU来执行协议处理。...RPS相比RSS有一些优势: 可以使用任何NIC 可以方便地添加软件过滤器来哈希新的协议 不会增加硬件设备的中断频率(虽然它会引入内部处理中断(IPIs)) 在接收中断处理程序的下半部分会调用RPS(一个驱动使用...基于接收队列映射选择传输队列,传输设备不会针对接收设备进行验证,因为这需要在数据路径中进行代价高昂的查找操作。 为特定传输流选择的队列会保存在对应的流(如TCP)socket结构体中。

    3.5K30

    Understanding TCPIP Network Stack

    网卡需要有驱动才能工作,驱动是加载到内核中的模块,负责衔接网卡和内核的网络模块,驱动在加载的时候将自己注册进网络模块,相应的网卡收到数据网络模块会调用相应的驱动程序处理数据。...,网卡会产生大量的中断,内核在中断上下文中,会浪费大量的资源来处理中断本身。...数据,DMA 负责从 NIC数据,并在 Ring Buffer 上按顺序找到下一个 ready 的 Descriptor,数据存入该 Descriptor 指向的 sk_buff 中,并标记槽为...如何合并或切分数据包 为了更有效率的执行数据包增到或从socket缓冲区中删除这类操作而使用了链表,或者叫数据包链。next和prev指针用于这个场景。...2、内核这个缓冲区通过DMA映射,把这个队列交给网卡 内核操作,双向映射 3、网卡收到数据,就直接放进这个环形缓冲区了——也就是直接放进主内存了;然后,向系统产生一个中断 硬件行为 4、内核收到这个中断

    63010

    业界第一个真正意义上开源100 Gbps NIC Corundum介绍

    AXI lite接口允许驱动程序更改调度程序参数并启用/禁用队列。驱动程序数据包排队发送,第一个流接口从队列管理逻辑提供门铃事件。第二个流接口将由调度器生成的传输命令携带到发送引擎。...网络协议栈数据包排队以便在网络接口上传输数据通过与该接口关联的网络端口注入网络。...发送引擎负责协调数据包的传输操作。发送引擎处理来自传输调度程序的特定队列的传输请求。使用PCIe DMA引擎进行低级处理后,数据通过传输校验和模块,MAC和PHY。...在包括哈希和时间戳的底层处理之后,接收引擎向PCIe DMA引擎发出一个或多个写请求,以数据数据写出到主机内存中。写操作完成后,接收引擎构建一个完成记录,并将其传递给完成写模块。...该模块负责初始化NIC,注册内核接口,为描述符和完成队列分配DMA可访问的缓冲区,处理设备中断以及在内核和NIC之间传递网络流量。

    5.1K52

    Linux 网络子系统

    处理器检测到了这个信号后就会打断自己当前正在做的工作,转而去处理这次中断(所以才叫中断)。当然在转去处理中断中断返回都有保护现场和返回现场的操作,这里不赘述。 那软中断又是什么呢?...对于网卡收包来说,网卡收到数据包,通知内核数据包到了,中断处理数据包存入内存这些都是急切需要完成的工作,放到上半部完成。而解析处理数据包的工作则可以放到下半部去执行。...主要执行操作如下: 第5步中我们看到,网卡驱动实现了ethtool所需要的接口,也在这里注册完成函数地址的注册。 ethtool 发起一个系统调用之后,内核会找到对应操作的回调函数。...NIC,再来数据不用触发硬中断了,把数据DMA拷入系统内存即可 5.硬中断触发的驱动程序会启动软中断,启用软中断目的是数据包后续处理流程交给软中断慢慢处理,这个时候退出硬件中断了,但是注意和网络有关的硬中断...驱动处理速度跟不上网卡收包速度,驱动来不及分配缓冲区,NIC接收到的数据包无法及时写到sk_buffer,就会产生堆积,NIC内部缓冲区写满后,就会丢弃部分数据,引起丢包。

    3.5K21

    DPDK 网卡收包流程

    1、Linux网络收发包流程 1.1 网卡与liuux驱动交互 NIC接收数据包之后,首先需要将数据同步到内核中,这中间的桥梁是 rx ring buffer。...1.2 linux驱动与内核协议栈交互 NIC数据包通过 DMA 复制到内核缓冲区 sk_buffer 后,NIC 立即发起一个硬件中断。...CPU 接收后,首先进入上半部分,网卡中断对应的中断处理程序是网卡驱动程序的一部分,之后由它发起软中断,进入下半部分,开始消费 sk_buffer 中的数据,交给内核协议栈处理。...特点快速执行; l下半部用来延迟处理上半部未完成的工作,通常以内核线程的方式运行。特点延迟执行; 上半部分硬件中断会打断 CPU 正在执行的任务,然后立即执行中断处理程序。...为了解决这个问题,现在的内核及驱动都采用一种叫 NAPI(new API)的方式进行数据处理,其原理可以简单理解为 中断 + 轮询,在数据量大,一次中断后通过轮询接收一定数量包再返回,避免产生多次中断

    3K32

    搞了半天,终于弄懂了TCP Socket数据接收和发送,太难~

    一个新的数据包进入网络接口(NIC,通过被NIC中断或通过轮询NIC的方式通知内核获取数据。...通常内核是由中断驱动还是处于轮询模式取决于网络通信量;NIC非常繁忙,内核轮询效率更高,但如果NIC不繁忙,则可以使用中断来节省CPU周期和电源。...内核从NIC获取数据,它会对数据包进行解码,并根据源IP、源端口、目标IP和目标端口找出与该数据包相关联的TCP连接。此信息用于查找与该连接关联的内存中的struct sock。...当应用程序调用write(2),它将数据从用户提供的缓冲区复制到内核写入队列中。随后,内核将把数据从写队列复制到NIC中,并实际发送数据。...支持第二种方式的理由是,处理速率或连接速率趋向于爆发,它过于“宽宏大量”。例如,在我们刚才描述的服务器中,假设有10个新连接同时出现,然后这一秒中没有更多的连接出现。

    8.8K41

    RDMA - inline 内联提高小包性能-降低延(减少两个 PCIe 往返延迟)

    这篇文章重点介绍程序执行 ibv_post_send 后发生的机制。快速 PCIe 背景网络接口卡 (NIC) 通常通过 PCI Express (PCIe) 插槽连接到服务器。...然后,网络驱动程序准备包含 NIC 标头和指向有效负载的指针的设备特定 MD。步骤 1:使用 8 字节原子写入内存映射位置,CPU(网络驱动程序)通知 NIC 已准备好发送消息。...它可以 DoorBell 响铃次数从 n 减少到 1。内联:发送数据,CPU(网络驱动程序数据复制到 WQE 中。...Nvidia RDMA inline receive - Nvidia RDMA 内联接收 Inline-Receive 处于活动状态,HCA 可以接收到的数据写入接收 WQE 或 CQE。...在轮询 CQ ,驱动程序接收到的数据从 WQE/CQE 复制到用户的缓冲区。

    43221

    RecoNIC 入门:SmartNIC 上支持 RDMA 的计算卸载-FPGA-智能网卡-AMD-Xilinx

    RDMA 引擎负责处理 RDMA 流量,提供访问通过网络连接的远程对等点的主机或设备内存中的数据的能力。 流计算和后备计算块中实现的用户定义加速器可以直接处理设备内存中的数据,包括网络接收数据。...在具有中断系统的设计中,状态 FIFO 不为空,LC 内核会触发系统中断,让主机相应地处理中断。 在轮询系统设计中,状态 FIFO 中的输出就绪,LC 内核完成信号写入专用内存映射寄存器。...DMA 测试, DMA 测试示例评估主机和设备内存之间复制数据的功能。 主机充当主设备,它支持对 NIC 内存的读取和写入。 其用法如清单 1 所示。 图片 B....在延迟方面,传输小数据大小(<= 4 KB),批量请求比单个请求可以实现近 10 倍的改进,即每次 RDMA 读取操作约 400 ns。...此外,RDMA引擎注意到其SQ生产者索引门铃增加n,它以流水线方式发出n个读操作

    1K11

    Redis高负载下的中断优化

    网卡收到的数据包转移到主机内存(NIC与驱动交互) NIC接收数据包之后,首先需要将数据同步到内核中,这中间的桥梁是rx ring buffer。...驱动处理速度跟不上网卡收包速度,驱动来不及分配缓冲区,NIC接收到的数据包无法及时写到sk_buffer,就会产生堆积,NIC内部缓冲区写满后,就会丢弃部分数据,引起丢包。...提到中断,就涉及到硬中断和软中断,首先需要简单了解一下它们的区别: 硬中断: 由硬件自己生成,具有随机性,硬中断被CPU接收后,触发执行中断处理程序。...硬中断中断号及统计数据可以在/proc/interrupts中看到,对于多队列网卡,系统启动并加载NIC设备驱动程序模块,每个RXTX队列会被初始化分配一个唯一的中断向量号,它通知中断处理程序中断来自哪个...NUMA 架构下的中断优化 这时我们再回归到中断的问题上,两个NUMA节点处理中断,CPU实例化的softnet_data以及驱动分配的sk_buffer都可能是跨node的,数据接收后对上层应用

    3K110

    智能网卡如何颠覆传统计算

    2019 年 9 月 3 日 ,Mellanox 宣布隆重推出 ConnectX-6 Dx 和 BlueField-2 – 新一代云Smart NIC 和 I/O 处理单元 (IPU) 解决方案,旨在大规模处理各类工作负载实现无与伦比的数据中心安全性...即使在这种理想的假设下,这种微不足道的计算能力也仅仅能够在网络堆栈中执行一些LLC或内存访问,留给应用程序逻辑的东西少得可怜。...网络I/O性能为CPU和GPU带来挑战 网络I/O的性能问题长期以来一直备受关注,其重点在于消除操作系统网络堆栈中的低效率以及优化NIC-CPU交互。...此外,CPU和NIC硬件提供了几种机制来提高I/O处理的效率,例如,数据直接引入CPU LLC(DDIO),并通过减少CPU内核之间的缓存争用(例如,接收端扩展)和降低中断频率(例如,中断调制)来提高可扩展性...一个应用执行RDMA读或写请求,不执行任何数据复制。在不需要任何内核内存参与的条件下,RDMA请求从运行在用户空间中的应用中发送到本地NIC(网卡),然后经过网络传送到远程NIC

    2.7K12

    Intel-Nvidia-mellanox网卡-PF_RING-零拷贝-网络-存储等技术汇总-拓宽技术视野-DPU技术群

    这是可能的,因为每个虚拟适配器(在应用程序打开 Mellanox NIC 端口创建)接收每个传入数据包的(零)副本。...数据包过滤:每个应用程序打开一个虚拟适配器,每个应用程序都可以指定独立的硬件内过滤规则(每个虚拟适配器的ip至32k)。...然而,通过使用PF_RING ZC驱动程序,结合RSS(接收端扩展)等硬件卸载功能,可以性能和处理流量扩展至高达 100 Gbps。...这些通信开销消耗了原本可用于运行客户应用程序的 CPU 周期,最终导致网络运营商的部署成本高昂网络操作卸载到 NIC 是一种实用的方法,可以部分减轻 CPU 管理(部分)网络相关状态的负担。...简而言之,我们表明, i) 转发平面更新和 ii) 数据包与 NIC 中的多个转发表匹配,测试的 NIC 的转发吞吐量急剧下降。

    36801

    Boost UDP Transaction Performance

    TSO/GSO用于发送报文,将上层聚合的数据进行分割,分割为不大于MTU的报文;GRO在接受侧,多个报文聚合为一个数据,上送给协议栈。总之就是报文的处理下移到了网卡上,减少了网络栈的负担。...RSS 在多核服务器上扩展了网络接收侧的处理 RSS本身是一个NIC特性 报文分发到一个NIC中的多个队列上 每个队列都有一个不同的中断向量(不同队列的报文可以被不同的核处理) 可以运用于TCP/UDP...通常10G的NICs会支持RSS RSS是物理网卡支持的特性,可以NIC的多个队列映射到多个CPU核上进行处理,增加处理的效率,减少CPU中断竞争。...此时软中断消耗的CPU就比较合理了,从下面火焰图可以看到中断处理消耗的CPU缩短了 ?...但并没有在输出方向上看到锁竞争,为什么? 避免Tx队列的锁竞争 这是因为ixgbe(Intel 10GbE NIC驱动)可以自动设置XPS ?

    1.4K10

    关于智能网卡, 您需要了解的相关的技术-DPU相关技术

    将计算从服务器的 CPU 卸载到 NIC 可以释放大量服务器的 CPU 资源,这使得 NIC 成为提供有竞争力的云服务的关键。 因此,了解网络应用程序卸载到 NIC 的性能优势和局限性至关重要。...我们表明,虽然当今的 NIC 可以轻松支持数百千兆位的吞吐量,但频繁执行 NIC 数据包分类器的更新操作(如网络地址转换器 (NAT) 和负载均衡器对每个传入连接所做的操作)会导致吞吐量急剧下降,高达...数据包分类的一个关键挑战是分类器能够快速(i)传入数据包与其数据处理操作相匹配,以及(ii)调整数据包分类器的状态,例如通过插入新规则或更新现有规则。...简而言之,我们表明, i) 转发平面更新和 ii) 数据包与 NIC 中的多个转发表匹配,测试的 NIC 的转发吞吐量急剧下降。...首先,我们表明,内存利用率超过 ∼85% ,这些 NIC 的第一个表会丢弃几乎所有流量。 我们还表明,在这种情况下,所分析的 NIC数据处理延迟表现出长尾(高达 120 毫秒)。

    35820

    一种面向确定性低延迟网络数据应用的处理器-nanoPU

    NIC芯片上这段时间过程的延确定性,因为这其中不只是操作系统调度或响应中断引起的不确定性(是否是实时操作系统),单就是CPU芯片内部就有cache机制引入的不确定性、虚拟地址向物理地址转换可能页缺失引入的不确定性以及内部各种总线冲突带来的不确定性等等...在硬件中实现可编程传输逻辑需要支持NIC中的以下功能: 打包/重发缓冲区,用于消息分解为数据包,并存储传出的数据包,直到接收方确认它们为止。 重组缓冲区以处理乱序数据包。...运行在内核上的应用程序线程希望执行网络IO,它将绑定到第4层端口号。然后,nanoPU为端口分配本地和全局RX / TX队列。...为了接收消息,应用程序仅从GPR netRX读取,从网络RX队列的头部提取数据。类似地,为了发送消息,应用程序GPR netTX写入与网络TX队列尾部相对应的位置。...每个核心队列有可用空间,集中式队列首先补充最短队列。JBSQ(1)等效于单队列模型。

    1.5K40

    RDMA 相关 简要摘录

    RDMA通过网络把资料直接传入计算机的存储区,数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理能力。...通信延迟 =传输延迟 + 处理延迟; 处理延迟:发生在消息的发送端和消息的接收端; 传输延迟:发生在消息在发送方和接收方之间网络上; 通信过程中处理开销主要指:buffer 管理,不同空间的消息复制,消息发送和接收过程中系统的中断...RDMA工作过程: 应用执行RDMA读写请求的时候,不需要内核内存参与,RDMA 请求直接从用户空间的应用发送到本地NIC(网卡); NIC 读取缓冲区内容,并通过网络传送到远程NIC; 在网络上传输的...RDMA信息,包含目标虚拟地址,内存钥匙和数据本身;请求既可以完全在用户空间中处理(使用主动轮询机制),又可以在应用一直睡眠到请求完成的情况下,通过系统中断处理。...RDMA操作使得应用可以从一个远程应用的内存中(远程应用的虚拟内存)读取数据或者向这个内存中写数据; 目标NIC确认内存钥匙(key),直接数据写入应用缓存中。

    1.3K20
    领券