- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我知道每个 NIC 在 RAM 中都有其 RX/TX 环,用于操作系统接收/传输数据包。环中的一项(数据包描述符)包括数据包的物理地址,数据包的长度等。我想知道这个描述符是否指向一个sk_buff?如果数据包是 GSO 数据包会发生什么?环中的一个描述符 = 一个数据包 = 一个 sk_buff 是真的吗?
最佳答案
I wonder that does this descriptor point to a sk_buff?
不完全是。 sk_buff是一个软件结构,粗略地说,一个包含元信息的数据结构,用于描述一些网络数据 block 并指向 data本身。因此,NIC 描述符不需要指向 sk_buff
- 它可能只指向一个数据缓冲区(使用 DMA/物理地址)。
And what happens if the packet is a GSO packet?
这是一个非常模糊的问题,因为此类卸载可能在软件中实现(例如,通过网络堆栈),也可能在硬件中完成。
在前一种情况下,就 NIC SW 描述符而言没有什么可讨论的 - 上层应用程序提供连续的数据 block ,网络堆栈从中产生较小的数据包,因此 sk_buff
-s 已移交给网络驱动程序描述小数据包。
在后一种情况下(HW 卸载),网络驱动程序被提供了大量的数据(通过将单个 sk_buff
-s 或 sk_buff
链交给它), 并且网络驱动程序反过来将适当的描述符发布到 NIC - 它可能是一个指向一大块数据的描述符,或者是指向同一连续数据缓冲区的较小部分的少数描述符 - 这无关紧要因为卸载魔法将发生在硬件中——整个数据 block 将被切片,数据包 header 将相应地添加到前面,从而产生许多较小的网络数据包,以将其传输到网络上。
Is this true that one descriptor in the ring = one packet = one sk_buff?
严格来说,不。这取决于。您的网络驱动程序可能会被要求传输一个描述一个数据缓冲区的 sk_buff
。但是,在某些情况下,您的驱动程序可能会决定发布多个指向相同数据 block 但具有不同偏移量的描述符 - 即提交将分部分完成,并且 NIC 环中将有多个描述符与单个 sk_buff 相关
。此外,一个数据包并不总是与一个 sk_buff
相同 - 一个数据包可能呈现为少量段,每个段都用单独的 sk_buff
描述形成一个sk_buff
chain(请在sk_buff
中找到next
和prev
fields >).
关于linux - RX/TX ring和sk_buff有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46781857/
我用 Cocoapods 创建了一个简单的项目并安装了 RxSwift 和 RxCocoa。 我写了这段代码: import UIKit import RxSwift class ViewContro
我对 Rx 真的很陌生,只是想知道 subscribeOn 的顺序如何影响 Observable //This will not print anything Observable.just("wha
我有一个 PublishSubject 每 X 秒发出一个信号,我想只考虑 Y 秒后发出的第一个项目。 例子 observable A 每秒发出一次“滴答声” observable B 应该每 5 秒
我有以下流。 Observable.just(Unit) // execute immediately .mergeWith(tryAgainRelay) // execute again w
我可以看到 RX 适用于 Android 和 UI 事件处理。我很难看到 RX 在后端提供了什么好处。 RX Java 是为后端处理而设计的,还是这个概念太过分了? 最佳答案 实际上,RxJava 最
我有一个关于什么是更好的 RxJava 模式以保持可观察状态的问题。 为简单起见,假设我们有一个 StateManager需要跟踪系统中某个状态(假设它是一个简单的 bool 标志)并以可观察的方式公
我遇到了以下问题。我有一个从具有 isMember 属性的服务器请求的基本对象。如果该属性为 true,我想向端点 1、2 和 3 发出请求。 如果该属性为 false,我只想向端点 1 发出请求。
我正在使用 RxJava,但也许能够翻译另一个实现的答案。 我有一个 Observable 发出一系列项目,我想将它们分成 10 组。如下所示: observable .buffer(10)
有没有办法计算 RxAndroid 中流中已处理的元素数量? 我有类似的事情: Observable.fromArray(new String[]{"these", "are", "my", "val
如果我的客户端断开连接(错误)超过 10 秒,我会尝试显示一个弹出窗口。但是,当重新连接时,我也会关闭弹出窗口(true)。如果为真,我需要立即关闭弹出窗口。 我认为我需要做的是根据值(假)进行去抖,
收到 onNext() 后如何自动退订? 现在我使用这个代码: rxObservable .compose(bindToLifecycle()) // unsubscribe automaticall
我在 Ettus x310 上有一个简单的 C++ 测试程序,以前可以用,但现在不行了。我试图简单地设置单个 USRP 的两个 channel 的两个中心频率。当我尝试在第二个 channel 上设置
我有一个返回 Observable 的网络调用,我有另一个网络调用,它不是依赖于第一个 Observable 的 rx,我需要以某种方式转换这一切都与 Rx 相关。 Observable respon
我正在尝试根据 Rxjava 中的某些条件创建组列表。 以下是我的回复: { "dates":[ { "date":18, "value":
RX 6800 XT是最近很强的一款显卡,让很多的用户都很喜爱,详细还有很多没有入手的用户对他不是很了解吧,下面就带来了RX 6800 XT评测、跑分、价格、参数、图片,快来一起看看吧。 RX
我有一个重复元素列表,比如: Observable source = Observable.just("A", "B", "A", "C", "C", "A"); 我想按它们的值以及它们出现的次数对它
如果我将 RX-main 包添加到 WPF 应用程序,我会安装以下依赖包: 接收接口(interface) 接收核心 Rx-Linq Rx 平台服务 主要接收 添加 Rx-main 后,可以安装两个与
com.myapp.test.debug E/MessageQueue-JNI:rx.exceptions.OnErrorNotImplementedException 在 rx.Observable
这个问题在这里已经有了答案: RxJava operator that emits if different from last (1 个回答) 关闭 5 年前。 我有一个 bool 型 Obser
首先,我在两个 shell 中同时运行 vnstat -tr -i eth0 和 iftop。奇怪的是,vnstat 中的 rx 比 iftop 中的峰值 rx 大得多。我该如何解决这个问题? vns
我是一名优秀的程序员,十分优秀!