packet mmap
2018-5-8
PACKET socket通常用来发送和接收链路层的包。如果没有开启PACKET_MMAP,收发包的处理是非常低效的,一次系统调用只能取得一个包,如果想要知道包的时间戳,需要两次系统调用。相反,PACKET_MMAP非常高效,它提供了一个大小可配置的环形缓存,该缓存映射到用户态,用来发送和接收数据包
packet socket 指定ARP协议的问题
2018-5-9
packet socket指定接收ARP协议,当接口放入桥中时,接收不到ARP数据包。1234567891011struct sockaddr_ll sll;int sock; sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ARP)); memset(
Linux socket filtering
2018-5-9
1 IntroductionLinux Socket Filtering (LSF) 衍生自 Berkeley Packet Filter (BPF).BPF允许用户程序添加一个filter到任何的socket,来允许或拒绝某些类型的数据包通过socket。LSF和BSD的BPF的过滤代码结构相同。
基于tun/udp的VPN的MTU计算
2019-5-24
MTU指的是以太帧的payload的最大长度,为1500。以太帧的最大长度要再加上14个字节的以太头,4个字节的校验,最大变成1518,如果在算上4个字节的VLAN,那么可以达到1522。以太帧最短是64个字节。Linux使用ping测试MTU,ping -M do -s 1470 8.8.8.8
igmp snooping & proxy
2019-10-10
multicast routing多播路由需要用户态配置。用户态igmp proxy守护进程接收lan侧的igmp请求,转发给WAN侧。并配置转发条目。查看多播路由表# ip mroute(192.168.110.110, 224.1.1.1) Iif: eth4094 Oifs: b
netlink消息类型和格式
2020-1-6
Netlink types最顶层的netlink消息类型是套接字层指定的,创建了这种类型的套接字,就只能和这种类型的netlink消息通信:如:nlsock = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE); 常见的netlink消息类型有:#define
ebtables学习
2021-12-21
ebtables是运行在bridge的防火墙。和iptables一样,它通过3个层级管理rules。table->chain->rule。table支持3个table。filter/nat/broute。filter是默认table。每个table都有built-in chains。filter表包
Berkeley Packet Filter (BPF) syntax
2022-3-5
tcpdump和wireshark的抓包过滤表达式的语法是BPF语法。这个语法可以编译BPF指令,下发到内核,进行抓包过滤。表达式(expression)包含一个或多个primitive。Primitive通常由 一个id(name or number),前面有一个或多个qualifier,组成。有
tcp poll() no POLLHUP when remote side's socket closed
2022-11-30
最近在实现xproxy的时候,想要用poll(),监视远程套接字的关闭,根据man手册。可以events等于0,在revents中监视POLLHUP。但是测试,远端套接字关闭的时候,没有POLLHUP事件,如果监听POLLIN,则有POLLIN事件,此时read()返回0,read之后,再监听POL
tcp keepalive set
2022-12-1
RFC 1122 要求,tcp默认的keepalive不能短于2小时,Keep-alive packets MUST only be sent when no data or acknowledgement packets have been received for the connection
Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.