
{"id":12801,"date":"2026-03-13T07:25:11","date_gmt":"2026-03-13T07:25:11","guid":{"rendered":"https:\/\/developer.rdkcentral.com\/documentation\/?page_id=12801"},"modified":"2026-03-13T07:27:06","modified_gmt":"2026-03-13T07:27:06","slug":"dhcp-client-manager-architecture","status":"publish","type":"page","link":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-client-manager-architecture\/","title":{"rendered":"DHCP Client Manager Architecture"},"content":{"rendered":"\n<p>Component Overview<\/p>\n\n\n\n<p>&nbsp;The DHCP Client Manager architecture is designed around a modular, event-driven approach that provides centralized management of DHCP operations while maintaining clear separation of concerns between different functional areas.<br><br>High-Level Architecture<\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">\ngraph TB\n    %% Application Layer - Blue theme\n    subgraph APP [\" \"]\n        direction TB\n        TR181[TR-181 Data Model]:::appStyle\n        RBUS[RBUS\/DBUS Interface]:::appStyle\n        MGMT[Management APIs]:::appStyle\n    end\n    \n    %% DHCP Manager Core - Green theme\n    subgraph CORE [\" \"]\n        direction TB\n        CONTROLLER[Main Controller]:::coreStyle\n        MONITOR[Lease Monitor]:::coreStyle\n        RECOVERY[Recovery Handler]:::coreStyle\n    end\n    \n    %% Protocol Handlers - Orange theme\n    subgraph HANDLERS [\" \"]\n        direction TB\n        V4HANDLER[DHCPv4 Handler]:::handlerStyle\n        V6HANDLER[DHCPv6 Handler]:::handlerStyle\n        MAPT[MAP-T Processor]:::handlerStyle\n    end\n    \n    %% External Clients - Purple theme\n    subgraph CLIENTS [\" \"]\n        direction LR\n        subgraph V4CLIENT [\" \"]\n            UDHCPC[udhcpc Client]:::clientStyle\n            V4PLUGIN[udhcpc Plugin]:::pluginStyle\n        end\n        subgraph V6CLIENT [\" \"]\n            DIBBLER[dibbler Client]:::clientStyle\n            V6PLUGIN[dibbler Plugin]:::pluginStyle\n        end\n    end\n    \n    %% System Integration - Gray theme\n    subgraph SYSTEM [\" \"]\n        direction TB\n        NETIF[Network Interfaces]:::systemStyle\n        SYSEVENT[System Events]:::systemStyle\n        WAN[WAN Manager]:::systemStyle\n    end\n    \n    %% Main control flow - thick lines\n    TR181 -.->|Config| CONTROLLER\n    RBUS -.->|Commands| CONTROLLER\n    MGMT -.->|API Calls| CONTROLLER\n    \n    %% Core coordination\n    CONTROLLER ==>|Control| V4HANDLER\n    CONTROLLER ==>|Control| V6HANDLER\n    CONTROLLER ==>|Monitor| RECOVERY\n    \n    %% Lease monitoring flow\n    MONITOR ==>|Lease Updates| CONTROLLER\n    V4PLUGIN -->|IPC| MONITOR\n    V6PLUGIN -->|IPC| MONITOR\n    \n    %% Client management\n    V4HANDLER ==>|Start\/Stop| UDHCPC\n    V6HANDLER ==>|Start\/Stop| DIBBLER\n    V6HANDLER -->|Process| MAPT\n    \n    %% Plugin execution\n    UDHCPC -->|Execute| V4PLUGIN\n    DIBBLER -->|Execute| V6PLUGIN\n    \n    %% System integration\n    V4HANDLER -->|Configure| NETIF\n    V6HANDLER -->|Configure| NETIF\n    V4HANDLER -->|Notify| SYSEVENT\n    V6HANDLER -->|Notify| SYSEVENT\n    CONTROLLER -->|Status| WAN\n    \n    %% Styling\n    classDef appStyle fill:#e1f5fe,stroke:#0277bd,stroke-width:2px,color:#000\n    classDef coreStyle fill:#e8f5e8,stroke:#2e7d32,stroke-width:3px,color:#000\n    classDef handlerStyle fill:#fff3e0,stroke:#f57c00,stroke-width:2px,color:#000\n    classDef clientStyle fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px,color:#000\n    classDef pluginStyle fill:#ede7f6,stroke:#5e35b1,stroke-width:2px,color:#000\n    classDef systemStyle fill:#f5f5f5,stroke:#616161,stroke-width:2px,color:#000\n    \n    %% Group styling\n    APP ~~~ CORE\n    CORE ~~~ HANDLERS\n    HANDLERS ~~~ CLIENTS\n    CLIENTS ~~~ SYSTEM<\/pre><\/div>\n\n\n\n<p><br>&nbsp;Component Responsibilities<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/wiki.rdkcentral.com\/download\/attachments\/466452778\/DHCP_mgr_block_diagram.png?version=1&amp;modificationDate=1773122265000&amp;api=v2\" alt=\"\"\/><\/figure>\n\n\n\n<p><em>Figure 1: DHCP Manager Component Block Diagram &#8211; Shows the main components and their interactions within the RDK-B DHCP Management system<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"DHCPClientManagerArchitecture-MainController\">Main Controller<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Central Coordination<\/strong>: Orchestrates all DHCP client operations<\/li>\n\n\n\n<li><strong>State Management<\/strong>: Maintains client operational states<\/li>\n\n\n\n<li><strong>Interface Monitoring<\/strong>: Tracks network interface status<\/li>\n\n\n\n<li><strong>Configuration Management<\/strong>: Processes TR-181 configuration changes<\/li>\n\n\n\n<li><strong>Error Handling<\/strong>: Implements recovery and error handling strategies<\/li>\n\n\n\n<li><strong>Process Monitoring<\/strong>: Monitors DHCP client process health<\/li>\n<\/ul>\n\n\n\n<p><strong>Lease Monitor<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>IPC Server<\/strong>: Receives lease updates from DHCP client plugins<\/li>\n\n\n\n<li><strong>Message Routing<\/strong>: Routes lease information to appropriate handlers<\/li>\n\n\n\n<li><strong>Protocol Detection<\/strong>: Identifies DHCPv4 vs DHCPv6 messages<\/li>\n\n\n\n<li><strong>Fast Processing<\/strong>: Minimal latency message processing<\/li>\n<\/ul>\n\n\n\n<p><strong>Protocol(Lease) Handlers<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DHCPv4 Handler<\/strong>: Processes IPv4 lease information and network configuration<\/li>\n\n\n\n<li><strong>DHCPv6 Handler<\/strong>: Processes IPv6 lease information including IANA\/IAPD<\/li>\n\n\n\n<li><strong>MAP-T Processor<\/strong>: Handles IPv4-over-IPv6 transition technology<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"DHCPClientManagerArchitecture-RecoveryHandler\">Recovery Handler<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Persistence<\/strong>: Stores lease information for system restart recovery<\/li>\n\n\n\n<li><strong>State Restoration<\/strong>: Restores system state after crashes or restarts<\/li>\n<\/ul>\n\n\n\n<p>Data Flow Architecture<\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant CONFIG as TR-181 Config\n    participant CONTROLLER as Main Controller\n    participant CLIENT as DHCP Client\n    participant PLUGIN as Client Plugin\n    participant HANDLER as Lease Handler\n    participant SYSTEM as System\/Network\n    \n    CONFIG->>CONTROLLER: Configuration Change\n    CONTROLLER->>CLIENT: Start\/Configure Client\n    CLIENT->>CLIENT: Acquire Lease\n    CLIENT->>PLUGIN: Execute Plugin\n    PLUGIN->>CONTROLLER: Send Lease Info (IPC)\n    Note over CONTROLLER: IPC Monitoring&lt;br\/>handled internally\n    CONTROLLER->>HANDLER: Process Lease\n    HANDLER->>SYSTEM: Configure Network\n    HANDLER->>CONFIG: Update TR-181 Status\n    HANDLER->>CONTROLLER: Processing Complete<\/pre><\/div>\n\n\n\n<p><br>Threading Model<br><strong>Thread Architecture<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">graph TB\n    %% Main Process - Green theme\n    subgraph PROCESS [\" \"]\n        direction TB\n        MAIN[Main Thread]:::mainStyle\n        RBUS_T[RBUS Thread&lt;br\/>\u2022 TR-181 Operations&lt;br\/>\u2022 Client Enable\/Disable&lt;br\/>\u2022 Configuration Updates]:::rbusStyle\n        CONTROLLER_T[Controller Thread&lt;br\/>\u2022 Client Management&lt;br\/>\u2022 Lease Monitoring&lt;br\/>\u2022 Recovery Operations]:::coreStyle\n    end\n    \n    %% External Processes - Purple theme\n    subgraph EXTERNAL [\" \"]\n        direction LR\n        subgraph CLIENTS [\" \"]\n            UDHCPC_P[udhcpc Process]:::clientStyle\n            DIBBLER_P[dibbler Process]:::clientStyle\n        end\n        subgraph PLUGINS [\" \"]\n            PLUGIN_P[Plugin Processes]:::pluginStyle\n        end\n    end\n    \n    %% Thread coordination\n    MAIN ==>|Initialize &amp; Start| RBUS_T\n    MAIN ==>|Initialize &amp; Start| CONTROLLER_T\n    \n    %% RBUS to Controller communication\n    RBUS_T ==>|Enable\/Disable Commands| CONTROLLER_T\n    RBUS_T -.->|Configuration Changes| CONTROLLER_T\n    CONTROLLER_T -.->|Status Updates| RBUS_T\n    \n    %% Process management\n    CONTROLLER_T ==>|Spawn\/Control| UDHCPC_P\n    CONTROLLER_T ==>|Spawn\/Control| DIBBLER_P\n    \n    %% Plugin execution\n    UDHCPC_P -->|Execute| PLUGIN_P\n    DIBBLER_P -->|Execute| PLUGIN_P\n    \n    %% IPC communication (handled by controller)\n    PLUGIN_P -->|IPC Messages| CONTROLLER_T\n    \n    %% Recovery operations (part of controller loop)\n    CONTROLLER_T -.->|Monitor\/Recover| UDHCPC_P\n    CONTROLLER_T -.->|Monitor\/Recover| DIBBLER_P\n    \n    %% Styling\n    classDef mainStyle fill:#e3f2fd,stroke:#1976d2,stroke-width:3px,color:#000\n    classDef rbusStyle fill:#fff8e1,stroke:#ff8f00,stroke-width:3px,color:#000\n    classDef coreStyle fill:#e8f5e8,stroke:#2e7d32,stroke-width:3px,color:#000\n    classDef clientStyle fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px,color:#000\n    classDef pluginStyle fill:#ede7f6,stroke:#5e35b1,stroke-width:2px,color:#000\n    \n    %% Group spacing\n    PROCESS ~~~ EXTERNAL<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"DHCPClientManagerArchitecture-ThreadResponsibilities\">Thread Responsibilities<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPClientManagerArchitecture-MainThread\">Main Thread<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Initialization<\/strong>: System startup and component initialization<\/li>\n\n\n\n<li><strong>Signal Handling<\/strong>: Process system signals and shutdown<\/li>\n\n\n\n<li><strong>Thread Management<\/strong>: Initialize and start RBUS and controller threads<\/li>\n\n\n\n<li><strong>System Coordination<\/strong>: Coordinate between different threads during startup\/shutdown<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPClientManagerArchitecture-RBUSThread\">RBUS Thread<\/h4>\n\n\n\n<p>The RBUS thread handles all TR-181 Data Model operations and external management interface:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>TR-181 Operations<\/strong>: Handle all data model get\/set operations<\/li>\n\n\n\n<li><strong>RBUS Management<\/strong>: Manage RBUS\/DBUS communications and subscriptions<\/li>\n\n\n\n<li><strong>Client Control Commands<\/strong>: Process enable\/disable commands for DHCP clients<\/li>\n\n\n\n<li><strong>Configuration Management<\/strong>: Handle configuration changes from external management<\/li>\n\n\n\n<li><strong>Status Reporting<\/strong>: Report client status and lease information to TR-181 data model<\/li>\n\n\n\n<li><strong>Parameter Validation<\/strong>: Validate configuration parameters before applying<\/li>\n\n\n\n<li><strong>Event Notifications<\/strong>: Generate TR-181 events for configuration and status changes<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPClientManagerArchitecture-ControllerThread\">Controller Thread<\/h4>\n\n\n\n<p>The controller thread is the primary worker thread that handles all core DHCP management operations:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Client Management<\/strong>: Start\/stop\/configure DHCP clients based on RBUS commands<\/li>\n\n\n\n<li><strong>Lease Processing<\/strong>: Process lease updates from plugins via IPC<\/li>\n\n\n\n<li><strong>State Monitoring<\/strong>: Monitor interface and client states<\/li>\n\n\n\n<li><strong>Configuration Updates<\/strong>: Apply configuration changes received from RBUS thread<\/li>\n\n\n\n<li><strong>Recovery Operations<\/strong>: Called as APIs before the main controller loop\n<ul class=\"wp-block-list\">\n<li>Process health checking and restart operations<\/li>\n\n\n\n<li>Lease recovery from persistent storage<\/li>\n\n\n\n<li>System state restoration after crashes<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>IPC Listening<\/strong>: Listen for plugin messages on the IPC socket<\/li>\n\n\n\n<li><strong>Message Processing<\/strong>: Parse and validate lease messages from plugins<\/li>\n\n\n\n<li><strong>Data Routing<\/strong>: Route processed messages to appropriate handlers<\/li>\n\n\n\n<li><strong>Error Handling<\/strong>: Handle communication and operational errors<\/li>\n<\/ul>\n\n\n\n<p><br>Message Flow Patterns<\/p>\n\n\n\n<p><strong>Lease Acquisition Flow<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">graph TD\n    START[Interface Up] --> CHECK{Interface Ready?}\n    CHECK -->|No| WAIT[Wait for Ready]\n    WAIT --> CHECK\n    CHECK -->|Yes| START_CLIENT[Start DHCP Client]\n    START_CLIENT --> DISCOVER[DHCP Discover\/Solicit]\n    DISCOVER --> RESPONSE{Server Response?}\n    RESPONSE -->|No| TIMEOUT[Timeout\/Retry]\n    TIMEOUT --> DISCOVER\n    RESPONSE -->|Yes| PLUGIN[Execute Plugin]\n    PLUGIN --> IPC[Send IPC Message]\n    IPC --> PROCESS[Process Lease]\n    PROCESS --> CONFIGURE[Configure Interface]\n    CONFIGURE --> UPDATE[Update TR-181]\n    UPDATE --> COMPLETE[Complete]<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"DHCPClientManagerArchitecture-ErrorRecoveryFlow\">Error Recovery Flow<\/h3>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">graph TD\n    ERROR[Error Detected] --> TYPE{Error Type?}\n    TYPE -->|Process Died| RESTART[Restart Client]\n    TYPE -->|Config Error| RECONFIG[Reconfigure Client]\n    TYPE -->|Network Error| RETRY[Retry Operation]\n    TYPE -->|Critical Error| DISABLE[Disable Client]\n    \n    RESTART --> CHECK[Check Recovery]\n    RECONFIG --> CHECK\n    RETRY --> CHECK\n    \n    CHECK --> SUCCESS{Recovery OK?}\n    SUCCESS -->|Yes| NORMAL[Normal Operation]\n    SUCCESS -->|No| ESCALATE[Escalate Error]\n    \n    DISABLE --> LOG[Log Error]\n    ESCALATE --> LOG\n    LOG --> COMPLETE[Complete]\n    NORMAL --> COMPLETE<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"DHCPClientManagerArchitecture-InterfaceArchitecture\">Interface Architecture<\/h2>\n\n\n\n<p><strong>Network Interface Integration<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">graph TB\n    %% Network Stack - Blue theme\n    subgraph STACK [\" \"]\n        direction TB\n        KERNEL[Kernel Network]:::kernelStyle\n        NETDEV[Network Devices]:::netStyle\n        ROUTES[Routing Table]:::netStyle\n        DNS[DNS Configuration]:::netStyle\n    end\n    \n    %% DHCP Manager - Green theme (limited scope)\n    subgraph DHCP [\" \"]\n        direction TB\n        CONTROLLER[Controller]:::coreStyle\n        V4HANDLER[DHCPv4 Handler&lt;br\/>\u2022 Interface IP Config&lt;br\/>\u2022 Lease Processing]:::handlerStyle\n        V6HANDLER[DHCPv6 Handler&lt;br\/>\u2022 Interface IPv6 Config&lt;br\/>\u2022 Prefix Assignment]:::handlerStyle\n    end\n    \n    %% WAN Manager - Orange theme (system integration)\n    subgraph WAN_MGR [\" \"]\n        direction TB\n        WAN[WAN Manager&lt;br\/>\u2022 Default Routes&lt;br\/>\u2022 DNS Configuration&lt;br\/>\u2022 Firewall Rules]:::wanStyle\n        SYSEVENT[System Events]:::systemStyle\n    end\n    \n    %% System Integration - Gray theme\n    subgraph INTEGRATION [\" \"]\n        direction TB\n        FIREWALL[Firewall]:::systemStyle\n        ROUTING[Routing Daemon]:::systemStyle\n    end\n    \n    %% DHCP Manager - Interface only configuration\n    CONTROLLER ==>|Interface Control| NETDEV\n    V4HANDLER ==>|Configure Interface IP| NETDEV\n    V6HANDLER ==>|Configure Interface IPv6| NETDEV\n    \n    %% DHCP Manager - Lease status reporting\n    V4HANDLER -->|Lease Status| SYSEVENT\n    V6HANDLER -->|Lease Status| SYSEVENT\n    \n    %% WAN Manager - System configuration\n    WAN ==>|Default Routes| ROUTES\n    WAN ==>|DNS Servers| DNS\n    WAN ==>|Firewall Rules| FIREWALL\n    WAN -->|Route Updates| ROUTING\n    \n    %% Event-driven integration\n    SYSEVENT ==>|Lease Events| WAN\n    \n    %% Kernel interaction\n    NETDEV -.->|Interface State| KERNEL\n    ROUTES -.->|Kernel Routes| KERNEL\n    DNS -.->|Resolver Config| KERNEL\n    \n    %% Styling\n    classDef kernelStyle fill:#e8eaf6,stroke:#3f51b5,stroke-width:3px,color:#000\n    classDef netStyle fill:#e1f5fe,stroke:#0277bd,stroke-width:2px,color:#000\n    classDef coreStyle fill:#e8f5e8,stroke:#2e7d32,stroke-width:3px,color:#000\n    classDef handlerStyle fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px,color:#000\n    classDef wanStyle fill:#fff3e0,stroke:#f57c00,stroke-width:3px,color:#000\n    classDef systemStyle fill:#f5f5f5,stroke:#616161,stroke-width:2px,color:#000\n    \n    %% Group spacing\n    STACK ~~~ DHCP\n    DHCP ~~~ WAN_MGR\n    WAN_MGR ~~~ INTEGRATION<\/pre><\/div>\n\n\n\n<p><br>&nbsp;<strong>TR-181 Integration Points<\/strong><\/p>\n\n\n\n<p>The DHCP Manager integrates with TR-181 at multiple levels:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"DHCPClientManagerArchitecture-ConfigurationParameters\">Configuration Parameters<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>Device.DHCPv4.Client.{i}.*<\/code>\u00a0&#8211; DHCPv4 client configuration<\/li>\n\n\n\n<li><code>Device.DHCPv6.Client.{i}.*<\/code>\u00a0&#8211; DHCPv6 client configuration<\/li>\n\n\n\n<li>Custom vendor parameters and extensions<\/li>\n<\/ul>\n\n\n\n<p>Status Parameters<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Lease information and status<\/li>\n\n\n\n<li>Client operational state<\/li>\n\n\n\n<li>Error conditions and diagnostics<\/li>\n\n\n\n<li>Performance metrics<\/li>\n<\/ul>\n\n\n\n<p>Operational Commands<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Client enable\/disable operations<\/li>\n\n\n\n<li>Lease renewal commands<\/li>\n\n\n\n<li>Reset and restart operations<\/li>\n\n\n\n<li>Diagnostic commands<\/li>\n<\/ul>\n\n\n\n<p>Security Architecture<\/p>\n\n\n\n<p><strong>Process Isolation<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">graph TB\n    %% Privileged Context - Red theme (highest privilege)\n    subgraph PRIVILEGED [\" \"]\n        direction TB\n        MANAGER[DHCP Manager]:::privilegedStyle\n        CONTROLLER[Controller]:::privilegedStyle\n    end\n    \n    %% Network Context - Blue theme (network operations)\n    subgraph NETWORK [\" \"]\n        direction LR\n        UDHCPC[udhcpc Client]:::networkStyle\n        DIBBLER[dibbler Client]:::networkStyle\n    end\n    \n    %% Plugin Context - Purple theme (plugin execution)\n    subgraph PLUGIN [\" \"]\n        direction LR\n        V4PLUGIN[udhcpc Plugin]:::pluginStyle\n        V6PLUGIN[dibbler Plugin]:::pluginStyle\n    end\n    \n    %% System Context - Orange theme (system resources)\n    subgraph SYSTEM [\" \"]\n        direction TB\n        NETCONFIG[Network Config]:::systemStyle\n        FILESYSTEM[File System]:::systemStyle\n    end\n    \n    %% Control flows (privileged to network)\n    MANAGER ==>|Manage| CONTROLLER\n    CONTROLLER ==>|Control| UDHCPC\n    CONTROLLER ==>|Control| DIBBLER\n    \n    %% Plugin execution flows\n    UDHCPC -->|Execute| V4PLUGIN\n    DIBBLER -->|Execute| V6PLUGIN\n    \n    %% Plugin communication (isolated)\n    V4PLUGIN -.->|IPC| MANAGER\n    V6PLUGIN -.->|IPC| MANAGER\n    \n    %% System resource access (privileged only)\n    CONTROLLER ==>|Configure| NETCONFIG\n    CONTROLLER ==>|Persist| FILESYSTEM\n    \n    %% Security boundaries (dotted lines)\n    NETCONFIG -.->|Read-only| UDHCPC\n    NETCONFIG -.->|Read-only| DIBBLER\n    \n    %% Styling\n    classDef privilegedStyle fill:#ffebee,stroke:#c62828,stroke-width:3px,color:#000\n    classDef networkStyle fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#000\n    classDef pluginStyle fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px,color:#000\n    classDef systemStyle fill:#fff3e0,stroke:#f57c00,stroke-width:2px,color:#000\n    \n    %% Group spacing\n    PRIVILEGED ~~~ NETWORK\n    NETWORK ~~~ PLUGIN\n    PLUGIN ~~~ SYSTEM<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"DHCPClientManagerArchitecture-DHCPProtocolSequences\">DHCP Protocol Sequences<\/h2>\n\n\n\n<p><strong>DHCPv4 Sequence Flow<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/wiki.rdkcentral.com\/download\/attachments\/466452778\/DHCP_v4_sequence.png?version=1&amp;modificationDate=1773122266000&amp;api=v2\" alt=\"\"\/><\/figure>\n\n\n\n<p><em>Figure 2: DHCPv4 Sequence Diagram &#8211; Shows the complete DHCPv4 lease acquisition and processing flow from client startup through network configuration<\/em><\/p>\n\n\n\n<p>The DHCPv4 sequence illustrates the interaction between the DHCP Manager, udhcpc client, and the udhcpc plugin during lease acquisition:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Client Initialization<\/strong>: Main controller starts udhcpc client based on TR-181 configuration<\/li>\n\n\n\n<li><strong>DHCP Discovery<\/strong>: udhcpc performs standard DHCP discovery process (DISCOVER\/OFFER\/REQUEST\/ACK)<\/li>\n\n\n\n<li><strong>Plugin Execution<\/strong>: Upon lease acquisition, udhcpc executes the plugin with lease information<\/li>\n\n\n\n<li><strong>IPC Communication<\/strong>: Plugin sends lease data to the controller via IPC<\/li>\n\n\n\n<li><strong>Lease Processing<\/strong>: Controller processes the lease and updates interface configuration<\/li>\n\n\n\n<li><strong>Interface Configuration<\/strong>: Interface is configured with IP address and interface-specific settings<\/li>\n\n\n\n<li><strong>System Events<\/strong>: Lease status events are sent to system for WAN Manager processing<\/li>\n\n\n\n<li><strong>WAN Manager Integration<\/strong>: WAN Manager handles default routes, DNS, and firewall configuration<\/li>\n\n\n\n<li><strong>Status Update<\/strong>: TR-181 data model is updated with current lease information<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"DHCPClientManagerArchitecture-DHCPv6SequenceFlow\">DHCPv6 Sequence Flow<br><br><img decoding=\"async\" height=\"250\" src=\"https:\/\/wiki.rdkcentral.com\/download\/attachments\/466452778\/DHCP_v6_sequence.png?version=1&amp;modificationDate=1773122267000&amp;api=v2\" alt=\"\"><\/h3>\n\n\n\n<p><em>Figure 3: DHCPv6 Sequence Diagram &#8211; Shows the complete DHCPv6 lease acquisition and processing flow including IANA and IAPD handling<\/em><\/p>\n\n\n\n<p>The DHCPv6 sequence demonstrates the more complex IPv6 lease acquisition process:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Client Initialization<\/strong>: Main controller starts dibbler client with IPv6-specific configuration<\/li>\n\n\n\n<li><strong>DHCPv6 Solicitation<\/strong>: dibbler performs DHCPv6 solicitation process (SOLICIT\/ADVERTISE\/REQUEST\/REPLY)<\/li>\n\n\n\n<li><strong>Dual Association<\/strong>: Handles both IANA (Identity Association for Non-temporary Addresses) and IAPD (Identity Association for Prefix Delegation)<\/li>\n\n\n\n<li><strong>Plugin Execution<\/strong>: dibbler executes the plugin with comprehensive IPv6 lease information<\/li>\n\n\n\n<li><strong>IPC Communication<\/strong>: Plugin sends detailed IPv6 lease data including addresses and prefixes<\/li>\n\n\n\n<li><strong>Lease Processing<\/strong>: Controller processes both address assignments and prefix delegations<\/li>\n\n\n\n<li><strong>Interface Configuration<\/strong>: Interface is configured with IPv6 addresses and prefixes<\/li>\n\n\n\n<li><strong>System Events<\/strong>: IPv6-specific lease events are generated for WAN Manager processing<\/li>\n\n\n\n<li><strong>WAN Manager Integration<\/strong>: WAN Manager handles IPv6 default routes, DNS, and system configuration<\/li>\n\n\n\n<li><strong>Status Update<\/strong>: TR-181 data model is updated with IPv6 lease information<\/li>\n<\/ol>\n\n\n\n<p>Extension Points<\/p>\n\n\n\n<p><strong>Plugin Architecture<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Client Plugins<\/strong>: Extend support to new DHCP clients<\/li>\n\n\n\n<li><strong>Protocol Extensions<\/strong>: Add support for new DHCP options<\/li>\n\n\n\n<li><strong>Custom Handlers<\/strong>: Implement custom lease processing<\/li>\n\n\n\n<li><strong>Integration Hooks<\/strong>: Add hooks for external system integration<\/li>\n<\/ul>\n\n\n\n<p><strong>Configuration Extensions<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Custom Options<\/strong>: Support for vendor-specific options<\/li>\n\n\n\n<li><strong>Policy Engines<\/strong>: Pluggable policy decision engines<\/li>\n\n\n\n<li><strong>Validation Rules<\/strong>: Custom validation rule engines<\/li>\n\n\n\n<li><strong>Event Handlers<\/strong>: Custom event processing extensions<\/li>\n<\/ul>\n\n\n\n<p>This architectural documentation provides the foundation for understanding how the DHCP Client Manager components interact and can be extended or modified to meet specific deployment requirements.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Component Overview &nbsp;The DHCP Client Manager architecture is designed around a modular, event-driven approach that [&hellip;]<\/p>\n","protected":false},"author":659,"featured_media":0,"parent":12785,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"class_list":["post-12801","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>DHCP Client Manager Architecture - RDK Documentation Portal | Documentation<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-client-manager-architecture\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DHCP Client Manager Architecture - RDK Documentation Portal | Documentation\" \/>\n<meta property=\"og:description\" content=\"Component Overview &nbsp;The DHCP Client Manager architecture is designed around a modular, event-driven approach that [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-client-manager-architecture\/\" \/>\n<meta property=\"og:site_name\" content=\"RDK Documentation Portal | Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-13T07:27:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wiki.rdkcentral.com\/download\/attachments\/466452778\/DHCP_mgr_block_diagram.png?version=1&amp;modificationDate=1773122265000&amp;api=v2\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-client-manager-architecture\/\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-client-manager-architecture\/\",\"name\":\"DHCP Client Manager Architecture - RDK Documentation Portal | Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-client-manager-architecture\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-client-manager-architecture\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/wiki.rdkcentral.com\/download\/attachments\/466452778\/DHCP_mgr_block_diagram.png?version=1&amp;modificationDate=1773122265000&amp;api=v2\",\"datePublished\":\"2026-03-13T07:25:11+00:00\",\"dateModified\":\"2026-03-13T07:27:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-client-manager-architecture\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-client-manager-architecture\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-client-manager-architecture\/#primaryimage\",\"url\":\"https:\/\/wiki.rdkcentral.com\/download\/attachments\/466452778\/DHCP_mgr_block_diagram.png?version=1&amp;modificationDate=1773122265000&amp;api=v2\",\"contentUrl\":\"https:\/\/wiki.rdkcentral.com\/download\/attachments\/466452778\/DHCP_mgr_block_diagram.png?version=1&amp;modificationDate=1773122265000&amp;api=v2\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-client-manager-architecture\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentation\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"RDK Broadband\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Components\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"DHCP Client Manager\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/\"},{\"@type\":\"ListItem\",\"position\":6,\"name\":\"DHCP Client Manager Architecture\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/\",\"name\":\"RDK Documentation Portal | Documentation\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"DHCP Client Manager Architecture - RDK Documentation Portal | Documentation","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-client-manager-architecture\/","og_locale":"en_US","og_type":"article","og_title":"DHCP Client Manager Architecture - RDK Documentation Portal | Documentation","og_description":"Component Overview &nbsp;The DHCP Client Manager architecture is designed around a modular, event-driven approach that [&hellip;]","og_url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-client-manager-architecture\/","og_site_name":"RDK Documentation Portal | Documentation","article_modified_time":"2026-03-13T07:27:06+00:00","og_image":[{"url":"https:\/\/wiki.rdkcentral.com\/download\/attachments\/466452778\/DHCP_mgr_block_diagram.png?version=1&amp;modificationDate=1773122265000&amp;api=v2","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-client-manager-architecture\/","url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-client-manager-architecture\/","name":"DHCP Client Manager Architecture - RDK Documentation Portal | Documentation","isPartOf":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website"},"primaryImageOfPage":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-client-manager-architecture\/#primaryimage"},"image":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-client-manager-architecture\/#primaryimage"},"thumbnailUrl":"https:\/\/wiki.rdkcentral.com\/download\/attachments\/466452778\/DHCP_mgr_block_diagram.png?version=1&amp;modificationDate=1773122265000&amp;api=v2","datePublished":"2026-03-13T07:25:11+00:00","dateModified":"2026-03-13T07:27:06+00:00","breadcrumb":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-client-manager-architecture\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-client-manager-architecture\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-client-manager-architecture\/#primaryimage","url":"https:\/\/wiki.rdkcentral.com\/download\/attachments\/466452778\/DHCP_mgr_block_diagram.png?version=1&amp;modificationDate=1773122265000&amp;api=v2","contentUrl":"https:\/\/wiki.rdkcentral.com\/download\/attachments\/466452778\/DHCP_mgr_block_diagram.png?version=1&amp;modificationDate=1773122265000&amp;api=v2"},{"@type":"BreadcrumbList","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/dhcp-client-manager-architecture\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":2,"name":"Documentation","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":3,"name":"RDK Broadband","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/"},{"@type":"ListItem","position":4,"name":"Components","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/"},{"@type":"ListItem","position":5,"name":"DHCP Client Manager","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/dhcp-client-manager\/"},{"@type":"ListItem","position":6,"name":"DHCP Client Manager Architecture"}]},{"@type":"WebSite","@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website","url":"https:\/\/developer.rdkcentral.com\/documentation\/","name":"RDK Documentation Portal | Documentation","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/12801","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/users\/659"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/comments?post=12801"}],"version-history":[{"count":1,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/12801\/revisions"}],"predecessor-version":[{"id":12802,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/12801\/revisions\/12802"}],"up":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/12785"}],"wp:attachment":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/media?parent=12801"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}