07 2024 档案

Linux 因没通过反向路由检查而drop报文
摘要:问题现象 # 93816ef1ab90是ubuntu:23.10,ip是172.17.0.2 docker run -itd 93816ef1ab90 bash 主机可以ping通该容器。 删除容器内默认路由和子网路由后,无法ping通。 问题分析 nettrace -p icmp --daddr 阅读全文

posted @ 2024-07-30 08:58 王景迁 阅读(62) 评论(0) 推荐(0)

eBPF skb字段pkt_type
摘要:pkt_type取值范围 https://elixir.bootlin.com/linux/v6.5/source/include/uapi/linux/if_packet.h#L33 skb中pkt_type值,由网卡驱动层函数eth_type_trans,在tc ingress之前,根据目的ma 阅读全文

posted @ 2024-07-29 09:14 王景迁 阅读(106) 评论(0) 推荐(0)

k8s cronjob执行时间
摘要:问题现象 一般cronjob执行时间会比预期晚8小时。 问题分析 cronjob执行时区以kube-controller-manager为准,而kube-controller-manager默认是0时区。 解决问题 解决方式1kube-controller-manager容器挂载宿主机timezon 阅读全文

posted @ 2024-07-27 15:32 王景迁 阅读(179) 评论(0) 推荐(0)

Shell 处理时间
摘要:场景1:打印时间 now_time=`date +"%Y-%m-%d %H:%M:%S"` echo $now_time # 使用双引号可以解析变量,单引号不行 echo 'time is $now_time' echo "time is $now_time" x=10 echo 'x is $x' 阅读全文

posted @ 2024-07-26 07:53 王景迁 阅读(71) 评论(0) 推荐(0)

配置etcd自动压缩
摘要:压缩碎片->清理空间 # 压缩会产生碎片,清理会删除碎片。只有删除碎片,才能减少空间占用。 # 压缩回收历史版本,回收从0到指定版本号的非key最新版本的历史版本数据 etcdctl compact 版本号 # 清理占用的系统存储空间 etcdctl defrag 自动压缩策略的2种模式 压缩策略 阅读全文

posted @ 2024-07-21 17:38 王景迁 阅读(720) 评论(0) 推荐(0)

dpvs 调整tcp mss
摘要:修改tcp options中mss值 src/ipvs/ip_vs_proto_tcp.c 因为tcp头部options中不同kind顺序是随机的,所以需要遍历找到kind值是mss 2和length值是4,再修改后面的mss value。 static void tcp_out_adjust_ms 阅读全文

posted @ 2024-07-20 17:44 王景迁 阅读(52) 评论(0) 推荐(0)

eBPF bpf_redirect函数
摘要:函数定义 https://www.man7.org/linux/man-pages/man7/bpf-helpers.7.html bpf_redirect不指定flag时,默认走egress,veth egress(in)和虚拟机网口egress(out)方向不同。 网卡响应报文 网卡要响应报文, 阅读全文

posted @ 2024-07-16 09:26 王景迁 阅读(225) 评论(0) 推荐(0)

Linux arp请求
摘要:arp请求根据路由来确定下一跳。 目的ip与源ip不同网段,走网关,arp请求目的地址是网关地址,下一跳mac是网关mac。ping 192.168.1.11 目的ip与源ip同网段,不走网关,arp请求目的地址是原来的目的地址,下一跳mac是原来目的地址mac。ping 192.168.11.10 阅读全文

posted @ 2024-07-16 08:59 王景迁 阅读(56) 评论(0) 推荐(0)

eBPF 容器持久化map到宿主机上
摘要:问题现象 k8s上启动pod后,使用主机网络的容器,加载eBPF程序到网口上,持久化map只能保存在容器文件系统/sys/fs/bpf中。容器复位后,新容器与原来eBPF程序使用的不是同一个map。 问题分析 新容器使用新的文件系统,无法找回原来的/sys/fs/bpf挂载点,需要持久化到宿主机上。 阅读全文

posted @ 2024-07-11 09:28 王景迁 阅读(89) 评论(0) 推荐(0)

eBPF 用户态和内核态基于ringbuf交互
摘要:相比于perf_event_array,ringbuf优势在于1. 读取数据是有序的,即提交顺序和消费顺序保持一致。2. 避免数据复制,即提交数据到map和传递到用户态都不需要拷贝。 内核态 ringbuf/ringbuf.c #include "../headers/vmlinux.h" #inc 阅读全文

posted @ 2024-07-11 08:59 王景迁 阅读(256) 评论(0) 推荐(0)

go解析命令行的3种方式
摘要:方式1:只用参数值 package main import ( "fmt" "os" ) func main() { // os.Args是[]string for k, v := range os.Args { fmt.Printf("args[%d]=[%s]\n", k, v) } } 方式2 阅读全文

posted @ 2024-07-05 07:15 王景迁 阅读(77) 评论(0) 推荐(0)

eBPF bpftool
摘要:bpftool是eBPF的命令行工具,prog和map是最常用的2种方式。 prog # 查看系统中所有的BPF Prog bpftool prog list # 查看tracelog bpftool prog tracelog map # 查看系统中所有的BPF Map bpftool map l 阅读全文

posted @ 2024-07-04 08:37 王景迁 阅读(190) 评论(0) 推荐(0)

go Error方法优先级高于String方法
摘要:package main import "fmt" type Test string func (t Test) String() string { return "test string" } func (t Test) Error() string { return "test error" } 阅读全文

posted @ 2024-07-02 08:16 王景迁 阅读(19) 评论(0) 推荐(0)

导航