Recent Posts
-
December 18, 2021
Iptables Nft的rule规则匹配和执行情况的检查log和调试track
iptables提供了log和trace这2个target,nlog是写内核日志,trace是更详细的规则执行步骤和各个情况。log的使用的例子,打印dns包iptables -t mangle -i eth3 -I PREROUTING 1 -p udp -m udp --dport 53 -j LOG --log-prefix '==dns== 'iptables -t raw -A PREROUTING -p udp -m udp --dport 53 -j TRACExtable...
-
November 08, 2021
Linux的和bios的acpi兼容问题和acpi_osi启动参数可能影响reboot命令
之前有遇到,bios里面“操作系统类型”设置会影响linux的reboot命令,不设置为“linux”类型,linux的reboot命令不起作用。看网上很多帖子提到linux的重启问题和acpi_osi参数有关系,估计是bios的兼容问题吧。这篇官方解释比较详细: https://www.kernel.org/doc/html/latest/firmware-guide/acpi/osi.html完整的acpi参数参考, acpi_osi acpi_os_name这两个比较相关吧,可以参...
-
October 28, 2021
Linux的xdp里面也可以把网络包重定向到特定的cpu类似网卡rfs功能
Receive Side Scaling (RSS) with eBPF and CPUMAPhttps://developers.redhat.com/blog/2021/05/13/receive-side-scaling-rss-with-ebpf-and-cpumap#faster_software_receive_steering_with_xdphttps://github.com/torvalds/linux/blob/master/kernel/bpf/cpumap.c就是...
-
September 15, 2021
Linux系统tcp服务器accept队列溢出导致系统不ack客户端的数据包的现象(backlog队列溢出)
现象线上发现一个奇怪的现象,从wireshark看到,http 服务器只ack响应client端的syn包,client反复重传数据包,但server端只ack 1 回复client的syn包,后续http server 会继续重传 syn seq 1 ack 1。这样看起来就是 服务器不响应client端的数据包。想了半天搞懂不那里出了问题,猜测是tcp和syn 连接队列的溢出的问题。找了一下资料, 确实可能是这个 连接队列的问题,但根据症状还是不太好找到答案的。下面这篇文章提到这个现象...
-
August 26, 2021
Linux的ip网络收包和转发以及路由查找的逻辑
# 网络包的批量处理流程gro_normal_one // 只有gro的代码才会执行到route hint netif_receive_skb_list __netif_receive_skb_list_ptype ip_list_rcv ip_sublist_rcv ip_list_rcv_finish ip_extract_route_hint // 上一个skb的路由缓存,避免路由查找的优化 ip_rcv_...
-
July 02, 2021
Bridge Netfilter
http://ebtables.netfilter.org/documentation/bridge-nf.html http://ebtables.netfilter.org/misc/brnf-faq.htmlbridge是二层的,本来是使用ebtables这种二层过滤的, bridge-netfilter模块可以在网桥上执行iptables的包过滤一些控制开关:/proc/sys/net/bridge/bridge-nf-call-iptables /sys/devices/virt...
-
June 10, 2021
寻找n个元素里面最大的k个数top k算法
采用堆 时间复杂度 O(n+klog n) qsort + selection sort,快速排序 每轮丢掉另外一半只处理直接想要的k的范围内的那一边,但partition足够小时使用选择排序。 时间复杂度 O(n + k log k) Knuth’s Art of Programming, Volume 3, Page 212 的“tournament method” ,类似单场淘汰赛,两两分组决出最后的胜者,然后比赛完成之后从冠军的比赛路径(树)的反向搜索,从冠军在这些对手也用...
-
June 10, 2021
Xxhash测试
#include <stdio.h>#include <string.h>#define XXH_INLINE_ALL 1#define XXH_VECTOR XXH_SSE2#include "xxhash.h"void main(){ char s[128]; while(1) { printf("input:"); scanf("%s", s); XXH64_hash_t a = XXH3_64bits(s, strlen(s)); printf("...
-
May 26, 2021
Linux平台的pppoe Server
参数配置cat /etc/ppp/pppoe-server-options# PPP options for the PPPoE server# LIC: GPLauthrequire-paprequire-chap# loginlcp-echo-interval 10lcp-echo-failure 2ms-dns 119.29.29.29ms-dns 180.76.76.76配置用户名和密码/ # cat /etc/ppp/pap-secrets # Secrets for authe...
-
April 28, 2021
终端程序清屏和用背景色绘制柱状图
主要使用“ANSI escape codes”printf("\e[2J"); // ANSI escape codes (Erase in Display)printf("\e[H"); // ANSI escape codes (Cursor Position 0 0)printf("\e[42m"); // yellow color for (j = 0; j < len; j++) { printf(" ");}printf("\e[0m\n"); printf("\e[...