- 博客(66)
- 资源 (12)
- 收藏
- 关注
原创 ubuntu22.04安装SecureCRT8.7.3,完成顺利使用
Ubuntu22.04安装SecureCRT并破解过程,包含对应的安装包和依赖库以及相应工具
2024-07-15 17:54:09 731 1
原创 双机多网口配置同网段地址,可以通过目的IP确定接收数据的网卡吗?
从ARP报文来看,10.0.0.21的MAC响应ens38和ens39都有,但是ens39的MAC响应是先收到的,ARP表中 10.0.0.21,10.0.0.22的mac地址都是 ens39 00:0c:29:4f:a6:ce。机器B ens38 00:0c:29:4f:a6:c4 10.0.0.21/24 ens39 00:0c:29:4f:a6:ce 10.0.0.22/24。而主机对ARP请求的响应,可能是都从一个接口处,也可能各个接口都出,这种行为的区别暂不清楚受到哪些内核配置的影响。
2024-05-28 15:28:56 863
原创 全网最简单vscode使用Makefile调试多文件的C/C++代码
vscode调试C/C++教程很多,操作麻烦,这里试图找到一个最简单的使用vscode调试C/C++代码的方法。这里是使用Makefile的多文件方式。
2024-01-05 18:03:13 1642 3
原创 iperf3跑满100G网卡实测记录
其中发送速率12016406,基本稳定在1200000 KB/s以上。三个窗口分别同时开3个iperf3 client,跑10分钟。三个iperf3 Client, 合并速率大约 92GB/s。Kbps Mbps Gbps换算倍数是 1000。三个窗口分别开3个iperf3 server。ubuntu20.04, 系统设置默认状态。Kpbs 与 KB/s换算关系是 x8。两台服务器 100G网卡对插直连。
2023-07-27 16:13:16 3052
原创 RDMA RoCev2 CM建链和Socket建链测试
RDMA在高性能计算,AI大模型训练中发挥着重要的作用。主流支持RDMA的协议有IB、RoCev1、RoCev2、iWARP。其中RoCev2是应用最广泛的协议,因为其RDMA over UDP/IP,不依赖昂贵的IB网络设备,同时支持路由,性能上也接近原生IB水准。
2023-07-11 17:01:33 2808
原创 arch_mem_object_align的作用是什么?
DPDK在申请内存池时,会对OBJ大小进行重新计算最终进行重计算的函数是根据注释,此函数是让对象的首地址均匀的落在内存的channels和ranks中(X86平台下)。
2023-07-10 13:38:26 140
原创 gettimeofday和clock_gettime性能对比
测试方法gettimeofday 和 clock_gettime的7种类型时间的对比。clock_gettime类型如下类型含义CLOCK_REALTIME从1970.1.1到目前的时间CLOCK_MONOTONIC系统启动到现在的时间CLOCK_THREAD_CPUTIME_ID线程所消耗的时间CLOCK_PROCESS_CPUTIME_ID进程所消耗的时间CLOCK_MONOTONIC_RAW基于硬件时间CLOCK_REALTIME_CO
2022-03-29 15:13:48 3385 1
原创 Wireguard握手交互代码分析
Wireguard握手交互代码分析消息结构握手请求消息struct message_handshake_initiation { struct message_header header; // header里只有一个type, 发起0x01 __le32 sender_index; // Sender的标识,自定义。 u8 unencrypted_ephemeral[NOISE_PUBLIC_KEY_LEN]; // 本地临时公钥 // AEA.
2021-11-17 17:59:06 2961
原创 DFINITY基本架构
DFINITY简介DFINITY (Internet Computer): 通过结合区块链网络节点的集体计算能力来创建“Internet Computer”,从而彻底改变互联网。Internet Computer是基于Internet Computer Protocol(ICP)区块链计算协议实现。DFINITY 的目标是成为一个快速、安全、可扩展的云平台,它将为公共互联网的扩展出更多的功能,允许用户直接部署应用程序和安装代码,而不会出现影响比特币和以太坊等其他主要区块链的拥堵问题。DFINITY =
2021-11-04 18:49:12 13886
原创 DID分布式数字身份简化模型
术语说明分布式身份标识符: Distributed Identity,DID,具备去中心化可验证,自主管理,全球唯一的特性;内部最核心内容为公钥+身份信息可验证凭证:Verifiable Credentials, VC,主要为声明的集合声明:claims,包含凭证颁发者为DID身份赋予的其他属性值和颁发者的签名可验证表达: Verifiable Presentation, VP, 主要包含可验证凭证VC和持有者的签名身份说明持有者: Holder, 自主生产DID,向注册机构上传DID,向颁发
2021-10-12 15:36:25 11734
原创 VRF proof极简理解
VRF proof术语说明SK: 私钥PK: 公钥M:输入值R:哈希输出P:证明函数证明人根据输入M和私钥计算出唯一的哈希值RR = VRF_Hash(SK, M)证明人根据输入M和私钥计算出唯一的证明PP = VRF_Proof(SK, M)验证者将证明转换成哈希值R = VRF_P2H ( P )即 VRF_Hash(SK, M) == VRF_P2H(VRF_Proof(SK, M))验证者校验True/False = VRF_verify(PK, M, P)特性
2021-10-12 11:45:44 403
原创 SM9原理极简介绍
KGCKey Generate Center可信机构产生主私钥和主公钥: Master Priv Key 、Master Pub Key产生用户私钥: Master Priv Key与用户Identity(如电话号码)计算生成用户私钥User Priv Key。签名方法签名(User Priv Key 和 Master Pub Key)一起加密生成数字签名。验证签名(User Identity 和 Master Pub Key)一起验证数字签名。需要可信机构KGC的存在,并生成与用户Ide
2021-10-12 11:34:11 6837
原创 试用Rawsocket收发二层包
测试代码'''#include#include#include#include#include#include#include#include#include #include#include#include#include#include #include #define BUFFSIZE 1024const char* device = "enx00e04c680125";const unsigned char dst_mac[6] = {0x00,0x0
2021-06-28 00:10:37 2133 1
原创 Openssl中chacha20-poly1305的使用
原理简述chacha20-poly1305 是带有关联数据的认证加密(AEAD)AEAD是一种能够同时保证数据的保密性、 完整性和真实性的一种加密模式。通常使用除了明文以外,会把包头的地址和端口等信息放进去一起做完整性校验。chacha20 是流加密算法。poly1305 是完整性校验是算法,即根据输入(加密数据和关联数据)输出16字节的认证标签。使用方法加密输入项:输入项长度(Bytes)说明key32共享秘钥iv12干扰项,每次不同AADN关
2021-01-28 16:16:05 6070 1
原创 Openssl中椭圆曲线secp256k1的使用
引言最近基于openssl学习非对称加密,内部复杂的算法对本人来说也相当于盲盒,但是只要弄清楚它们的性质,就可以使用它们了。本文主要记录基于openssl如何使用secp256k1算法。secp256k1概述secp256k1就是方程: y2y^{2}y2= x3x^3x3 + 7 的一条曲线有一个基点G = 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 5D
2021-01-22 14:44:48 5093
原创 openssl生成椭圆曲线的私钥是如何做到每次不同的?
生成一个私钥只需要3步1. 获得指定曲线的group (如比特币的secp256k1)2. group和key绑定3. 用key来生成私钥先上一段代码例子 key1=EC_KEY_new(); if(key1==NULL) { printf("EC_KEY_new err!\n"); return -1; } key2=EC_KEY_new(); if(key2==NULL) { p
2021-01-13 10:40:56 995
原创 mTCP编译配置和例子使用
目录编译配置地址配置ARP表配置运行wget实例编译获取mTCP源码git clone https://github.com/mtcp-stack/mtcp.git获取mtcp目录下dpdk源码cd mtcpgit submodule initgit submodule update./setup_mtcp_dpdk_env.shPress [15] to compile x86_64-native-linuxapp-gcc versionPress [18] to install i
2020-12-24 11:55:07 1517 10
原创 Segment和Fragment的区别,做个实验就很清楚了
tcp socket, send一个超过mtu的数据包出去,网卡是发两个分片包出去,还是发两个独立的数据包出去呢?不知道,那就做个实验吧。写一个tcp client 和 tcp server .tcp client 一次调用send10240 bytes的包[root@node-3 tcpt]# ./a.out ========waiting for client's request========recv msg from client: , 10240 b.
2020-12-14 17:10:50 4177
原创 mellanox网卡驱动安装和温度检查
最近配了一台自用的编译和测试主机操作系统:ubuntu 18.04i7-10700 + b460m迫击炮 + mellanoxConnectX-4 Lx 网卡;这块网卡就有两个问题:1. 开机就很烫(不管有没有ifconfig up),手摸不得。2. 直接Reboot之后,网卡消失了,lspci都识别不到。降温为了降温,特地给机箱加了暴力风扇,默认转速太吵,又通过微星的bios调低转速,噪音能接受,网卡虽然还是热,但是不会烫手了。想通过lm-sensor监控温度失败了..
2020-12-10 16:28:50 7381 1
原创 vpp的cpu占用100%解决小技巧
笔记本虚拟机跑vpp啊,i7-8750H的cpu一个核心100%,发热感人,风扇很吵。解决这个cpu 100%问题,同时不影响功能调试的方法被我想到一个。主线程usleep, 用了这招之后跑性能测试肯定是跑不了的,当然笔记本本来也不是用来跑性能的。main.c: 1768function: vlib_main_or_worker_loopstatic u32 ck_rouds = 0; //define staic varible to count while (1)
2020-11-09 11:10:36 1244
原创 基于dpdk实现一个存数据的小例子
学习手撸dpdk,从写最简单的例子开始。功能说明数据包: ETHER HEADER | TYPE| LENGTH | VALUETYPE = 0x03 write reqTYPE = 0x04 write reply收到write req的单播请求,保存value, 回复write reply消息。测试客户端利用python3 scapy库来构造符合规则的二层数据包[root@localhost ~]# python3Python 3.6.8 (defau...
2020-10-09 00:36:20 1187 1
原创 简析vpp中的dpdk初始化
最近想手撸dpdk,正好需要研究一下dpdk的参数如何配置,就从vpp出发看看dpdk如何初始化的。vpp使用默认startup.conf配置。全局初始化rte_eal_init跟踪到执行该函数的参数[root@localhost fdio-vpp]# make debugGNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-119.el7Copyright (C) 2013 Free Software Foundation, Inc.Licen
2020-10-06 02:14:21 1912 3
原创 vpp nat44 handoff数据包
最近遇到一个性能瓶颈,在多线程共享内存池和哈希表的时候,不可避免产生锁竞争,性能受到影响。想要解决这个事情呢,有一个方法就是每个worker线程使用独立的内存池和哈希表,使之无锁化。如果要独立就要确保同一条流的包一定在同一个线程处理,这就需要通过专门的分发线程来做这件事了。恰好vpp本身支持线程之间的数据包调度——handoff。这里就从nat44的handoff.开始来学习吧。简化掉拥塞,trace等处理,只看核心逻辑。初始化设定nat44接口snat_feature_comman
2020-08-18 17:44:28 1780
原创 解决双蛋问题的C代码实现
看了李永乐老师讲解的双蛋问题,觉得很有趣,就按照视频里的思路自己实现一个吧。双蛋问题,实际题面为T层楼,N个蛋,最小扔多少次蛋一定能找出碎蛋的临界楼层?解题思路实为递归,这里就不多废文字了,有兴趣的也可以去B站av96214853观看李永乐老师的讲解该视频,更容易理解。直接上代码#include <stdio.h>#define FLOORS 2000#defi...
2020-03-18 01:56:17 981
原创 SR-IOV虚拟出来的网卡如何被VPP(DPDK)接管
目录引言SR-IOV简介网卡支持配置步骤1. 修改Bios enable SR-IOV2. 修改启动参数3. 设置vf网卡mac地址,权限4. 切换网卡驱动5.启动VPP小结引言在只有一张网卡的情况下,这个网卡不能既被VPP(DPDK)接管,同时被操作系统所使用。这个时候一般只能通过创建虚拟机,在虚拟机中运行VPP(DPDK)接管virtio的虚拟...
2019-12-17 20:30:20 6373 2
原创 根据掩码位计算IPv6地址掩码
最近想一个问题如何快速判断IPv6地址是否为同网段?比如给定一个前缀prefix 和一个掩码位数mask_len, 那么一个IPv6地址与前缀怎么对比比较快呢。我大概想了一下,把mask_len变成mask, (IPv6 &mask) ^prefix == 0 ? 这种位操作的判断应该是比较快的。mask_len变成mask就要麻烦一点了,毕竟IPv6有16个字节,不像IP...
2019-11-26 01:31:30 5742
原创 谷歌负载均衡Maglev实现简析
目录简介LB工作流程Maglev内部架构控制器转发器转发器实现快速包处理免拷贝批处理简介参考资料:Maglev: A Fast and Reliable Software Network Load Balancerhttps://storage.googleapis.com/pub-tools-public-publication-data/pdf/44...
2019-07-26 18:47:12 1361
原创 有风阻的非自由落体的速度求解之路
目录问题的由来开启求助模式求助一 数学物理竞赛老师求助二 高中数学老师求助三 做轮胎的求助四 小学教师求助五刚考完研的大四小朋友求助六 前同事——得到正确答案结语问题的由来上周有一天和老婆大人讨论小孩平衡车的问题,说体重大的小孩下坡有优势,速度会更快。我感觉也是的,那为什么体重大的会更快呢,老婆说你看看他们比赛不就知道了。我说对,如果不考虑阻力肯定是一...
2019-04-19 01:40:47 1752
原创 NAT ALG PPTP实现简要分析
目录PPTP简介PPTP工作流程建立连接数据传输直接穿越NAT会有什么问题NAT44 NAT64NAT66NAT ALG PPTP实现方法1. NAT 设置一个 call-id pool2. 建立连接时3. 数据传输时结语PPTP简介PPTP全称Point to Point Tunneling Protocol,点对点隧道协议。本质...
2019-03-06 17:55:45 1632
VPP简单插件源码Hook数据包
2018-12-06
C++输入输出流详解
2011-10-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人