上一页 1 2 3 4 5 6 7 8 9 10 ··· 45 下一页

2024年7月16日

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 王景迁 阅读(43) 评论(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 王景迁 阅读(19) 评论(0) 推荐(0) 编辑

2024年7月11日

eBPF 容器持久化map到宿主机上

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

posted @ 2024-07-11 09:28 王景迁 阅读(21) 评论(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 王景迁 阅读(81) 评论(0) 推荐(0) 编辑

2024年7月5日

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 王景迁 阅读(11) 评论(0) 推荐(0) 编辑

2024年7月4日

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 王景迁 阅读(28) 评论(0) 推荐(0) 编辑

2024年7月2日

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 王景迁 阅读(2) 评论(0) 推荐(0) 编辑

2024年6月29日

Linux veth口名字不能超过15个字符

摘要: ip link add name aaaaaaaaaaaaaaa type veth peer name bbbbbbbbbbbbbbb ip link add name aaaaaaaaaaaaaaaa type veth peer name bbbbbbbbbbbbbbbb veth口名字15个 阅读全文

posted @ 2024-06-29 17:50 王景迁 阅读(6) 评论(0) 推荐(0) 编辑

监听ctrl+c和15信号

摘要: function quit() { time=$(date "+%Y-%m-%d %H:%M:%S") echo "$time quit" exit 0 } # 捕捉ctrl+c trap quit SIGINT # 捕捉15 trap quit SIGTERM while true do slee 阅读全文

posted @ 2024-06-29 17:44 王景迁 阅读(12) 评论(0) 推荐(0) 编辑

go defer读不到最新error

摘要: package main import ( "errors" "fmt" ) func main() { err := errors.New("err1") defer fmt.Println(err.Error()) err = errors.New("err2") } defer只会记住执行到此 阅读全文

posted @ 2024-06-29 17:22 王景迁 阅读(2) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 9 10 ··· 45 下一页

导航