ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

博通Broadcom SDK源码学习与开发11——Cable Modem DHCP管理

2022-02-02 23:06:13  阅读:170  来源: 互联网

标签:11 初始化 Cable SERVER 源码 Dhcp DHCP Server Lease


声明:原创作品,严禁用于商业目的。 本系列文章适合研发工程师,欢迎和我交流:408797506@qq.com(微信:408797506)
本系列文章将全面剖析以Bcm33xxx芯片开发Cablemodem产品的SDK源码为例,从编译系统到各个功能模块进行分析与探讨。

文章目录


本文介绍 Cable Modem 上DHCP相关的功能。

1. DHCP Server概览

(1) DhcpServerSnoop接收DHCP和ARP包,并向DhcpServerThread发送消息:AnnounceDhcpPacket,AnnounceArpPacket;
(2) DhcpServerThread接收到消息,调用DhcpServerIf类解析数据包,管理Timer定时事件;
(3) DhcpServerIf管理DHCP Lease的状态:New, Bound, Zombie,并向BcmCableHomeDhcpServerIpServiceAppIf发送Lease状态变化的事件;
(4) BcmCableHomeDhcpServerIpServiceAppIf将GUI配置的DHCP地址池范围与DHCP Lease建立对应关系,并根据GUI配置的变化和Lease状态的变化,维护两者的统一关系;

1.2 DHCP Request请求包流程

DHCP Server在接收到DHCP Request后,首先发送Arp Request验证分配的IP地址是否已被占用,如果1s钟内没有Arp响应则认为该IP可以被分配。流程如下:
DHCP请求流程

1.2 DHCP SERVER配置过程

DHCP相关的配置,存储在BcmCdpNonVolSettings类的实例中;
在这里插入图片描述

2. DHCP SERVER启动过程

2.1 系统类

系统是BcmEmtaEpsCmDocsisSystem类:
系统类
BcmCableHomeDhcpServerIpServiceAppIf在BcmCableHomeCommonApplication中进行初始化,而BcmEpsCmDocsisApplication是BcmCableHomeCommonApplication的子类;
在这里插入图片描述

2.2 系统初始化

系统初始化时,CreateApplications,然后逐个调用Applications中的Initialize, Pre/PostDriverInitialize, DeInitialize方法;
在这里插入图片描述

2.3 DHCP Server初始化

DHCP Server初始化过程,如下图
在这里插入图片描述

3. DHCP SERVER相关源码文件

3.1 IpHelpers

Dhcp: 实现如下类:
DhcpPacket, DhcpLeaseSettings, DhcpOptionsRfc2132;
DhcpClientId/DhcpClientIf/DhcpClientLease/DhcpClientSnoop/DhcpClientThread;
DhcpServerIf/DhcpServerLease/DhcpServerSnoop/DhcpServerThread;
DhcpV6:
如DhcpV4,实现DhcpV6 Client/Server 的 If api, Snoop, Thread等实现DhcpV6基本功能的类;
Cdp: 实现SNMP中WanAddrEntryTable, LanAddrEntryTable 与系统Dhcp Lease的同步;
Dhcp/Server: 实现LanAddrEntry 的注册,查找,更新功能;内容包括与Snmp与NonVol存储及CapEntry之间的同步;
在这里插入图片描述

3.2 eRouter

Dhcp/Client: 实现eRouter Wan DhcpV6 Privisioning的功能;
Dhcp/Server: 提供DhcpV6 Server 管理的Api;DhcpV6ServerSettings及其管理功能;

4. DHCP GUI设置的过程

  1. 在GUI -> Basic -> DHCP中同时修改了Starting Local Address, Number of CPEs, Lease Time
  2. 在Handler中:
    2.1 检测到start addr修改了,调用ReconfigureCableHomeDhcpServerService函数进行配置
    2.2 检测到cpe nums修改了,调用ReconfigureCableHomeDhcpServerService函数进行配置
    2.3 检测到lease time修改了,调用ReconfigureCableHomeDhcpServerService函数进行配置
    2.4 Apply后:
    2.4.1 在函数ReconfigureDhcpServerService中会调用ReconfigureCableHomeDhcpServerService函数进行配置
    2.4.2 在函数HandleLanConfigurationChange中也会调用ReconfigureCableHomeDhcpServerService函数进行配置

标签:11,初始化,Cable,SERVER,源码,Dhcp,DHCP,Server,Lease
来源: https://blog.csdn.net/eryunyong/article/details/122772832

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有