[Kea-users] Running perfDHCP with interface in a bridge

Marcin Siodelski marcin at isc.org
Tue Mar 24 21:40:18 UTC 2015


Hi Vikram,

I am currently on the conference and I will not have much time to focus 
on that issue during this week.

I just had quick reading of it. From the server's standpoint the 
perfdhcp acts as a relay agent and it works on the same port 67 as the 
server. Binding both perfdhcp and the server to the same port on the 
same interface results in a conflict and I presume this is why the 
perfdhcp refuses to bind. It would be actually good if you could turn 
the server off and rerun perfdhcp and see if it overcomes the "bind" 
error. Obviously the perfdhcp will get no responses because the server 
is down, but it would be a proof for me that this is a conflict between 
the server and perfdhcp being bound to the same port.

Once you use the -L parameter and set a different local port for 
perfdhcp there is no conflict anymore and it seems to work. But, in this 
case the server receives the queries from perfdhcp from a different port 
than standard DHCP port, in which case the server may either drop them 
or may respond to port 67 which perfdhcp is not listening on.

Do you have any packet capture to see if the server is actually 
responding? Do you know if dnsmasq responds to the port other than 67 or 
68, if it receives the message from such port?

 From the reading of 
http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html

it may be possible to change the default ports using the 
"--dhcp-alternate-port" parameter.

Marcin

On 2015-03-23 20:56, Vikram Hosakote (vhosakot) wrote:
> Hi Marcin,
>
> Hope you are doing good!
>
> I have two tap interfaces inside a namespace, and the DHCP server (dnsmasq)
> 30.30.30.3 is running on tap05f30e85-d2 listening on the DHCP server UDP
> port 67.
>
> Below are the IP addresses of the two tap interfaces inside the namespace
> qdhcp-9a5bcbe7-7f29-4eab-9296-207ea3a6b1be.
>
> [root at controller DHCP_CPNR_dev(keystone_admin)]# sudo ip netns exec
> qdhcp-9a5bcbe7-7f29-4eab-9296-207ea3a6b1be ip a
> 21: tap05f30e85-d2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
> noqueue state UNKNOWN
>      link/ether fa:16:3e:25:71:de brd ff:ff:ff:ff:ff:ff
>      inet 30.30.30.3/24 brd 30.30.30.255 scope global tap05f30e85-d2
>      inet6 fe80::f816:3eff:fe25:71de/64 scope link
> 22: tap883a32b1-77: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
> noqueue state UNKNOWN
>      link/ether fa:16:3e:6e:90:e7 brd ff:ff:ff:ff:ff:ff
>      inet 30.30.30.101/24 brd 30.30.30.255 scope global tap883a32b1-77
>
> [root at controller DHCP_CPNR_dev(keystone_admin)]# sudo ip netns exec
> qdhcp-9a5bcbe7-7f29-4eab-9296-207ea3a6b1be ifconfig -a
> tap05f30e85-d2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
>          inet 30.30.30.3  netmask 255.255.255.0  broadcast 30.30.30.255
>          inet6 fe80::f816:3eff:fe25:71de  prefixlen 64  scopeid 0x20<link>
>          ether fa:16:3e:25:71:de  txqueuelen 0  (Ethernet)
>          RX packets 105  bytes 27577 (26.9 KiB)
>          RX errors 0  dropped 0  overruns 0  frame 0
>          TX packets 42  bytes 6301 (6.1 KiB)
>          TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
> tap883a32b1-77: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
>          inet 30.30.30.101  netmask 255.255.255.0  broadcast 30.30.30.255
>          ether fa:16:3e:6e:90:e7  txqueuelen 0  (Ethernet)
>          RX packets 36  bytes 5793 (5.6 KiB)
>          RX errors 0  dropped 0  overruns 0  frame 0
>          TX packets 110  bytes 27995 (27.3 KiB)
>          TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
>
> Below is the DHCP server (dnsmasq) 30.30.30.3 running on tap05f30e85-d2
> listening on the DHCP server UDP port 67.
>
> [root at controller DHCP_CPNR_dev(keystone_admin)]# sudo ip netns exec
> qdhcp-9a5bcbe7-7f29-4eab-9296-207ea3a6b1be netstat -pan | grep 67
> udp        0      0 0.0.0.0:67              0.0.0.0:*
>          18837/dnsmasq
>
> I ran perfdhcp inside the namespace
> qdhcp-9a5bcbe7-7f29-4eab-9296-207ea3a6b1be
> to simulate DHCP clients in order to receive DHCP responses from the
> DHCP server
> (30.30.30.3 running on tap05f30e85-d2 listening on the DHCP server UDP
> port 67).
>
> But, I keep seeing the errors below. When I use the non-default local
> DHCP port
> (-L 10067), I don’t see any errors, but I don’t see any responses from
> the DHCP server (dnsmasq).
>
> Could you please let me know what I am missing. I am using the latest
> version of
> perfdhcp (0.9.1-beta). Thanks a lot!
>
> ********************************
>
> [root at controller DHCP_CPNR_dev(keystone_admin)]# sudo ip netns exec
> qdhcp-9a5bcbe7-7f29-4eab-9296-207ea3a6b1be /usr/local/sbin/perfdhcp -x a
> -4 -b mac=fa:16:3e:6e:90:e7 -r 1 30.30.30.3
> Running: perfdhcp -x a -4 -b mac=fa:16:3e:6e:90:e7 -r 1 30.30.30.3
> IPv4
> lease-type=address-only (IA_NA option added to the client's request)
> rate[1/s]=1
> base[0]=mac=fa:16:3e:6e:90:e7
> drop-time[0]=1
> drop-time[1]=1
> aggressivity=1
> elp-offset=-1
> sid-offset=-1
> rip-offset=-1
> diagnostic-selectors=a
> server=30.30.30.3
> Set MAC to fa::16::3e::6e::90::e7
> Set DUID to 000100011ca3170a000c01020304
> Error running perfdhcp: Failed to bind socket 3 to 30.30.30.3/port=67
>
> ********************************
>
> [root at controller DHCP_CPNR_dev(keystone_admin)]# sudo ip netns exec
> qdhcp-9a5bcbe7-7f29-4eab-9296-207ea3a6b1be /usr/local/sbin/perfdhcp -x a
> -4 -b mac=fa:16:3e:6e:90:e7 -r 1 -l tap883a32b1-77 30.30.30.3
> Running: perfdhcp -x a -4 -b mac=fa:16:3e:6e:90:e7 -r 1 -l
> tap883a32b1-77 30.30.30.3
> IPv4
> lease-type=address-only (IA_NA option added to the client's request)
> rate[1/s]=1
> base[0]=mac=fa:16:3e:6e:90:e7
> drop-time[0]=1
> drop-time[1]=1
> aggressivity=1
> elp-offset=-1
> sid-offset=-1
> rip-offset=-1
> diagnostic-selectors=a
> interface=tap883a32b1-77
> server=30.30.30.3
> Set MAC to fa::16::3e::6e::90::e7
> Set DUID to 000100011ca3171a000c01020304
> Error running perfdhcp: Failed to bind socket 3 to 30.30.30.101/port=67
>
> ********************************
>
> The following works but I see no responses from the DHCP server
> 30.30.30.3 (dnsmasq).
>
> [root at controller DHCP_CPNR_dev(keystone_admin)]# sudo ip netns exec
> qdhcp-9a5bcbe7-7f29-4eab-9296-207ea3a6b1be /usr/local/sbin/perfdhcp -x a
> -4 -b mac=fa:16:3e:6e:90:e7 -r 1 -l tap883a32b1-77 -L 10067 30.30.30.3
> Running: perfdhcp -x a -4 -b mac=fa:16:3e:6e:90:e7 -r 1 -l
> tap883a32b1-77 -L 10067 30.30.30.3
> IPv4
> lease-type=address-only (IA_NA option added to the client's request)
> rate[1/s]=1
> base[0]=mac=fa:16:3e:6e:90:e7
> drop-time[0]=1
> drop-time[1]=1
> aggressivity=1
> local-port=10067
> elp-offset=-1
> sid-offset=-1
> rip-offset=-1
> diagnostic-selectors=a
> interface=tap883a32b1-77
> server=30.30.30.3
> Set MAC to fa::16::3e::6e::90::e7
> Set DUID to 000100011ca31722000c01020304
> ^CFailed to receive DHCPv4 packet: Interrupted system call
> ***Rate statistics***
> Rate: 0 exchanges/second, expected rate: 1 exchanges/second
>
> ***Statistics for: DISCOVER-OFFER***
> sent packets: 3
> received packets: 0
> drops: 3
>
> Delay summary unavailable! No packets received.
>
> ***Statistics for: REQUEST-ACK***
> sent packets: 0
> received packets: 0
> drops: 0
>
> Delay summary unavailable! No packets received.
>
> ********************************
>
>
> [root at controller DHCP_CPNR_dev(keystone_admin)]# sudo ip netns exec
> qdhcp-9a5bcbe7-7f29-4eab-9296-207ea3a6b1be /usr/local/sbin/perfdhcp -x a
> -4 -b mac=fa:16:3e:6e:90:e7 -r 1 all
> Running: perfdhcp -x a -4 -b mac=fa:16:3e:6e:90:e7 -r 1 all
> IPv4
> lease-type=address-only (IA_NA option added to the client's request)
> rate[1/s]=1
> base[0]=mac=fa:16:3e:6e:90:e7
> drop-time[0]=1
> drop-time[1]=1
> aggressivity=1
> broadcast
> elp-offset=-1
> sid-offset=-1
> rip-offset=-1
> diagnostic-selectors=a
> server=255.255.255.255
> Set MAC to fa::16::3e::6e::90::e7
> Set DUID to 000100011ca31739000c01020304
> Error running perfdhcp: failed to connect to remote endpoint.
>
> ********************************
>
> [root at controller DHCP_CPNR_dev(keystone_admin)]# sudo ip netns exec
> qdhcp-9a5bcbe7-7f29-4eab-9296-207ea3a6b1be /usr/local/sbin/perfdhcp -x a
> -4 -b mac=fa:16:3e:6e:90:e7 -r 1 -l tap883a32b1-77 all
> Running: perfdhcp -x a -4 -b mac=fa:16:3e:6e:90:e7 -r 1 -l
> tap883a32b1-77 all
> IPv4
> lease-type=address-only (IA_NA option added to the client's request)
> rate[1/s]=1
> base[0]=mac=fa:16:3e:6e:90:e7
> drop-time[0]=1
> drop-time[1]=1
> aggressivity=1
> broadcast
> elp-offset=-1
> sid-offset=-1
> rip-offset=-1
> diagnostic-selectors=a
> interface=tap883a32b1-77
> server=255.255.255.255
> Set MAC to fa::16::3e::6e::90::e7
> Set DUID to 000100011ca31756000c01020304
> Error running perfdhcp: Failed to bind socket 3 to 30.30.30.101/port=67
>
> ********************************
>
> The following works but I see no responses from the DHCP server
> 30.30.30.3 (dnsmasq).
>
> [root at controller DHCP_CPNR_dev(keystone_admin)]# sudo ip netns exec
> qdhcp-9a5bcbe7-7f29-4eab-9296-207ea3a6b1be /usr/local/sbin/perfdhcp -x a
> -4 -b mac=fa:16:3e:6e:90:e7 -r 1 -l tap883a32b1-77 -L 10067 all
> Running: perfdhcp -x a -4 -b mac=fa:16:3e:6e:90:e7 -r 1 -l
> tap883a32b1-77 -L 10067 all
> IPv4
> lease-type=address-only (IA_NA option added to the client's request)
> rate[1/s]=1
> base[0]=mac=fa:16:3e:6e:90:e7
> drop-time[0]=1
> drop-time[1]=1
> aggressivity=1
> local-port=10067
> broadcast
> elp-offset=-1
> sid-offset=-1
> rip-offset=-1
> diagnostic-selectors=a
> interface=tap883a32b1-77
> server=255.255.255.255
> Set MAC to fa::16::3e::6e::90::e7
> Set DUID to 000100011ca3175b000c01020304
>
> ^CFailed to receive DHCPv4 packet: Interrupted system call
> ***Rate statistics***
> Rate: 0 exchanges/second, expected rate: 1 exchanges/second
>
> ***Statistics for: DISCOVER-OFFER***
> sent packets: 2
> received packets: 0
> drops: 2
>
> Delay summary unavailable! No packets received.
>
> ***Statistics for: REQUEST-ACK***
> sent packets: 0
> received packets: 0
> drops: 0
>
> Delay summary unavailable! No packets received.
>
> ********************************
>
> [root at controller DHCP_CPNR_dev(keystone_admin)]# sudo ip netns exec
> qdhcp-9a5bcbe7-7f29-4eab-9296-207ea3a6b1be /usr/local/sbin/perfdhcp -x a
> -4 -b mac=fa:16:3e:6e:90:e7 all
> Running: perfdhcp -x a -4 -b mac=fa:16:3e:6e:90:e7 all
> IPv4
> lease-type=address-only (IA_NA option added to the client's request)
> base[0]=mac=fa:16:3e:6e:90:e7
> drop-time[0]=1
> drop-time[1]=1
> aggressivity=1
> broadcast
> elp-offset=-1
> sid-offset=-1
> rip-offset=-1
> diagnostic-selectors=a
> server=255.255.255.255
> Set MAC to fa::16::3e::6e::90::e7
> Set DUID to 000100011ca3176f000c01020304
> Error running perfdhcp: failed to connect to remote endpoint.
>
> [root at controller DHCP_CPNR_dev(keystone_admin)]# sudo ip netns exec
> qdhcp-9a5bcbe7-7f29-4eab-9296-207ea3a6b1be /usr/local/sbin/perfdhcp -x a
> -4 -b mac=fa:16:3e:6e:90:e7 30.30.30.3
> Running: perfdhcp -x a -4 -b mac=fa:16:3e:6e:90:e7 30.30.30.3
> IPv4
> lease-type=address-only (IA_NA option added to the client's request)
> base[0]=mac=fa:16:3e:6e:90:e7
> drop-time[0]=1
> drop-time[1]=1
> aggressivity=1
> elp-offset=-1
> sid-offset=-1
> rip-offset=-1
> diagnostic-selectors=a
> server=30.30.30.3
> Set MAC to fa::16::3e::6e::90::e7
> Set DUID to 000100011ca31778000c01020304
> Error running perfdhcp: Failed to bind socket 3 to 30.30.30.3/port=67
>
> ********************************
>
> [root at controller DHCP_CPNR_dev(keystone_admin)]# sudo ip netns exec
> qdhcp-9a5bcbe7-7f29-4eab-9296-207ea3a6b1be /usr/local/sbin/perfdhcp -x a
> -4 -b mac=fa:16:3e:6e:90:e7 -r 1 -l tap883a32b1-77
> Running: perfdhcp -x a -4 -b mac=fa:16:3e:6e:90:e7 -r 1 -l tap883a32b1-77
> IPv4
> lease-type=address-only (IA_NA option added to the client's request)
> rate[1/s]=1
> base[0]=mac=fa:16:3e:6e:90:e7
> drop-time[0]=1
> drop-time[1]=1
> aggressivity=1
> broadcast
> elp-offset=-1
> sid-offset=-1
> rip-offset=-1
> diagnostic-selectors=a
> interface=tap883a32b1-77
> server=255.255.255.255
> Set MAC to fa::16::3e::6e::90::e7
> Set DUID to 000100011ca31907000c01020304
> Error running perfdhcp: Failed to bind socket 3 to 30.30.30.101/port=67
>
> ********************************
>
> The following works but I see no responses from the DHCP server
> 30.30.30.3 (dnsmasq).
>
> [root at controller DHCP_CPNR_dev(keystone_admin)]# sudo ip netns exec
> qdhcp-9a5bcbe7-7f29-4eab-9296-207ea3a6b1be /usr/local/sbin/perfdhcp -x a
> -4 -b mac=fa:16:3e:6e:90:e7 -r 1 -L 10067 30.30.30.3
> Running: perfdhcp -x a -4 -b mac=fa:16:3e:6e:90:e7 -r 1 -L 10067 30.30.30.3
> IPv4
> lease-type=address-only (IA_NA option added to the client's request)
> rate[1/s]=1
> base[0]=mac=fa:16:3e:6e:90:e7
> drop-time[0]=1
> drop-time[1]=1
> aggressivity=1
> local-port=10067
> elp-offset=-1
> sid-offset=-1
> rip-offset=-1
> diagnostic-selectors=a
> server=30.30.30.3
> Set MAC to fa::16::3e::6e::90::e7
> Set DUID to 000100011ca31937000c01020304
> ^CFailed to receive DHCPv4 packet: Interrupted system call
> ***Rate statistics***
> Rate: 0 exchanges/second, expected rate: 1 exchanges/second
>
> ***Statistics for: DISCOVER-OFFER***
> sent packets: 4
> received packets: 0
> drops: 4
>
> Delay summary unavailable! No packets received.
>
> ***Statistics for: REQUEST-ACK***
> sent packets: 0
> received packets: 0
> drops: 0
>
> Delay summary unavailable! No packets received.
>
> [root at controller DHCP_CPNR_dev(keystone_admin)]#
>
> Regards,
> Vikram Hosakote
> OpenStack Software Engineer    |    vhosakot at cisco.com
> Cloud and Virtualization Group  |    Cisco System
>
> From: Vikram Hosakote <vhosakot at cisco.com <mailto:vhosakot at cisco.com>>
> Date: Friday, March 6, 2015 at 1:50 PM
> To: Marcin Siodelski <marcin at isc.org <mailto:marcin at isc.org>>,
> "kea-users at lists.isc.org <mailto:kea-users at lists.isc.org>"
> <kea-users at lists.isc.org <mailto:kea-users at lists.isc.org>>
> Subject: Re: [Kea-users] Running perfDHCP with interface in a bridge
>
> Hi Marcin,
>
> Firstly, thanks a lot for your reply :) I thought I would never get a
> reply as I got
> an email saying that my email will be held until the list moderator
> approves it
> as I am not a member of kea-users at lists.isc.org
> <mailto:kea-users at lists.isc.org>. How did you see my email ? :)
> Looks like the list moderator approved my email. Thanks to the list
> moderator
> as well :)
>
> Secondly, thanks for the info. Sure, I will run perfDHCP with a tap
> interface in a
> bridge, and will let you know if I see any issues.
>
> Thanks again!
>
> The very reason humans have been successful is because they help, and they
> help strangers.
>
> Regards,
> Vikram Hosakote
> OpenStack Software Engineer    | vhosakot at cisco.com
> <mailto:vhosakot at cisco.com>
> Cloud and Virtualization Group  |    Cisco Systems
>
> From: Marcin Siodelski <marcin at isc.org <mailto:marcin at isc.org>>
> Date: Friday, March 6, 2015 at 7:16 AM
> To: Vikram Hosakote <vhosakot at cisco.com <mailto:vhosakot at cisco.com>>,
> "kea-users at lists.isc.org <mailto:kea-users at lists.isc.org>"
> <kea-users at lists.isc.org <mailto:kea-users at lists.isc.org>>
> Subject: Re: [Kea-users] Running perfDHCP with interface in a bridge
>
> Hi Vikram,
>
> On 03/05/15 23:26, Vikram Hosakote (vhosakot) wrote:
>
>     Hi,
>     We are using perfDHCP to scale DHCP, and found the following link that
>     says "perfdhcp does not seem to run if perfdhcp boxes have multiple
>     bridge
>     interfaces”. Is this true ?
>     Please search “bridge” in the following link.
>     http://lost-and-found-narihiro.blogspot.com/2013_04_01_archive.html
>
>
> AFAIK, the use of multiple bridge interfaces shouldn't cause any issues
> for perfdhcp. From this blog I don't exactly know what the problem could
> have been. The error message is cryptic but it doesn't seem to be
> related to the fact that the "eth1" interface wasn't not supported.
>
> I was recently using the perfdhcp on CentOS and didn't observe those issues.
>
> Please note that the latest version of perfdhcp is available with the
> Kea DHCP server 0.9.1-beta version, released on February 18th. I
> recommend to use this version. The versions shipped with BIND10 is old
> and there have been some improvements and fixes since then.
>
> Useful links:
> http://ftp.isc.org/isc/kea/
> http://kea.isc.org/wiki
>
>
>     We would like to use perfDHCP with tap interfaces part of a bridge.
>     Is this
>     possible ? Can we run perfDHCP by passing a tap interface part of a
>     bridge
>     to the -l argument ?
>
>
> I don't see why this wouldn't work. It would be best if you could try
> running perfdhcp in your environment and in case you find any issues let
> us know and we can work together to reproduce the problem.
>
> Marcin Siodelski
> DHCP Software Engineer @ ISC
>
>



More information about the Kea-users mailing list