- 博客(24)
- 收藏
- 关注
原创 OVS学习
记录下找到的OVS学习资料,方便以后查看:https://docs.openvswitch.org/en/latest/https://arthurchiao.art/blog/ovs-deep-dive-0-overview/https://github.com/openvswitch/ovs/blob/main/Documentation/tutorials/ovs-advanced.rst。
2025-04-03 14:23:21
168
原创 XDP + VPP方案探究
我们验证了XDP + VPP方案是可行的,但文章示例只是说明可行性。这种方式相比DPDK独占网卡,提供了更高的灵活性。更深的使用欢迎大家一起探讨学习。
2025-03-14 11:31:07
343
原创 探寻TCP连接建立之初ssthresh的大小
(如65535字节),以便充分探索可用带宽。其核心目标是平衡探测效率与拥塞风险,直到首次拥塞事件触发动态调整。具体数值因操作系统和TCP实现而异,但逻辑一致:通过高初始阈值最大化早期吞吐量,随后依赖网络反馈逐步优化。TCP连接建立之初的慢启动阶段(cwnd = IW),ssthresh取值多少呢?在TCP拥塞控制的慢启动阶段,初始的慢启动阈值(,窗口按线性增长(每RTT增加1个MSS)。会被更新为当前拥塞窗口(在TCP慢启动阶段,
2025-03-04 11:27:13
739
原创 详解TCP拥塞控制中的快速恢复
快速恢复是TCP拥塞控制算法(如Reno、NewReno)的关键机制之一,旨在减少因部分丢包导致的吞吐量骤降。它通过优化传统TCP Tahoe的“超时重置窗口”策略,在检测到部分丢包时保持网络中的数据流,从而更高效地恢复传输。以下是其核心原理和实现细节:假设,发生单个数据包丢失:快速恢复通过以下机制优化TCP性能:它是现代TCP实现(如Reno、NewReno)的核心组件,显著提升了网络在高丢包环境下的稳定性和效率。后续算法(如CUBIC、BBR)进一步针对高带宽时延积网络优化,但快速恢复的基本思想仍是拥塞
2025-03-03 21:33:36
922
原创 TCP协议中syn与ack处理机制的差异
SYN和ACK报文段在序列号处理上的差异,反映了它们在连接建立和数据确认过程中的不同角色。它的核心作用是同步双方的初始序列号(ISN, Initial Sequence Number),确保后续数据传输的有序性。若每个ACK都需确认,会引入额外的握手(如“确认的确认”),降低效率。如果SYN丢失或ACK丢失,发送方会重传SYN,确保连接建立的可靠性。这意味着SYN需要被可靠传输,若未收到确认(ACK),发送方会触发超时重传。中,SYN部分会消耗一个序列号(服务器的ISN),但ACK部分不消耗序列号。
2025-02-27 15:33:32
483
原创 AF_XDP Multi-Buffer的介绍
启用 AF_XDP 的多缓冲区支持需双重配置用户空间:绑定套接字时添加XDP_USE_SG标志。内核空间:XDP 程序使用xdp.fragssection 声明支持。此机制扩展了 AF_XDP 对复杂网络流量的处理能力,适用于高性能网关、DPI 等场景。开发者需权衡处理复杂度与内存效率,确保分片组装逻辑的正确性。
2025-02-25 11:11:03
915
原创 XDP_USE_NEED_WAKEUP的解释
通过将控制权交给用户空间,实现了内核与用户空间的高效协作。它在牺牲少量延迟的情况下,显著降低了 CPU 开销,是构建 100Gbps+ 高性能网络应用的基石技术之一。正确使用此标志需要结合业务场景,平衡吞吐量、延迟和资源利用率。
2025-02-24 17:52:55
597
原创 xdp-tutorial packet03-redirecting中Assignment2的理解和思考
packet03-redirecting中的assignment2一直没理解是什么意思,困扰了好几天。
2025-02-15 16:29:02
97
原创 《Linux内核观测技术BPF》学习笔记 (三)
这里需要是因为classifier.c中分类器函数classification定义为static,而libbpf不支持静态程序,不知官方例子为啥这样写?,大概意思就是规则已经存在,不能add,只能change。这里需要将eth0替换成当前环境上的ens33。
2025-01-14 23:20:39
301
原创 《Linux内核观测技术BPF》学习笔记 (二)
test为编译生成的可执行文件。书上uprobe挂载到go代码上,自己实现挂载到c代码上,原理相同。
2024-12-31 23:21:17
162
原创 巨页内存使用
发现一篇文章写的好,保存下,方便以后查看:https://www.cnblogs.com/lygin/p/16729407.html
2024-11-29 17:19:12
107
原创 smallchat改造
smallchat是redis作者使用c开发的聊天服务器,实现了聊天室的功能。核心代码200多行,使用了IO多路复用技术。是一款适合学习IO多路复用的开源软件。原实现是使用select实现了IO多路复用。本文改造了原代码,改用epoll实现,并使用reacotor模型,使代码更精简,功能更聚合,方便使用和理解。
2023-11-30 19:15:30
262
原创 IO多路复用学习(5)reactor网络模型
reactor模型组成:非阻塞的io + io多路复用特征:基于事件循环,以事件驱动或事件回调的方式来实现业务逻辑理解:对io的处理转换为对事件的处理。单reactor模型redis单reactor模型 + 任务队列 + 线程池skynet多reactor多线程memcached多进程nginx
2023-10-23 19:44:35
57
原创 线程池技术
1.任务耗时长,主线程执行任务阻塞其他任务执行。把耗时的任务交给线程池处理。I/0阻塞型,计算处理型。1.系统资源有限,不可能无限创建线程,线程太多调度复杂,加解锁,性能反而下降。2.消费者线程:就是线程池,有固定大小的线程,处理任务。1.生产者线程:复杂任务分发,把任务交给线程池处理。2.频繁创建销毁线程消耗系统资源,影响性能。生产者往队列里放任务,消费者从队列里取任务。如果队列从空变为非空,唤醒消费者线程。如果队列为空,消费者线程阻塞休眠。2.需要线程并发处理。线程池干脏活,累活。
2023-09-21 10:08:51
45
原创 IO多路复用学习(3) epoll
本篇介绍epoll的相关机制和用法。epoll API有三个:epoll_create,epoll_wait,epoll_ctl。三个API共同使用才能完成epoll IO多路复用的功能,这里是与select和poll不一样的地方。
2023-09-18 14:26:27
124
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人