struct-group 0.1. __struct_group浏览IPv6代码时候,看到这样一个新玩法,__struct_group 123456789118 struct ipv6hdr {...132 __u8 hop_limit;133134 __struct_group(/* no tag */, addrs, /* no attrs 2024-09-21 others #others
内核如何管理同网口下多个ip地址(网口别名) 0.0.1. 总结内核如何管理 网口上的IPv4 地址: 每个网口下面有多个IPv4地址,每个IP地址存放到一个struct in_ifaddr的结构体里。这个结构体里存放别名、ip地址和掩码信息。 每个网口下面有一个单链表,每个ifa 节点通过ifa_next指向下一个 ifa 节点。通过这个链表把多个 ifa 地址链接在一起。 每个 net_namespace下有多个网口,通过一个 hash 2024-05-03 Netdev #address
bfp 在内核运行的核心入口函数及其变形 0.1. bpf prog内核运行核心入口函数0.1.1. 总结:___bpf_prog_runbfp 在内核运行的核心入口函数:___bpf_prog_run___bpf_prog_run是bfp的核心函数入口,该函数被多个不同stack size的函数调用。函数指针数组interpreters这把上面的这些函数汇集到一起。当bpf程序被加载到内核时候,内核创建为它一个bpf_prog结构体,根 2022-08-27 BPF #BPF
aws上部署hexo步骤记录 0.1. 安装步骤12345sudo apt-get updatesudo apt install docker.io -ydocker pull xxxxxxx/hexo:v1.0docker create --name=blog -p 4000:4000 xxxx/hexo:v1.0docker start blog 2021-10-24 Tools #Tools
IPv6: how to support IPv6 ext header 0.1. 概述0.1.1. 与IPv4的几点不同IPv6在扩展头和协议处理上跟IPv4还有些不一样。 IPv6报文格式设计上,上层协议和扩展头都作为IPv6的nexthdr类型串联在一起,不像IPv4那样扩展头是单独的option,上层协议类型放到ip头里的proto字段。 IPv6的扩展头大部分采用tlv格式,大部分扩展头前几个字节会保存nexthdr,本扩展的长度这两个信息,然后跟本扩展头相 2020-10-03 Route #IPv6
内核OVS的学习总结 OVS里最重要的几个元素:vport,flow,datapath。其中datapth是vport和flow的桥梁。 0.1. VPORT内核包含多个datapath(brige),上面包含一个或者多个vport。其中一个VPORT表示一个端口,一个vport只能归于一个特定的datapath。每个vport有自己的type, 对应不同的vport ops.每个内核网口被注册为vport的时候 2020-03-25 Netdev #ovs
net rx drop(续) 0.0.1. 接上部如上半部分析,导致rx drop值增加的报文有三类 IPv6 STP LLDP 至此,为什么drop统计值增加,能够解释清楚了。 2020-03-15 IRQ #IRQ
net rx drop 0.1. 问题来源接OP问题报告,监控到部分机器的net rx drop统计值异常,触发报警,需排查具体原因,并确认是否影响业务。 0.2. 问题分析0.2.1. 复现问题跟OP同学确认,通过采集/proc/net/dev下的rx drop。登录到出问题的机器上, 确认内核该统计值确实异常。 异常报文个数不多,大约1s一个左右。 不是所有机器都有异常,有部分机器drop统计为0. 0.2.2. 2020-03-15 IRQ #IRQ
How IPv6 addresses are flushed on link down IPv6协议栈里, 当一个网口被down之后,网口上对应的IP地址也会一起被flush掉。面对IPv6跟IPv4不同的行为方式,内核提供了一个规避的开关。在4.6内核之后提供了一个开关,用来避免IPv6地址别清理掉。这个开关既有全局的设置,也有每个interface粒度的单独开关。 1234567keep_addr_on_down - INTEGER Keep all IPv6 addres 2019-11-11 Route #address #IPv6
ebpf如何访问skb 的fileds 0.1. ebpf如何访问skb 的fileds 加载: 转换: 所有skb的fields都转换成相对skb结构体头部的偏移量 根据偏移量重新校验 bpf指令 报文运行: Skb的地址在skb是作为ctx寄存器传递给bfp run函数的。 0.2. BPF CTX与SKB这里以tcpdump(PF_PACKET)为例,结合函数调用关系说明,skb是如何被当做ctx参数传递给bpf程序 2019-10-27 BPF #BPF