lwIP更新记10:IP 冲突检测

lwip-2.2.0-rc1 版本于 2023 年 6 月 29 日发布,带来了我期盼已久的 IPv4 冲突检测 功能。

lwip-2.2.0-rc1 版本重新回归了 master 分支(主分支),不再使用单独的稳定分支。

master 分支 是一个 Git(版本控制程序)术语,如果你还没有使用过 Git 管理源代码,我这里 强烈建议 你马上用起来。如果你不知道如何入门,可以点击 这里 参考我的一些列文章,从《Keil MDK环境下Git入门指南》这篇文章开始。

我们可以从分支图中看出这这种关系,图中的每个黄色块都是一个 标签 ,主要用来标识一个软件版本。
lwIP更新记10:IP 冲突检测_第1张图片
我们回到 IPv4 冲突检测 功能。

IPv4 冲突 是指同一链路上的两台主机同时段使用相同的 IPv4 地址时,则一个或两个主机会出现问题。为了防止发生这种错误配置,主机可以在事后被动检测已发生的错误,以便主机或管理员可以响应以纠正问题,这就是 IPv4 冲突检测 功能。

RFC5227 定义了 IPv4 冲突检测的方法。lwIP-2.2.0-rc1 版本新增的 IPv4 冲突检测就是以 RFC5227 为依据编写的,对应代码保存在 acd.c 中,如下图所示:
lwIP更新记10:IP 冲突检测_第2张图片
用法:

  1. lwipopts.h 中定义宏 LWIP_ACD 为 1 ;
  2. 修改定时器调用间隔宏 ACD_TMR_INTERVAL ,单位为毫秒,推荐值为 100。可用的值为:1000、500,、333、 250、 200、 166、 142、 125、 111、 100… ,也就是用 1000 除以这个值,余数要尽可能的接近或等于 0 。
  3. 对于固定 IP 地址:
    调用函数 acd_start。ACD 模块通过回调函数通知冲突状态。
  4. 对于 AUTOIP:
    autoip 模块自动处理所有,不需要额外的操作。
  5. 对于 DHCP:
    使能宏 LWIP_DHCP_DOES_ACD_CHECK,然后 dhcp 自动处理所有,不需要额外的操作。

可以看出,用法非常简单。

你可能感兴趣的:(嵌入式TCP/IP,lwIP)