在Linux内核网络协议栈开发中,开发者常会遇到自定义协议模块与网络标准协议(如IPv6)的交互问题。本文通过实际案例,深入分析myproto_start_xmit
函数被周期性调用的现象,探讨IPv6邻居发现协议(NDP)的作用机制,并提供调试与解决方案。
一、现象分析:周期性调用的根源
当开发者观察到myproto_start_xmit
函数被周期性触发时,日志中的关键线索指向了IPv6协议栈活动:
IPv6 packet: len=48, src=fe80::..., dst=ff02::... |
这种周期性行为源于IPv6的邻居发现协议(NDP),其核心机制包括:
-
路由器请求(RS)
接口启用时主动发送RS报文,促使路由器立即响应RA(Router Advertisement),而非等待默认周期。 -
邻居请求(NS)
用于地址解析和邻居可