DHCP 概述

DHCP 概述

一、基本概念

Openstack在创建虚拟机的时候,会通过neutron的DHCP服务为虚拟机动态分配一个ip地址。Neutron提供DHCP功能的组件是运行在网络节点上的neutron-dhcp-agent服务。

  1. dnsmasq进程为网络提供dhcp功能
    在这里插入图片描述
    当创建network,并开启对应subnet的dhcp功能时,neutron会在网络节点上启动一个dnsmasq进程为该network提供DHCP服务。

dnsmasq重要命令参数解释

–interface: dnsmasq用来监听DHCP请求/响应的端口,从而提供DHCP服务。

–dhcp-hostsfile:存放DHCP host信息的文件,dnsmasq会从该文件中获取port和mac地址的对应关系。

–dhcp-leasefile: 租约文件,当我们成功运行dhcpd服务后,就可以分配ip地址给客户端,这些租用信息都可以通过查看租约文件/var/lib/dhcpd/dhcpd.leases来查看每个ip地址的租约记录。
DHCP 概述_第1张图片
每个租约声明都包含已租给客户端的单个ip地址。大括号内的语句定义了租约的期限及租约分配对象。

starts date;租约的开始时间

ends date;租约的结束时间

  1. Network namespace

Neutron通过namespace 为每个network提供独立的DHCP,从而允许租户创建重叠的网络。

DHCP对应的namespace以qdhcp-network_id命名,可以通过ip netns查看(网络节点上运行)

DHCP 概述_第2张图片
通过命令ip netns exec qdhcp-6f854b6c-231d-48c3-876d-0514718bbb58 ip a 可以看到在该网络的namespace中,为tap22c9cf6e-cb设备配置了ip地址。
DHCP 概述_第3张图片
而tap22c9cf6e-cb设备是连接在br-int上的一个port,dnsmasq就是通过监听该端口来为对应网络提供dhcp服务。
DHCP 概述_第4张图片
3. DHCP获取IP过程分析

创建虚拟机vm1时,Neutron会为其分配一个port,并同步mac和ip地址信息到dnsmasq的host文件中,如图:

cat /var/lib/neutron/dhcp/6f854b6c-231d-48c3-876d-0514718bbb58/host
DHCP 概述_第5张图片
同时,nova-compute会生成instance的xml文件,其中网络部分如下:

virsh edit instance-00000001

DHCP 概述_第6张图片
虚拟机第一次启动时:

  • 虚拟机vm1启动时,会发出dhcpdiscover广播报文,该报文会在整个network(vlan)中被收
  • dhcpdiscover广播报文会到达tap2c6747c1-2a,dnsmasq监听在它上面,dnsmasq检查对应网络的host文件,发现有对应选项,于是dnsmasq以dhcpoffer报文将ip(192.168.1.10),netmask(24)等信息发送给虚拟机vm1
  • 虚拟机vm1发送dhcprequest广播消息,确认接受dhcpoffer消息。
  • dnsmasq对虚拟机vm1的dhcprequest报文发送dhcpack消息进行确认,虚拟机vm1收到dhcpack消息之后,开始使用对应ip,整个过程结束。
  1. 具体源码参考https://blog.csdn.net/gyunling/article/details/88829156

二、DHCP原理

  1. DHCP基本概念
    DHCP Dynamic Host Configure Protocol,动态主机配置协议
    从BOOTP协议发展过来
    UDP封装,服务器端口67,客户端端口68
    动态分配TCP/IP信息(IP地址,子网掩码,默认网关,DNS服务器等)
    分配出去的信息识有租约的
    DHCP 概述_第7张图片
  2. DHCP系统组成
    DHCP 概述_第8张图片
    DHCP Client:通过DHCP协议请求获取IP地址等网络参数的设备
    DHCP Server:能提供DHCP功能的服务器或网络设备
    DHCP Relay:负责DHCP服务器和DHCP客户端之间的DHCP报文,协助DHCP服务器向DHCP客户端动态分配网络参数的设备
  3. DHCP报文类型
    DHCP 概述_第9张图片

三、DHCP IPV6讲解

你可能感兴趣的:(网络,运维,服务器)