neutron dhcp 采用dnsmasq服务来实现。和传统的 dhcp 一样, dhcp请求也分为4步

The client sends a discover (“I’m a client at MAC address 08:00:27:b9:88:74, I need an IP address”)
The server sends an offer (“OK 08:00:27:b9:88:74, I’m offering IP address 10.10.0.112”)
The client sends a request (“Server 10.10.0.131, I would like to have IP 10.10.0.112”)
The server sends an acknowledgement (“OK 08:00:27:b9:88:74, IP 10.10.0.112 is yours”)

dnsmasq把log写入系统log,正常的log如下

Aug 24 14:52:37 controller100 dnsmasq[6299]: read /var/lib/neutron/dhcp/b5a8fe96-77c7-443c-8a2b-a862fd016301/addn_hosts - 3 addresses
Aug 24 14:52:37 controller100 dnsmasq-dhcp[6299]: read /var/lib/neutron/dhcp/b5a8fe96-77c7-443c-8a2b-a862fd016301/host
Aug 24 14:52:37 controller100 dnsmasq-dhcp[6299]: read /var/lib/neutron/dhcp/b5a8fe96-77c7-443c-8a2b-a862fd016301/opts
Aug 24 14:52:48 controller100 dnsmasq-dhcp[6299]: DHCPDISCOVER(ns-b8d4df6d-14) fa:16:3e:11:85:5d
Aug 24 14:52:48 controller100 dnsmasq-dhcp[6299]: DHCPOFFER(ns-b8d4df6d-14) 192.168.1.4 fa:16:3e:11:85:5d
Aug 24 14:52:48 controller100 dnsmasq-dhcp[6299]: DHCPREQUEST(ns-b8d4df6d-14) 192.168.1.4 fa:16:3e:11:85:5d
Aug 24 14:52:48 controller100 dnsmasq-dhcp[6299]: DHCPACK(ns-b8d4df6d-14) 192.168.1.4 fa:16:3e:11:85:5d host-192-168-1-4

后面的4步是DHCP请的过程。 第一步

 read /var/lib/neutron/dhcp/b5a8fe96-77c7-443c-8a2b-a862fd016301/addn_hosts - 3 addresses

是查看已经分配的ip(包括这次即将分配的ip)

/var/lib/neutron/dhcp/b5a8fe96-77c7-443c-8a2b-a862fd016301/host

该文件记录了ip 和 mac的映射

/var/lib/neutron/dhcp/b5a8fe96-77c7-443c-8a2b-a862fd016301/opts

该文件记录了dhcp服务器的地址等

我们做一个实验,禁用compute的网卡的混杂模式。这样vm发出的package,在回复的时候就无法到达vm,因为host机器的网卡会扔掉该package。 这时的dhcp log如下:

Aug 24 14:56:34 controller100 dnsmasq[6299]: read /var/lib/neutron/dhcp/b5a8fe96-77c7-443c-8a2b-a862fd016301/addn_hosts - 4 addresses
Aug 24 14:56:34 controller100 dnsmasq-dhcp[6299]: read /var/lib/neutron/dhcp/b5a8fe96-77c7-443c-8a2b-a862fd016301/host
Aug 24 14:56:34 controller100 dnsmasq-dhcp[6299]: read /var/lib/neutron/dhcp/b5a8fe96-77c7-443c-8a2b-a862fd016301/opts
Aug 24 14:56:46 controller100 dnsmasq-dhcp[6299]: DHCPDISCOVER(ns-b8d4df6d-14) fa:16:3e:d9:b7:42
Aug 24 14:56:46 controller100 dnsmasq-dhcp[6299]: DHCPOFFER(ns-b8d4df6d-14) 192.168.1.5 fa:16:3e:d9:b7:42
Aug 24 14:57:46 controller100 dnsmasq-dhcp[6299]: DHCPDISCOVER(ns-b8d4df6d-14) fa:16:3e:d9:b7:42
Aug 24 14:57:46 controller100 dnsmasq-dhcp[6299]: DHCPOFFER(ns-b8d4df6d-14) 192.168.1.5 fa:16:3e:d9:b7:42
Aug 24 14:58:46 controller100 dnsmasq-dhcp[6299]: DHCPDISCOVER(ns-b8d4df6d-14) fa:16:3e:d9:b7:42
Aug 24 14:58:46 controller100 dnsmasq-dhcp[6299]: DHCPOFFER(ns-b8d4df6d-14) 192.168.1.5 fa:16:3e:d9:b7:42

可以看到只有dhcp discover和dhcp offer。但是offer无法继续到达vm,所以request 就发不出来,自然就没有ack

neutron dhcp的更多相关文章

  1. neutron dhcp ha 实验

    4个节点(controller, network,2 compute nodes) 1.0   on the network node 1.1 set –I ‘s/start] on/#start\ ...

  2. Neutron :默认通过 dnsmasq 实现 DHCP 功能----Namespace

    Neutron 提供 DHCP 服务的组件是 DHCP agent. DHCP agent 在网络节点运行上,默认通过 dnsmasq 实现 DHCP 功能.   配置 DHCP agent DHCP ...

  3. 理解 neutron(15):Neutron linux-bridge-agent 创建 linux bridge 的简要过程

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  4. 配置 DHCP 服务 - 每天5分钟玩转 OpenStack(89)

    前面章节我们看到 instance 在启动过程中能够从 Neutron 的 DHCP 服务获得 IP,本节将详细讨论其内部实现机制. Neutron 提供 DHCP 服务的组件是 DHCP agent ...

  5. Neutron 理解 (1): Neutron 所实现的虚拟化网络 [How Netruon Virtualizes Network]

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  6. Neutron 理解 (2): 使用 Open vSwitch + VLAN 组网 [Netruon Open vSwitch + VLAN Virutal Network]

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  7. Neutron 理解 (3): Open vSwitch + GRE/VxLAN 组网 [Netruon Open vSwitch + GRE/VxLAN Virutal Network]

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  8. Neutron 理解 (4): Neutron OVS OpenFlow 流表 和 L2 Population [Netruon OVS OpenFlow tables + L2 Population]

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  9. Neutron 理解(5):Neutron 是如何向 Nova 虚机分配固定IP地址的 (How Neutron Allocates Fixed IPs to Nova Instance)

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

随机推荐

  1. 如何理解JavaScript的单线程

    JS的本质是单线程的.这点区别于JAVA的两个线程并发 但是,平时的JS,确实是同时运行很多任务,这又是怎么回事???? First,js的代码分为两种.同步代码和异步代码. console.log( ...

  2. C++ 继承/派生、访问属性、构造函数

    1.子类继承父类的继承方式:public,private,protected,不写则默认为private: 2.子类会继承父类的全部成员(除了构造函数.析构函数,虽然析构函数有virtual,但是不是 ...

  3. JS性能分析(测试代码运行时间)

    //性能优化 console.time("timer"); for(var i=0;i<10000;i++){} console.timeEnd("timer&qu ...

  4. 高阶函数与接口混入和java匿名类

    高阶函数与接口混入和java匿名类. 高阶函数中的组件(参量)函数相当于面向对象中的混入(接口)类. public abstract class Bird { private String name; ...

  5. python常见问题一(安装报错)

    常见问题一:我在安装python2.7时,提示错误:'An error occurred during the installation of assembly 'Microsoft.VC90.CRT ...

  6. 第一天 初识Python

    Python基础 一 编程语言     什么是编程语言?    上面提及的能够被计算机所识别的表达方式即编程语言,语言是沟通的介质,而编程语言是程序员与计算机沟通的介质.在编程的世界里,计算机更像是人 ...

  7. Java基础(十一)--Serializable和Externalizable接口实现序列化

    序列化在日常开发中经常用到,特别是涉及到网络传输的时候,例如调用第三方接口,通过一个约定好的实体进行传输,这时你必须实现序列 化,这些都是大家都了解的内容,所以文章也会讲一下序列化的高级内容. 序列化 ...

  8. B3. Cocurrent 线程的状态

    [概述] 1). java.lang.Thread 类中定义了一个枚举 State, 定义了线程的六种状态:NEW.RUNNABLE.BLOCKED.WAITING.TIMED_WAITING.TER ...

  9. java “==”和“equals”

    菜呀,只能记笔记了 ==:如果是基本数据类型,比较值,如果是引用类型,比较地址 equals:比较值

  10. sublime text 快捷键记录

    sublime常用快捷键 Ctrl+D 选词 (反复按快捷键,即可继续向下同时选中下一个相同的文本进行同时编辑) Ctrl+G 跳转到相应的行 Ctrl+J 合并行(已选择需要合并的多行时) Ctrl ...