{"id":556,"date":"2018-08-08T15:14:19","date_gmt":"2018-08-08T14:14:19","guid":{"rendered":"http:\/\/www.flat-planet.net\/?p=556"},"modified":"2018-08-08T15:14:19","modified_gmt":"2018-08-08T14:14:19","slug":"dhcp-linux-bridges-and-vmware","status":"publish","type":"post","link":"https:\/\/flat-planet.net\/?p=556","title":{"rendered":"DHCP, Linux bridges and VMware"},"content":{"rendered":"<p>I do a lot of testing with <a href=\"http:\/\/www.eve-ng.net\/\">eve-ng<\/a> which is in turn running on a VM within ESXi. Naturally I have a Distributed V-Switch, with multiple uplinks for redundancy.<\/p>\n<p>EVE-NG version: 2.0.3-92<br \/>\nPlatform: ESXi 6.5<br \/>\nSecurity config on hypervisor:<\/p>\n<ul>\n<li>Promiscuous mode Accept<\/li>\n<li>MAC address changes Accept<\/li>\n<li>Forged transmits Accept<\/li>\n<\/ul>\n<p>Unfortunately this seems to break DHCP for reasons I can&#8217;t quite fathom. If we look at the topology we are working with:<\/p>\n<p><a href=\"http:\/\/www.flat-planet.net\/wp-content\/uploads\/2018\/08\/EVE-NG-Setup.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-557 aligncenter\" src=\"http:\/\/www.flat-planet.net\/wp-content\/uploads\/2018\/08\/EVE-NG-Setup-282x300.png\" alt=\"\" width=\"282\" height=\"300\" srcset=\"https:\/\/flat-planet.net\/wp-content\/uploads\/2018\/08\/EVE-NG-Setup-282x300.png 282w, https:\/\/flat-planet.net\/wp-content\/uploads\/2018\/08\/EVE-NG-Setup.png 490w\" sizes=\"auto, (max-width: 282px) 100vw, 282px\" \/><\/a>The DHCP server is hosted on the same hypervisor\/dvSwitch, but for some crazy reason, the DHCP Response never makes it across the bridge within the EVE-NG VM.<\/p>\n<pre><code>brctl show\r\nbridge name     bridge id               STP enabled     interfaces\r\npnet2           8000.000c2976c6ca       no              eth2\r\n                                                        vunl0_1_0\r\n                                                        vunl0_2_1\r\n                                                        vunl0_3_0\r\n                                                        vunl0_4_0<\/code><\/pre>\n<pre><code>tcpdump -i vunl0_2_1\r\ntcpdump: verbose output suppressed, use -v or -vv for full protocol decode\r\nlistening on vunl0_2_1, link-type EN10MB (Ethernet), capture size 262144 bytes\r\n11:05:32.267298 IP 0.0.0.0.bootpc &gt; 255.255.255.255.bootps: BOOTP\/DHCP, Request from 50:00:00:cb:38:c2 (oui Unknown), length 300\r\n11:05:32.267602 IP 0.0.0.0.bootpc &gt; 255.255.255.255.bootps: BOOTP\/DHCP, Request from 50:00:00:cb:38:c2 (oui Unknown), length 300\r\n11:05:34.265517 IP 0.0.0.0.bootpc &gt; 255.255.255.255.bootps: BOOTP\/DHCP, Request from 50:00:00:01:00:00 (oui Unknown), length 300\r\n11:05:34.265784 IP 0.0.0.0.bootpc &gt; 255.255.255.255.bootps: BOOTP\/DHCP, Request from 50:00:00:01:00:00 (oui Unknown), length 300<\/code><\/pre>\n<pre><code>tcpdump -i pnet2 port bootps -n\r\ntcpdump: verbose output suppressed, use -v or -vv for full protocol decode\r\nlistening on pnet2, link-type EN10MB (Ethernet), capture size 262144 bytes\r\n11:07:32.903789 IP 0.0.0.0.68 &gt; 255.255.255.255.67: BOOTP\/DHCP, Request from 50:00:00:cb:38:c2, length 300\r\n11:07:32.904151 IP 0.0.0.0.68 &gt; 255.255.255.255.67: BOOTP\/DHCP, Request from 50:00:00:cb:38:c2, length 300\r\n11:07:32.944639 IP 172.168.1.3.67 &gt; 172.168.1.243.68: BOOTP\/DHCP, Reply, length 308\r\n11:07:32.944679 IP 172.168.1.3.67 &gt; 172.168.1.243.68: BOOTP\/DHCP, Reply, length 308\r\n11:07:32.944695 IP 172.168.1.3.67 &gt; 172.168.1.243.68: BOOTP\/DHCP, Reply, length 308\r\n11:07:32.944817 IP 172.168.1.3.67 &gt; 172.168.1.243.68: BOOTP\/DHCP, Reply, length 308\r\n11:07:34.499852 IP 0.0.0.0.68 &gt; 255.255.255.255.67: BOOTP\/DHCP, Request from 50:00:00:01:00:00, length 300\r\n11:07:34.500099 IP 0.0.0.0.68 &gt; 255.255.255.255.67: BOOTP\/DHCP, Request from 50:00:00:01:00:00, length 300\r\n11:07:34.500326 IP 172.168.1.3.67 &gt; 172.168.1.240.68: BOOTP\/DHCP, Reply, length 308\r\n11:07:34.500409 IP 172.168.1.3.67 &gt; 172.168.1.240.68: BOOTP\/DHCP, Reply, length 308\r\n11:07:34.500434 IP 172.168.1.3.67 &gt; 172.168.1.240.68: BOOTP\/DHCP, Reply, length 308\r\n11:07:34.500508 IP 172.168.1.3.67 &gt; 172.168.1.240.68: BOOTP\/DHCP, Reply, length 308<\/code><\/pre>\n<p>Seems this issue has been seen before <a href=\"https:\/\/github.com\/InfraSIM\/infrasim-compute\/wiki\/DHCP-failure-on-NIC-teaming-situation\">here<\/a>.<\/p>\n<p>Note that eth0 doing a DHCP request works fine, but the request coming via eth2 dies on the eth2 side of the bridge.<\/p>\n<p>A workaround is to disable the redundant uplinks, which allows the DHCP Response to work as expected.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I do a lot of testing with eve-ng which is in turn running on a VM within ESXi. Naturally I have a Distributed V-Switch, with multiple uplinks for redundancy. EVE-NG version: 2.0.3-92 Platform: ESXi 6.5 Security config on hypervisor: Promiscuous mode Accept MAC address changes Accept Forged transmits Accept Unfortunately this seems to break DHCP [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,95],"tags":[232,302,348,349,350,351,24,40,191],"series":[],"class_list":["post-556","post","type-post","status-publish","format-standard","hentry","category-vmware","category-data-networking","tag-dhcp","tag-bridging","tag-eve-ng","tag-nic-teaming","tag-virtual-networks","tag-dvswitch","tag-vmware-2","tag-networking","tag-troubleshooting"],"_links":{"self":[{"href":"https:\/\/flat-planet.net\/index.php?rest_route=\/wp\/v2\/posts\/556","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flat-planet.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/flat-planet.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/flat-planet.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flat-planet.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=556"}],"version-history":[{"count":1,"href":"https:\/\/flat-planet.net\/index.php?rest_route=\/wp\/v2\/posts\/556\/revisions"}],"predecessor-version":[{"id":558,"href":"https:\/\/flat-planet.net\/index.php?rest_route=\/wp\/v2\/posts\/556\/revisions\/558"}],"wp:attachment":[{"href":"https:\/\/flat-planet.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=556"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/flat-planet.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=556"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/flat-planet.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=556"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/flat-planet.net\/index.php?rest_route=%2Fwp%2Fv2%2Fseries&post=556"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}