- 博客(773)
- 资源 (21)
- 收藏
- 关注
原创 (dpdk f-stack)-ipvs实现L3/L4层代理
L3/L4层代理参考: https://github.com/iqiyi/dpvsLVS 实现参考:https://cloud.tencent.com/developer/article/1792298LVS向Netfilter的3个阶段注册钩子函数改写数据包在 LOCAL_IN 阶段注册了 ip_vs_in() 钩子函数。在 FORWARD 阶段注册了 ip_vs_out() 钩子函数。在 POST_ROUTING 阶段注册了 ip_vs_post_routing() 钩子函数。ipvs
2022-05-14 17:33:38 795
原创 (dpdk f-stack)-dperf做压测
dperf 项目地址 https://github.com/baidu/dperf编译dpdkexport RTE_SDK=/root/dpdk-stable-19.11.10export RTE_TARGET=x86_64-native-linuxapp-gccmake install T=x86_64-native-linuxapp-gcc编译dperfcd /home/dperf-1.1.0make -j4假设fstack作为udp代理,测udp吞吐例如 1Mpps 每个包大小为
2022-05-14 16:57:08 1484
原创 (dpdk f-stack)-理解ff_api.symlist
ngx_ff_module.c中提供了被nginx中调用的socket相关API比如:socket/bind/connect/recv/send 接口的重新实现,这些socket接口底层基于FreeBSD协议栈和dpdk实现的,而非Linux协议栈。 #define SYSCALL(func) \ ({
2022-05-14 16:14:31 285
原创 (dpdk f-stack)-Nginx使用kqueue
概述kqueue 是 FreeBSD 上的一种的多路复用机制。它是针对传统的 select/poll 处理大量的文件描述符性能较低效而开发出来的。注册一堆描述符到 kqueue 以后,当其中的描述符状态发生变化时, kqueue 将一次性通知应用程序哪些描述符可读、可写。kqueue APIs - int kqueue(void) 生成一个内核事件队列,返回该队列的文件描述索。其它 API 通过该描述符操作这个 kqueue 。 - kevent() 提供三个主要的行为功能。在下面小节中
2022-05-14 15:52:52 502
原创 (dpdk f-stack)-Nginx使用kqueue
概述 kqueue 是 FreeBSD 上的一种的多路复用机制。 它是针对传统的 select/poll 处理大量的文件描述符性能较低效而开发出来的。 注册一堆描述符到 kqueue 以后,当其中的描述符状态发生变化时, kqueue 将一次性通知应用程序哪些描述符可读、可写或出错了。kqueue APIs int kqueue(void) 生成一个内核事件队列,返回该队列的文件描述索。其它 API 通过该描述符操作这个 kqueue 。 kev...
2021-09-26 17:27:38 597
原创 (dpdk f-stack)-通过kni与kernel上服务通信
fstack利用dpdk读取物理网卡通过kni虚拟网卡将数据包发给kernel协议栈: dpdk从物理网卡读取数据包--》将此数据包入ring--》kni_process_tx读取ring中数据包--》将数据包发给 kni虚拟网卡--》kernel协议栈将包给应用程序。fstack从kni虚拟网卡读取kernel协议栈发来的数据包再利用dpdk从物理网卡发出去: 应用程序发包给kernel协议栈--》将数据包发给 kni虚拟网卡--》ff_eth_tx_burst从kni虚拟网卡读取...
2021-06-14 12:07:37 841
原创 (dpdk f-stack)-tcp代理访问rser时本地lport选择方法
in_pcbconnect_setup{ ... if (lport == 0) { struct ifaddr *ifa; struct ifnet *ifp; struct sockaddr_in ifp_sin; unsigned loop_count = 0; bzero(&ifp_sin, sizeof(ifp_sin)); ifp_sin.sin_addr.s_add...
2021-06-14 11:43:33 731
原创 (dpdk f-stack)-理解ff_api.symlist
#源码文件 IPFW_XMOD_SRCS_F=$(notdir $(wildcard $(TOPDIR)/xdja/xmod/ipfw_Xmod_*[!H].c)) IPFW_XMOD_SRCS_H=$(notdir $(wildcard $(TOPDIR)/xdja/xmod/ipfw_Xmod_*H.c)) cJSON.c #xmod相关代码 NETIPFW_SRCS+= $(IPFW_XMOD_SRCS_F) \ DH_mem.c \ ...
2021-06-14 11:02:43 903
原创 (dpdk f-stack)-实现L4代理功能
FreeBSD提供了IPFW机制,可以注册我们的hook函数来对数据包做改写操作;实现tcp/udp代理思路: 我们的hook函数中利用数据包匹配代理规则,对数据包做改写操作; dpdk收到包后,首先由我们的hook函数负责处理(可能改写ip/tcp头部信息),完事交由FreeBSD协议栈处理(交给上层应用处理,或者路由转发处理); nginx上层发包经过FreeBSD协议栈后,最终调用dpdk接口将数据包从网卡发送前也需调用我们hook函数(可能改写ip/tcp头部信息),完事交...
2021-06-14 10:36:14 916
原创 (dpdk f-stack)-多进程模型
rte_eal_init: //对于fstack的 primary 和 secondary 进程,在 rte_eal_init 中不会执行函数pthread_create创建线程 RTE_LCORE_FOREACH_SLAVE(i) { /* * create communication pipes between master thread * and children */ if (pipe(lco...
2021-06-14 08:38:57 1697
原创 (dpdk f-stack) top-工具代码分析
命令工具大体原理: nginx每个worker进程都有一个独立的FreeBSD栈,执行main_loop--process_msg_ring,此函数处理流程: 1)从msg_ring[proc_id].ring[0]中出队列,取出msg; 2)判断是FF_SYSCTL类型,然后执行ff_sysctl函数获取或设置FreeBSD内核的状态参数; 3)最后再把结果msg入队列msg_ring[proc_id].ring[msg->msg_ty...
2021-04-17 08:12:13 482
原创 (dpdk f-stack) VMware跑 f-stack
目的:VMware虚拟机上跑fstack实现nginx web反向代理。网卡可以配置为e1000或者vmxnet3: 修改虚拟机安装目录下 xxxx.vmx 配置文件:修改文件:DPDK-FWD.vmxhpet0.present = "true"numa.vcpu.maxPerVirtualNode = "1"ethernet1.virtualDev = "vmxnet3"#e1000e只支持网卡单队列,vmxnet3支持网卡对队列...
2021-04-17 07:54:54 856 2
原创 (dpdk f-stack) 为何使用巨页
什么是页表:我们知道,在linux操作系统中,CPU在执行一个进程的时候,都会访问内存。但CPU并不是直接访问物理内存地址,而是通过虚拟地址空间来间接的访问物理内存地址。所谓的虚拟地址空间,是操作系统为每一个正在执行的进程分配的一个逻辑地址,在32位机上,其范围从0 ~ 4G-1。操作系统通过将虚拟地址空间和物理内存地址之间建立映射关系,让CPU间接的访问物理内存地址。通常将虚拟地址空间以512Byte ~ 8K,作为一个单位,称为页,并从0开始依次对每一个页编号。这个大小通常被称为页面
2021-04-17 07:36:04 688
原创 (dpdk f-stack) -网卡多队列
网卡是如何将网络中的报文分发到不同的队列呢?常用的方法有微软提出的RSS与英特尔提出的Flow Director技术,前者是根据哈希值希望均匀地将包分发到多个队列中。后者是基于查找的精确匹配,将包分发到指定的队列中。 1、RSS(Receive-Side Scaling,接收方扩展)RSS就是根据如下“关键字”通过哈希函数计算出哈希值,再由哈希值对网卡队列数求余确定数据包放到哪个队列。关键字是如何确定的呢?哈希函数一般选取...
2021-04-17 07:25:40 1136
转载 win10备份还原
https://jingyan.baidu.com/article/4ae03de3fb35e83eff9e6b91.html
2020-06-04 19:23:59 268
原创 flask-rest-前后端分离
项目:https://github.com/JulienBalestra/vue-flask创建rest api:https://github.com/flask-restful/flask-restful其他参考: https://www.cnblogs.com/vovlie/p/4178077.htmlhttps://blog.miguelgrinberg.com/post/des...
2019-02-24 11:38:52 1174
原创 (dpdk f-stack) SPDK-高效磁盘io读写
磁盘性能指标--IOPS:IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位,I/O请求通常为读或写数据操作请求。 随机读写频繁的应用,如小文件存储(图片)、OLTP数据库、邮件服务器,关注随机读写性能,IOPS是关键衡量指标。 顺序读写频繁的应用,传输大量连续数据,如电视台的视频编辑,视频点播VOD(Video On Demand),关注连续读...
2019-02-24 09:34:24 1697
转载 深入理解uwsgi和gunicorn网络模型
http://xiaorui.cc/2017/02/16/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3uwsgi%E5%92%8Cgunicorn%E7%BD%91%E7%BB%9C%E6%A8%A1%E5%9E%8B%E4%B8%8A/
2019-02-22 09:09:50 507
转载 从winpe安装系统
报错:装系统出现error cannot load file code 5555h 的解决 https://www.kafan.cn/edu/86984282.htmlhttp://udsdown.xyz/114.htmlwin10专业版激活参考: https://blog.csdn.net/erdfty/article/details/84536252最终采取从winpe安装系统...
2019-01-03 10:04:27 3031
原创 (dpdk f-stack) dpdk-网卡类型选择
http://blog.sina.com.cn/s/blog_90cfda2f0102wi9n.htmlSupported NICsAmazonena(Elastic Network Adapter)Chelsiocxgbe(Terminator 5)Cesnetszedata2(COMBO-80G, COMBO-100G)Ciscoenic(UCS Virt...
2018-12-29 22:09:08 12365 2
转载 浏览器渲染原理
转载:https://coolshell.cn/articles/9666.html看到这个标题大家一定会想到这篇神文《How Browsers Work》,这篇文章把浏览器的很多细节讲得很细,而且也被翻译成了中文。为什么我还想写一篇呢?因为两个原因,1)这篇文章太长了,阅读成本太大,不能一口气读完。2)花了大力气读了这篇文章后可以了解很多,但似乎对工作没什么帮助。所以,我准备写下...
2018-11-19 13:07:15 279
转载 性能调优攻略
转载: https://coolshell.cn/articles/7490.html关于性能优化这是一个比较大的话题,在《由12306.cn谈谈网站性能技术》中我从业务和设计上说过一些可用的技术以及那些技术的优缺点,今天,想从一些技术细节上谈谈性能优化,主要是一些代码级别的技术和方法。本文的东西是我的一些经验和知识,并不一定全对,希望大家指正和补充。在开始这篇文章之前,大家可以移步去看一...
2018-11-19 13:00:47 274
转载 如何对比 F-Stack 与 Seastar 这两个网络编程框架?
https://cloud.tencent.com/developer/article/1005181
2018-11-10 19:18:06 2168
转载 制作linux包 u盘安装
一、准备内核转载:https://zhuanlan.zhihu.com/p/27009845首先要有一个能用的 Linux 宿主机,我使用的是 Ubuntu 16.04。然后安装好编译时候用到的库和软件包,由于我的 Ubuntu 16.04 是使用过一段时间的,可能有一些软件包或者库我之前已经装过了,所以没有列举出来,下面是一些我能想到的,其它我没有想到的可以直接把错误信息放进百度,查找缺...
2018-10-25 09:37:06 1315 1
转载 nginx健康检查
nginx对后端节点健康检查的方式主要有3种,这里列出:1、ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带) 官网地址:http://nginx.org/cn/docs/http/ngx_http_proxy_module.html#proxy_next_upstream2、nginx_upstream_check_mod...
2018-10-24 11:36:41 4680 1
转载 linux 4.1内核源码编译
编译环境Arch Linux on VirtualBox下载内核https://www.kernel.org/下载的内核压缩包,此时的最新内核版本为4.1:解压包# tar -xvJf linux-4.1.tar.xz在这里为了方便直接切换到su权限了,如果为普通权限,须在每条命令前加上sudo,如果sudo可用的话。(命令语句中划线的部分为文件名或目录名,...
2018-10-24 11:25:57 3175
转载 创建一个 Linux 系统的 ISO
本文主要记录了怎样自己创建一个 Linux 系统的 ISO。isolinux制作: 1、首先下载linux kernel,定制自己的kernel,用make bzImage 生成bzImage。 [root@localhost testOS]# ls boot/ bzImage grub initrd.gz initrd.img 2、从U...
2018-10-23 13:32:19 3760 2
转载 使用dd命令制作USB启动盘
使用dd命令制作USB启动盘一般情况下,我会使用U盘安装Linux和其他操作系统。使用U盘安装系统需要把U盘做成启动盘。启动U盘的制作工具有很多:Unetbootin ; Win32diskimager ; Linux live usb ; USB image writer ; WinUSB ; USB startup creator ; 其他工具如果你使用的是Lin...
2018-10-23 11:19:04 11541
转载 Nginx会话保持
Nginx是一个很高效稳定的软负载均衡器,最新的版本可以负载均衡HTTP(s),TCP,UDP等多种协议的链接。一般访问量比较大一点的Web站点都会用NGINX做HTTP协议的Web负载均衡,其后端一般是多个PHP或者JAVA中间件。另外NGINX还可以和Keepalived配合防止均衡器的单点故障,这一点要强于F5,A10这一类的硬件负载均衡设备。但是F5,A10等硬件负载均衡器虽然价格昂贵...
2018-10-21 13:05:35 20371 3
转载 dpdk-多队列机制
参考: https://blog.csdn.net/wyaibyn/article/details/14109325随着网络IO的带宽的不断提升,单核CPU不能完全处满足网卡的需求,通过多队列网卡的支持,将各个队列通过中断绑定到不同的cpu核上,以满足带宽处理需求。常见Intel的网卡有82575、82576,Boardcom的57711等,下面以公司的服务器使用较多的Intel 8257...
2018-10-19 18:07:17 5685 2
原创 nginx的worker进程如何创建lua虚拟机的?
1,lua_State在Lua中的定义如下: struct lua_State { CommonHeader; lu_byte status; StkId top; /* first free slot in the stack */ global_State *l_G; CallInfo *ci; /* ...
2018-10-18 21:43:34 627
转载 nginx如何结合lua的?
什么是OpenResty? 将Lua和Nginx粘合ngx_lua模块,并且将Nginx核心、LuaJIT、ngx_lua模块、许多有用的Lua库和常用的第三方Nginx模块组合而成。什么是ngx_lua及原理? ngx_lua是Nginx的一个模块,将Lua嵌入到Nginx中,从而可以使用Lua来编写脚本,这样就可以使用Lua编写应用脚本,部署到Nginx中运...
2018-10-18 20:43:06 3125
转载 win7安装mysql
https://blog.csdn.net/yangguangzhidi/article/details/78540005?locationNum=2&fps=11、解压到D盘 路径:D:\mysql-5.7.20-winx642、配置环境变量变量名:MYSQL_HOME 变量值:D:\mysql-5.7.20-winx64path 里添加 %MYSQL_HOME%\...
2018-10-14 19:52:31 364
wireshark-gm-wireshark
2018-07-25
windows程序设计(第五版)附代码
2018-03-29
source3.x支持utf-8插件
2016-12-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人