{"id":886,"date":"2014-11-05T15:37:20","date_gmt":"2014-11-05T20:37:20","guid":{"rendered":"https:\/\/www.softwareab.net\/wordpress\/?p=886"},"modified":"2017-09-01T09:16:59","modified_gmt":"2017-09-01T14:16:59","slug":"openstack-debugging-neutron-dhcp","status":"publish","type":"post","link":"https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/","title":{"rendered":"Debugging Neutron DHCP Failures on OpenStack"},"content":{"rendered":"<p>Hi All. Today&#8217;s adventure touches on a common OpenStack Neutron theme: &#8220;I just created a VM. It&#8217;s running. It says it has an IP address. And I can&#8217;t ping it!!&#8221; Read on for tips on debugging Neutron DHCP Failures on OpenStack that we use in our lab.<\/p>\n<p><!--more--><\/p>\n<h3>The Problem with Neutron<\/h3>\n<p>Here is the deal: I created a VM against a standard network and it had an assigned IP as follows:<\/p>\n<pre>\r\n[l.abruce@co1 rc_scripts(lvosksclu100-rc-admin)]$ <strong>nova --os-tenant-name=infrastructure show testnew<\/strong>\r\n+--------------------------------------+----------------------------------------------------------------+\r\n| Property                             | Value                                                          |\r\n+--------------------------------------+----------------------------------------------------------------+\r\n<em>[...output cut...]<\/em>\r\n<strong>| infrastructure-net network           | 10.0.0.10                                                      |<\/strong>\r\n<em>[...output cut...]<\/em>\r\n+--------------------------------------+----------------------------------------------------------------+\r\n<\/pre>\n<p>You see that, right? 10.0.0.10? That&#8217;s expected as I&#8217;m using per-tenant private networking. But on the actual running VM, I had a teensy problem: DHCP was timing out. Even though OpenStack thought my VM had that 10.0.0.10 IP address, my running VM didn&#8217;t actually get it.<\/p>\n<p>Bummer.<\/p>\n<p>So let&#8217;s look at what happens. In my setup (using Neutron GRE) the flow is:<\/p>\n<pre>\r\n**PHYSICAL Nova Compute HOST***\r\nVM -> qbridge host -> tap device -> br-int -> br-tun\r\n\r\n-> <em>[physical switch]<\/em> ->\r\n\r\n**Neutron Controller (running as a VM)**\r\nbr-tun -> br-int -> [DHCP namespace] -> DHCP process (dnsmasq)\r\n<\/pre>\n<p>The problem could be happening at any point in the mix, but I have other VMs that I can start \/ restart just fine. So let&#8217;s look explicitly at the DHCP server.<\/p>\n<h3>Locate the DHCP Namespace<\/h3>\n<p>Notice above where I used <code>[DHCP namespace]<\/code> as an identifier. To permit network isolation, Neutron creates a separate <a href=\"http:\/\/blog.scottlowe.org\/2013\/09\/04\/introducing-linux-network-namespaces\/\">network namespace<\/a> so that each per-tenant network can have its own router, its own DHCP server, and so on. To locate this namespace, first find out your network ID; here&#8217;s a command for you:<\/p>\n<pre>\r\n[l.abruce@co1 rc_scripts(lvosksclu100-rc-admin)]$ <strong>nova network-list | grep \" infrastructure-net \"<\/strong>\r\n| 88513920-091b-4bee-a47c-5636593c69f5 | infrastructure-net     | None |\r\n<\/pre>\n<p>So my network ID is <code>88513920-091b-4bee-a47c-5636593c69f5<\/code>. Armed with that information, let&#8217;s go to the Neutron Controller node and look for the DHCP namespace:<\/p>\n<pre>\r\n[root@lvosneutr100 ~]# <strong>ip netns | grep 88513920-091b-4bee-a47c-5636593c69f5<\/strong>\r\nqdhcp-88513920-091b-4bee-a47c-5636593c69f5\r\n<\/pre>\n<p>Woohoo, we found it. Now let&#8217;s look at the network interfaces associated with that namespace:<\/p>\n<pre>\r\n[root@lvosneutr100 ~]# <strong>ip netns exec qdhcp-88513920-091b-4bee-a47c-5636593c69f5 ip a<\/strong>\r\n<em>36: tap315b3aa8-c3: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN \r\n    link\/ether fa:16:3e:86:d8:5a brd ff:ff:ff:ff:ff:ff\r\n    inet 10.0.0.3\/24 brd 10.0.0.255 scope global tap315b3aa8-c3\r\n    inet6 fe80::f816:3eff:fe86:d85a\/64 scope link \r\n       valid_lft forever preferred_lft forever<\/em>\r\n<\/pre>\n<p>We&#8217;ve got our DHCP namespace and we know the network interface, so we&#8217;re closing in on the problem.<\/p>\n<h3>Watch DHCP Traffic<\/h3>\n<p>Now, we don&#8217;t just want to watch *all* DHCP traffic, only the traffic specific to our failing tenant network (with the failing VM on it). Let&#8217;s go over what we know so far:<\/p>\n<ul>\n<li>Network ID: <code>88513920-091b-4bee-a47c-5636593c69f5<\/code><\/li>\n<li>DHCP Namespace: <code>qdhcp-88513920-091b-4bee-a47c-5636593c69f5<\/code><\/li>\n<li>Associated Network Interface: <code>tap315b3aa8-c3<\/code><\/li>\n<\/ul>\n<p>Now let&#8217;s take a look at the traffic:<\/p>\n<pre>\r\n[root@lvosneutr100 ~]# <strong>ip netns exec qdhcp-88513920-091b-4bee-a47c-5636593c69f5 tcpdump -i tap315b3aa8-c3 -nnvvvNXs 512<\/strong>\r\n<em>tcpdump: listening on tap315b3aa8-c3, link-type EN10MB (Ethernet), capture size 512 bytes<\/em>\r\n<\/pre>\n<p>I&#8217;m not going into the murky depths of the <code>ip netns exec<\/code> command mode, nor into the help pages of <code>tcpdump<\/code>. Suffice to say we&#8217;re catching all traffic going to the DHCP server. Let&#8217;s take a look at some <em>correct<\/em> interactions from a working VM:<\/p>\n<pre>\r\n14:36:07.056008 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)\r\n    0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP\/DHCP, Request from fa:16:3e:e3:7f:4c, length 300, xid 0x66d35574, Flags [none] (0x0000)\r\n\t  Client-Ethernet-Address fa:16:3e:e3:7f:4c\r\n\t  Vendor-rfc1048 Extensions\r\n\t    Magic Cookie 0x63825363\r\n\t    DHCP-Message Option 53, length 1: Request\r\n\t    Requested-IP Option 50, length 4: 10.0.0.7\r\n\t    Parameter-Request Option 55, length 13: \r\n\t      Subnet-Mask, BR, Time-Zone, Classless-Static-Route\r\n\t      Domain-Name, Domain-Name-Server, Hostname, YD\r\n\t      YS, NTP, MTU, Option 119\r\n\t      Default-Gateway\r\n\t    END Option 255, length 0\r\n\t    PAD Option 0, length 0, occurs 35\r\n\t0x0000:  4510 0148 0000 0000 8011 3996 0000 0000  E..H......9.....\r\n<em>[...output cut...]<\/em>\r\n\t0x0140:  0000 0000 0000 0000                      ........\r\n14:36:07.062052 IP (tos 0x0, ttl 64, id 11420, offset 0, flags [none], proto UDP (17), length 351)\r\n    10.0.0.3.67 > 10.0.0.7.68: [bad udp cksum 2a24!] BOOTP\/DHCP, Reply, length 323, xid 0x66d35574, Flags [none] (0x0000)\r\n\t  Your-IP 10.0.0.7\r\n\t  Server-IP 10.0.0.3\r\n\t  Client-Ethernet-Address fa:16:3e:e3:7f:4c\r\n\t  Vendor-rfc1048 Extensions\r\n\t    Magic Cookie 0x63825363\r\n\t    DHCP-Message Option 53, length 1: ACK\r\n\t    Server-ID Option 54, length 4: 10.0.0.3\r\n\t    Lease-Time Option 51, length 4: 86400\r\n\t    RN Option 58, length 4: 43200\r\n\t    RB Option 59, length 4: 75600\r\n\t    Subnet-Mask Option 1, length 4: 255.255.255.0\r\n\t    BR Option 28, length 4: 10.0.0.255\r\n\t    Domain-Name Option 15, length 14: \"openstacklocal\"\r\n\t    Hostname Option 12, length 13: \"host-10-0-0-7\"\r\n\t    Default-Gateway Option 3, length 4: 10.0.0.1\r\n\t    Domain-Name-Server Option 6, length 4: 192.168.1.2\r\n\t    END Option 255, length 0\r\n\t0x0000:  4500 015f 2c9c 0000 4011 38e9 0a00 0003  E.._,...@.8.....\r\n<em>[...output cut...]<\/em>\r\n\t0x0150:  2d37 0304 0a00 0001 0604 c0a8 0102 ff    -7.............\r\n14:36:07.084041 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.0.0.7 (ff:ff:ff:ff:ff:ff) tell 0.0.0.0, length 28\r\n\t0x0000:  0001 0800 0604 0001 fa16 3ee3 7f4c 0000  ..........>..L..\r\n\t0x0010:  0000 ffff ffff ffff 0a00 0007            ............\r\n<\/pre>\n<p>The above shows the DHCP request coming from the VM, and the DHCP server responding with IP 10.0.0.7 (and a bunch of other information). So let&#8217;s take a look at the failing node:<\/p>\n<pre>\r\n14:36:32.229699 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)\r\n    0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP\/DHCP, Request from fa:16:3e:3e:e9:00, length 300, xid 0x98693309, Flags [none] (0x0000)\r\n\t  Client-Ethernet-Address fa:16:3e:3e:e9:00\r\n\t  Vendor-rfc1048 Extensions\r\n\t    Magic Cookie 0x63825363\r\n\t    DHCP-Message Option 53, length 1: Discover\r\n\t    Parameter-Request Option 55, length 13: \r\n\t      Subnet-Mask, BR, Time-Zone, Classless-Static-Route\r\n\t      Domain-Name, Domain-Name-Server, Hostname, YD\r\n\t      YS, NTP, MTU, Option 119\r\n\t      Default-Gateway\r\n\t    END Option 255, length 0\r\n\t    PAD Option 0, length 0, occurs 41\r\n\t0x0000:  4510 0148 0000 0000 8011 3996 0000 0000  E..H......9.....\r\n<em>[...output cut...]<\/em>\r\n\t0x0140:  0000 0000 0000 0000                      ........\r\n<\/pre>\n<p>Hmm, there&#8217;s no response. Why could that be? Let&#8217;s keep going!<\/p>\n<h3>Tear into the DHCP Server<\/h3>\n<p>The real question now is: what process is running that DHCP server? Because the process is tied to the namespace interface <code>tap315b3aa8-c3<\/code>, let&#8217;s try looking for that in the process list:<\/p>\n<pre>\r\n[root@lvosneutr100 ~]# <strong>ps -efa | grep tap315b3aa8-c3<\/strong>\r\n<em>nobody    4689     1  0 Oct23 ?        00:00:03 dnsmasq --no-hosts --no-resolv --strict-order --bind-interfaces --interface=tap315b3aa8-c3 --except-interface=lo --pid-file=\/var\/lib\/neutron\/dhcp\/88513920-091b-4bee-a47c-5636593c69f5\/pid --dhcp-hostsfile=\/var\/lib\/neutron\/dhcp\/88513920-091b-4bee-a47c-5636593c69f5\/host --addn-hosts=\/var\/lib\/neutron\/dhcp\/88513920-091b-4bee-a47c-5636593c69f5\/addn_hosts --dhcp-optsfile=\/var\/lib\/neutron\/dhcp\/88513920-091b-4bee-a47c-5636593c69f5\/opts --leasefile-ro --dhcp-range=tag0,10.0.0.0,static,86400s --dhcp-lease-max=256 --conf-file= --domain=openstacklocal<\/em>\r\n<\/pre>\n<p>We have our answer: <code>dnsmasq<\/code> is the DHCP server. While I won&#8217;t cover the gory details of <code>dnsmasq<\/code> here, let&#8217;s take a look at the arguments passed into that program. Specifically, let&#8217;s look at the hosts defined to the server:<\/p>\n<pre>\r\n[root@lvosneutr100 ~]# <strong>cat \/var\/lib\/neutron\/dhcp\/88513920-091b-4bee-a47c-5636593c69f5\/host<\/strong>\r\n<em>fa:16:3e:c6:d4:c9,host-10-0-0-2.openstacklocal,10.0.0.2\r\nfa:16:3e:86:d8:5a,host-10-0-0-3.openstacklocal,10.0.0.3\r\nfa:16:3e:50:de:2a,host-10-0-0-5.openstacklocal,10.0.0.5\r\nfa:16:3e:91:d3:6e,host-10-0-0-1.openstacklocal,10.0.0.1\r\nfa:16:3e:e3:7f:4c,host-10-0-0-7.openstacklocal,10.0.0.7\r\nfa:16:3e:0b:21:d1,host-10-0-0-9.openstacklocal,10.0.0.9\r\nfa:16:3e:1f:42:15,host-10-0-0-6.openstacklocal,10.0.0.6\r\nfa:16:3e:c6:e1:48,host-10-0-0-4.openstacklocal,10.0.0.4<\/em>\r\n<\/pre>\n<p>And with that&#8230;believe it or not&#8230;we just found Our Answer. Which deserves another section \ud83d\ude42<\/p>\n<h3>The Missing Link<\/h3>\n<p>If you look at the output above, you will see that every tenant-private IP address is associated with a MAC address. The way that Neutron configures <code>dnsmasq<\/code>, if there isn&#8217;t a corresponding entry in the <code>hosts<\/code> file, then <em>no answer will be returned<\/em> to queries from that MAC.<\/p>\n<p>The MAC address of our failing VM is available from the <code>tcpdump<\/code> output: <code>fa:16:3e:3e:e9:00<\/code>. Do you see that MAC anywhere in the <code>hosts<\/code> file? I don&#8217;t!<\/p>\n<p>So the problem is that Neutron is not creating the entry for us in the <code>hosts<\/code> file. Let&#8217;s see if we can give Neutron a Kick by stopping the DHCP service:<\/p>\n<pre>\r\n[root@lvosneutr100 ~]# <strong>service neutron-dhcp-agent stop<\/strong>\r\nStopping neutron-dhcp-agent:                               [  OK  ]\r\n<\/pre>\n<p>You might reasonably expect Neutron to stop any running DHCP server processes when the Neutron DHCP Agent is stopped. But, you&#8217;d be wrong: a <a href=\"https:\/\/bugs.launchpad.net\/neutron\/+bug\/1257524\">known OpenStack bug<\/a> highlights this problem that the <code>dnsmasq<\/code> processes aren&#8217;t killed when the Neutron DHCP Agent is stopped. That could be a feature rather than a bug, but it&#8217;s a problem for us because the Neutron DHCP Agent will only restart <code>dnsmasq<\/code> for a tenant network&#8230;if it isn&#8217;t already running. So let&#8217;s kill the <code>dnsmasq<\/code> process:<\/p>\n<pre>\r\n[root@lvosneutr100 ~]# <strong>kill 4689<\/strong>\r\n[root@lvosneutr100 ~]# <strong>ps -efa | grep tap315b3aa8-c3<\/strong>\r\n<em>root     20013 13156  0 14:48 pts\/0    00:00:00 grep tap315b3aa8-c3<\/em>\r\n<\/pre>\n<p>Good, the process is gone. Now let&#8217;s restart the Neutron DHCP Agent and check that <code>dnsmasq<\/code> is restarted on our DHCP interface:<\/p>\n<pre>\r\n[root@lvosneutr100 ~]# <strong>service neutron-dhcp-agent start<\/strong>\r\n<em>Starting neutron-dhcp-agent:                               [  OK  ]<\/em>\r\n\r\n[root@lvosneutr100 ~]# <strong>ps -efa | grep tap315b3aa8-c3<\/strong>\r\n<em>nobody   20212     1  0 14:48 ?        00:00:00 dnsmasq --no-hosts --no-resolv --strict-order --bind-interfaces --interface=tap315b3aa8-c3 --except-interface=lo --pid-file=\/var\/lib\/neutron\/dhcp\/88513920-091b-4bee-a47c-5636593c69f5\/pid --dhcp-hostsfile=\/var\/lib\/neutron\/dhcp\/88513920-091b-4bee-a47c-5636593c69f5\/host --addn-hosts=\/var\/lib\/neutron\/dhcp\/88513920-091b-4bee-a47c-5636593c69f5\/addn_hosts --dhcp-optsfile=\/var\/lib\/neutron\/dhcp\/88513920-091b-4bee-a47c-5636593c69f5\/opts --leasefile-ro --dhcp-range=tag0,10.0.0.0,static,86400s --dhcp-lease-max=256 --conf-file= --domain=openstacklocal<\/em>\r\n<\/pre>\n<p>We see that our <code>dnsmasq<\/code> DHCP server process came back to life. Let&#8217;s go check out the <code>hosts<\/code> file that was passed into it to see if it has the MAC address of our &#8220;broken&#8221; VM:<\/p>\n<pre>\r\n[root@lvosneutr100 ~]# <strong>cat \/var\/lib\/neutron\/dhcp\/88513920-091b-4bee-a47c-5636593c69f5\/host<\/strong>\r\n<em>fa:16:3e:c6:d4:c9,host-10-0-0-2.openstacklocal,10.0.0.2\r\nfa:16:3e:86:d8:5a,host-10-0-0-3.openstacklocal,10.0.0.3\r\nfa:16:3e:50:de:2a,host-10-0-0-5.openstacklocal,10.0.0.5\r\nfa:16:3e:91:d3:6e,host-10-0-0-1.openstacklocal,10.0.0.1\r\nfa:16:3e:e3:7f:4c,host-10-0-0-7.openstacklocal,10.0.0.7\r\nfa:16:3e:0b:21:d1,host-10-0-0-9.openstacklocal,10.0.0.9\r\n<strong>fa:16:3e:3e:e9:00,host-10-0-0-10.openstacklocal,10.0.0.10<\/strong>\r\nfa:16:3e:1f:42:15,host-10-0-0-6.openstacklocal,10.0.0.6\r\nfa:16:3e:c6:e1:48,host-10-0-0-4.openstacklocal,10.0.0.4<\/em>\r\n<\/pre>\n<p>Yup, the MAC address is in there. All looks good so far&#8230;let&#8217;s restart networking on our broken VM and watch the traffic:<\/p>\n<pre>\r\n[root@lvosneutr100 ~]# <strong>ip netns exec qdhcp-88513920-091b-4bee-a47c-5636593c69f5 tcpdump -i tap315b3aa8-c3 -nnvvvNXs 512<\/strong>\r\n<em>tcpdump: listening on tap315b3aa8-c3, link-type EN10MB (Ethernet), capture size 512 bytes\r\n14:51:22.269526 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)\r\n    0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP\/DHCP, Request from fa:16:3e:3e:e9:00, length 300, xid 0x1d798f61, Flags [none] (0x0000)\r\n\t  Client-Ethernet-Address fa:16:3e:3e:e9:00\r\n\t  Vendor-rfc1048 Extensions\r\n\t    Magic Cookie 0x63825363\r\n\t    DHCP-Message Option 53, length 1: Discover\r\n\t    Parameter-Request Option 55, length 13: \r\n\t      Subnet-Mask, BR, Time-Zone, Classless-Static-Route\r\n\t      Domain-Name, Domain-Name-Server, Hostname, YD\r\n\t      YS, NTP, MTU, Option 119\r\n\t      Default-Gateway\r\n\t    END Option 255, length 0\r\n\t    PAD Option 0, length 0, occurs 41\r\n\t0x0000:  4510 0148 0000 0000 8011 3996 0000 0000  E..H......9.....\r\n[...output cut...]\r\n\t0x0140:  0000 0000 0000 0000                      ........\r\n14:51:22.275186 IP (tos 0x0, ttl 64, id 2824, offset 0, flags [none], proto UDP (17), length 352)\r\n    10.0.0.3.67 > 10.0.0.10.68: [bad udp cksum 62bb!] BOOTP\/DHCP, Reply, length 324, xid 0x1d798f61, Flags [none] (0x0000)\r\n\t  Your-IP 10.0.0.10\r\n\t  Server-IP 10.0.0.3\r\n\t  Client-Ethernet-Address fa:16:3e:3e:e9:00\r\n\t  Vendor-rfc1048 Extensions\r\n\t    Magic Cookie 0x63825363\r\n\t    DHCP-Message Option 53, length 1: Offer\r\n\t    Server-ID Option 54, length 4: 10.0.0.3\r\n\t    Lease-Time Option 51, length 4: 86400\r\n\t    RN Option 58, length 4: 43200\r\n\t    RB Option 59, length 4: 75600\r\n\t    Subnet-Mask Option 1, length 4: 255.255.255.0\r\n\t    BR Option 28, length 4: 10.0.0.255\r\n\t    Domain-Name Option 15, length 14: \"openstacklocal\"\r\n\t    Hostname Option 12, length 14: \"host-10-0-0-10\"\r\n\t    Default-Gateway Option 3, length 4: 10.0.0.1\r\n\t    Domain-Name-Server Option 6, length 4: 192.168.1.2\r\n\t    END Option 255, length 0\r\n\t0x0000:  4500 0160 0b08 0000 4011 5a79 0a00 0003  E..`....@.Zy....\r\n[...output cut...]\r\n\t0x0150:  2d31 3003 040a 0000 0106 04c0 a801 02ff  -10.............<\/em>\r\n<\/pre>\n<p>And back on our client VM&#8230;we now have an IP address.<\/p>\n<p>Moral? Be prepared to give Neutron a Big Kick sometimes just to keep it in line.<\/p>\n<p>Happy Computing!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hi All. Today&#8217;s adventure touches on a common OpenStack Neutron theme: &#8220;I just created a VM. It&#8217;s running. It says it has an IP address. And I can&#8217;t ping it!!&#8221; Read on for tips on debugging Neutron DHCP Failures on &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"more-link\" href=\"https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/\"> <span class=\"screen-reader-text\">Debugging Neutron DHCP Failures on OpenStack<\/span> Read More &raquo;<\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[66,6,69,1],"tags":[67,19,86,71],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Debugging Neutron DHCP Failures on OpenStack - softwareab<\/title>\n<meta name=\"description\" content=\"Neutron DHCP failures can be maddening! Read on for tips and techniques on how to debug these failures on OpenStack as we do in our lab environment.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Debugging Neutron DHCP Failures on OpenStack - softwareab\" \/>\n<meta property=\"og:description\" content=\"Neutron DHCP failures can be maddening! Read on for tips and techniques on how to debug these failures on OpenStack as we do in our lab environment.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/\" \/>\n<meta property=\"og:site_name\" content=\"softwareab\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/cloudraticsolutions\/\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/cloudraticsolutions\/\" \/>\n<meta property=\"article:published_time\" content=\"2014-11-05T20:37:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-09-01T14:16:59+00:00\" \/>\n<meta name=\"author\" content=\"Andrew Bruce\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@realcloudratics\" \/>\n<meta name=\"twitter:site\" content=\"@realcloudratics\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andrew Bruce\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/\"},\"author\":{\"name\":\"Andrew Bruce\",\"@id\":\"https:\/\/www.softwareab.net\/wordpress\/#\/schema\/person\/1337443eaeb75104e0410b508e67f600\"},\"headline\":\"Debugging Neutron DHCP Failures on OpenStack\",\"datePublished\":\"2014-11-05T20:37:20+00:00\",\"dateModified\":\"2017-09-01T14:16:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/\"},\"wordCount\":790,\"commentCount\":8,\"publisher\":{\"@id\":\"https:\/\/www.softwareab.net\/wordpress\/#\/schema\/person\/1337443eaeb75104e0410b508e67f600\"},\"keywords\":[\"cloud\",\"network\",\"OpenStack\",\"virtualization\"],\"articleSection\":[\"Cloud\",\"Network\",\"OpenStack\",\"Teknocratica\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/\",\"url\":\"https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/\",\"name\":\"Debugging Neutron DHCP Failures on OpenStack - softwareab\",\"isPartOf\":{\"@id\":\"https:\/\/www.softwareab.net\/wordpress\/#website\"},\"datePublished\":\"2014-11-05T20:37:20+00:00\",\"dateModified\":\"2017-09-01T14:16:59+00:00\",\"description\":\"Neutron DHCP failures can be maddening! Read on for tips and techniques on how to debug these failures on OpenStack as we do in our lab environment.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.softwareab.net\/wordpress\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"cloud\",\"item\":\"https:\/\/www.softwareab.net\/wordpress\/tag\/cloud-2\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Debugging Neutron DHCP Failures on OpenStack\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.softwareab.net\/wordpress\/#website\",\"url\":\"https:\/\/www.softwareab.net\/wordpress\/\",\"name\":\"softwareab\",\"description\":\"Technocratica, Technopolitik, Technophobia\",\"publisher\":{\"@id\":\"https:\/\/www.softwareab.net\/wordpress\/#\/schema\/person\/1337443eaeb75104e0410b508e67f600\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.softwareab.net\/wordpress\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.softwareab.net\/wordpress\/#\/schema\/person\/1337443eaeb75104e0410b508e67f600\",\"name\":\"Andrew Bruce\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.softwareab.net\/wordpress\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.softwareab.net\/wordpress\/wp-content\/uploads\/2024\/03\/andy-cartoon.jpg\",\"contentUrl\":\"https:\/\/www.softwareab.net\/wordpress\/wp-content\/uploads\/2024\/03\/andy-cartoon.jpg\",\"width\":400,\"height\":330,\"caption\":\"Andrew Bruce\"},\"logo\":{\"@id\":\"https:\/\/www.softwareab.net\/wordpress\/#\/schema\/person\/image\/\"},\"description\":\"Team-oriented systems mentor with deep knowledge of numerous software methodologies, technologies, languages, and operating systems. Excited about turning emerging technology into working production-ready systems. Focused on moving software teams to a higher level of world-class application development. Specialties:Software analysis and development...Product management through the entire lifecycle...Discrete product integration specialist!\",\"sameAs\":[\"http:\/\/cloudraticsolutions.net\/\",\"https:\/\/www.facebook.com\/cloudraticsolutions\/\",\"https:\/\/twitter.com\/realcloudratics\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Debugging Neutron DHCP Failures on OpenStack - softwareab","description":"Neutron DHCP failures can be maddening! Read on for tips and techniques on how to debug these failures on OpenStack as we do in our lab environment.","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:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/","og_locale":"en_US","og_type":"article","og_title":"Debugging Neutron DHCP Failures on OpenStack - softwareab","og_description":"Neutron DHCP failures can be maddening! Read on for tips and techniques on how to debug these failures on OpenStack as we do in our lab environment.","og_url":"https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/","og_site_name":"softwareab","article_publisher":"https:\/\/www.facebook.com\/cloudraticsolutions\/","article_author":"https:\/\/www.facebook.com\/cloudraticsolutions\/","article_published_time":"2014-11-05T20:37:20+00:00","article_modified_time":"2017-09-01T14:16:59+00:00","author":"Andrew Bruce","twitter_card":"summary_large_image","twitter_creator":"@realcloudratics","twitter_site":"@realcloudratics","twitter_misc":{"Written by":"Andrew Bruce","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/#article","isPartOf":{"@id":"https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/"},"author":{"name":"Andrew Bruce","@id":"https:\/\/www.softwareab.net\/wordpress\/#\/schema\/person\/1337443eaeb75104e0410b508e67f600"},"headline":"Debugging Neutron DHCP Failures on OpenStack","datePublished":"2014-11-05T20:37:20+00:00","dateModified":"2017-09-01T14:16:59+00:00","mainEntityOfPage":{"@id":"https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/"},"wordCount":790,"commentCount":8,"publisher":{"@id":"https:\/\/www.softwareab.net\/wordpress\/#\/schema\/person\/1337443eaeb75104e0410b508e67f600"},"keywords":["cloud","network","OpenStack","virtualization"],"articleSection":["Cloud","Network","OpenStack","Teknocratica"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/","url":"https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/","name":"Debugging Neutron DHCP Failures on OpenStack - softwareab","isPartOf":{"@id":"https:\/\/www.softwareab.net\/wordpress\/#website"},"datePublished":"2014-11-05T20:37:20+00:00","dateModified":"2017-09-01T14:16:59+00:00","description":"Neutron DHCP failures can be maddening! Read on for tips and techniques on how to debug these failures on OpenStack as we do in our lab environment.","breadcrumb":{"@id":"https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.softwareab.net\/wordpress\/openstack-debugging-neutron-dhcp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.softwareab.net\/wordpress\/"},{"@type":"ListItem","position":2,"name":"cloud","item":"https:\/\/www.softwareab.net\/wordpress\/tag\/cloud-2\/"},{"@type":"ListItem","position":3,"name":"Debugging Neutron DHCP Failures on OpenStack"}]},{"@type":"WebSite","@id":"https:\/\/www.softwareab.net\/wordpress\/#website","url":"https:\/\/www.softwareab.net\/wordpress\/","name":"softwareab","description":"Technocratica, Technopolitik, Technophobia","publisher":{"@id":"https:\/\/www.softwareab.net\/wordpress\/#\/schema\/person\/1337443eaeb75104e0410b508e67f600"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.softwareab.net\/wordpress\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.softwareab.net\/wordpress\/#\/schema\/person\/1337443eaeb75104e0410b508e67f600","name":"Andrew Bruce","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.softwareab.net\/wordpress\/#\/schema\/person\/image\/","url":"https:\/\/www.softwareab.net\/wordpress\/wp-content\/uploads\/2024\/03\/andy-cartoon.jpg","contentUrl":"https:\/\/www.softwareab.net\/wordpress\/wp-content\/uploads\/2024\/03\/andy-cartoon.jpg","width":400,"height":330,"caption":"Andrew Bruce"},"logo":{"@id":"https:\/\/www.softwareab.net\/wordpress\/#\/schema\/person\/image\/"},"description":"Team-oriented systems mentor with deep knowledge of numerous software methodologies, technologies, languages, and operating systems. Excited about turning emerging technology into working production-ready systems. Focused on moving software teams to a higher level of world-class application development. Specialties:Software analysis and development...Product management through the entire lifecycle...Discrete product integration specialist!","sameAs":["http:\/\/cloudraticsolutions.net\/","https:\/\/www.facebook.com\/cloudraticsolutions\/","https:\/\/twitter.com\/realcloudratics"]}]}},"_links":{"self":[{"href":"https:\/\/www.softwareab.net\/wordpress\/wp-json\/wp\/v2\/posts\/886"}],"collection":[{"href":"https:\/\/www.softwareab.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.softwareab.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.softwareab.net\/wordpress\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.softwareab.net\/wordpress\/wp-json\/wp\/v2\/comments?post=886"}],"version-history":[{"count":9,"href":"https:\/\/www.softwareab.net\/wordpress\/wp-json\/wp\/v2\/posts\/886\/revisions"}],"predecessor-version":[{"id":1064,"href":"https:\/\/www.softwareab.net\/wordpress\/wp-json\/wp\/v2\/posts\/886\/revisions\/1064"}],"wp:attachment":[{"href":"https:\/\/www.softwareab.net\/wordpress\/wp-json\/wp\/v2\/media?parent=886"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.softwareab.net\/wordpress\/wp-json\/wp\/v2\/categories?post=886"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.softwareab.net\/wordpress\/wp-json\/wp\/v2\/tags?post=886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}