首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Kubernetes 中的 eBPF

    BPF (Berkeley Packet Filter) 最早是用在 tcpdump 里面的,比如 tcpdump tcp and dst port 80 这样的过滤规则会单独复制 tcp 协议并且目的端口是 80 的包到用户态。整个实现是基于内核中的一个虚拟机来实现的,通过翻译 BPF 规则到字节码运行到内核中的虚拟机当中。最早的论文是这篇,这篇论文我大概翻了一下,主要讲的是原本的基于栈的过滤太重了,而 BPF 是一套能充分利用 CPU 寄存器,动态注册 filter 的虚拟机实现,相对于基于内存的实现更高效,不过那个时候的内存比较小才几十兆。bpf 会从链路层复制 pakcet 并根据 filter 的规则选择抛弃或者复制,字节码是这样的,具体语法就不介绍了,一般也不会去直接写这些字节码,然后通过内核中实现的一个虚拟机翻译这些字节码,注册过滤规则,这样不修改内核的虚拟机也能实现很多功能。

    02

    socat 使用「建议收藏」

    用socat试几个netcat常用的用法,对比如下: 1. 听tcp 12345端口 # nc -l 127.0.0.1 12345 # socat tcp-listen:12345 – 2. 向远处tcp 12345端口发点字 # echo “test” | nc 127.0.0.1 12345 # echo “test” | socat – tcp-connect:127.0.0.1:12345 3. 听udp 23456端口 # nc -u -l 127.0.0.1 23456 # socat udp-listen:23456 – 4. 向远处udp 23456端口发点字 # echo “test” | nc -u 127.0.0.1 23456 # echo “test” | socat – udp-connect:127.0.0.1:23456 5. 听unix socket /tmp/unix.socket # nc -U -l /tmp/unix.socket netcat没有-U选项 # socat unix-listen:/tmp/unix.socket – 6. 向本地unix socket /tmp/unix.socket发点字 # echo “test” | nc -U /tmp/unix.socket netcat没有-U选项 # echo “test” | socat – unix-connect:/tmp/unix.sock 7. 听本地unix datagram socket /tmp/unix.dg.sock nc110搞不定,netcat也搞不定 # socat unix-recvfrom:/tmp/unix.dg.sock – 8. 向本地unix datagram socket /dev/log发点字 nc110搞不定,netcat也搞不定 # echo “test” | socat – unix-sendto:/tmp/unix.dg.sock

    02
    领券