arp 协议:
- 接口link down---->当然删除arp表项的时候需要注意静态路由不能删除,已经被标示为invalid 不可用状态也不要删除, 其实不可用状态由不可用状态逻辑来维护
- 接口ip变化---->首先要发送免费arp ;更新arp 缓存,比如以前在这个接口上学习的arp 是否还能为valid状态,还是需要需要删除,毕竟修改接口ip可能是ip 包含关系变大
- 接口ip mac 变化---->此时需要发送免费arp报文, 此时要区分 是由于IP 改变还是由于MAC改变 而发送的免费arp报文, mac 地址改变可能一个接口配置多个IP, 需要对这个接口上所有的IP 发送免费arp
- 对接口发包判断时也要考虑接口的二三层属性
- 发包的时如果不是自己local-cpu报文,则放入remote-cpu ringbuf 处理报文, 如果enqueue ring buf 失败则直接丢弃!
- 对于接口中二层口 收到本地三层口arp请求报文也要处理!
- 对于本地二层口收到arp 报文判断为转发,此时要注意接口的trunk access tag untag的属性
- 对于arp 应答报文,记得处理arp 生成neighbour
DHCP 协议:
- dhcp snoop 放在dpdk里面
- dhcp server 以及中继放在dhcp 应用层
- dpch server 要注意dhcp 监听的udp port68时 使用的raw socket 等情况,比如只有raw socket 会导致内核协议栈回复 icmp 没有68号端口等问题
VRRP 协议栈:
- 目前将vrrp 协议栈放在dpdk 里面, 主要有track 上行链路, FSM 状态机
NAT:
- 目前使用portal 认证的时候用到full-nat
L2转发:
- 目前可能设置多个二层口, 所以变细了bridge 的mac 地址表 实现二层转发
L3转发:
- 为了实现链路备份,添加了PBR,都是一些简单的PBR+链路检测
DNS:
- DNS解析以及劫持 实现某些认证功能
IP重组:
- 参考内核设计实现IP分片重组
QOS:
- 参考内核的TC 流控模块
DDOS: