On 11/29/2012 12:03 AM, Mark McClain wrote:
On Nov 28, 2012, at 8:03 AM, gong yong sheng <[email protected]> wrote:
On 11/28/2012 08:11 AM, Mark McClain wrote:
On Nov 27, 2012, at 6:33 PM, gong yong sheng <[email protected]> wrote:
Just wanted to clarify two items:
At the moment all of the dhcp agents receive all of the updates. I do not see
why we need the quantum service to indicate which agent runs where. This will
change the manner in which the dhcp agents work.
No. currently, we can run only one dhcp agent since we are using a topic queue
for notification.
You are correct. There is a bug in the underlying Oslo RPC implementation that
sets the topic and queue names to be same value. I didn't get a clear
explanation of this problem until today and will have to figure out a fix to
oslo.
And one problem with multiple agents serving the same ip is:
we will have more than one agents want to update the ip's leasetime now and
than.
This is not a problem. The DHCP protocol was designed for multiple servers on
a network. When a client accepts a lease, the server that offered the accepted
lease will be the only process attempting to update the lease for that port.
The other DHCP instances will not do anything, so there won't be any chance for
a conflict. Also, when a client renews it sends a unicast message to that
previous DHCP server and so there will only be one writer in this scenario too.
Additionally, we don't have to worry about conflicting assignments because the
dhcp agents use the same static allocations from the Quantum database.
I mean dhcp agent is trying to update leasetime to quantum server. If we have
more than one dhcp agents, this will cause confusion.
def update_lease(self, network_id, ip_address, time_remaining):
try:
self.plugin_rpc.update_lease_expiration(network_id, ip_address,
time_remaining)
except:
self.needs_resync = True
LOG.exception(_('Unable to update lease'))
I think it is our dhcp agent's defect. Why does our dhcp agent need the lease
time? all the IPs are managed in our quantum server, there is not need for
dynamic ip management in dhcp server managed by dhcp agent.
There cannot be confusion. The dhcp client selects only one server to accept a
lease, so only one agent will update this field at a time. (See RFC2131 section
4.3.2 for protocol specifics). The dnsmasq allocation database is static in
Quantum's setup, so the lease renewal needs to propagate to the Quantum Server.
The Quantum server then uses the lease time to avoid allocating IP addresses
before the lease has expired. In Quantum, we add an additional restriction
that expired allocations are not reclaimed until the associated port has been
deleted as well.
Hi, I am saying in quantum there is no need to use lease time feature of
dnsmasq. We manage ip allocations in quantum, which will commands
dnsmasq to do ip allocation.
What do we do if lease time expires? dnsmasq will allocate the ip to
another VM?
In fact, in our quantum, the code is not working at all or not working well:
dnsmasq -> update_lease(self, network_id, ip_address,
time_remaining) -> plugin_rpc.update_lease_expiration
-> plugin.update_fixed_ip_lease_expiration(context, network_id,
ip_address,
lease_remaining)
function in plugin:
def update_fixed_ip_lease_expiration(self, context, network_id,
ip_address, lease_remaining):
expiration = (timeutils.utcnow() +
datetime.timedelta(seconds=lease_remaining))
query = context.session.query(models_v2.IPAllocation)
query = query.filter_by(network_id=network_id,
ip_address=ip_address)
try:
fixed_ip = query.one()
fixed_ip.expiration = expiration
except exc.NoResultFound:
LOG.debug("No fixed IP found that matches the network %s and "
"ip address %s.", network_id, ip_address)
We can see the fixed_ip.expiration is set but it is not saved into DB at
all. (if my observation is right)
one more question: I am doubting the expiration feature. Why do we need
expiration?
IP is recycled when the port is deleted.
mark
--
Mailing list: https://launchpad.net/~quantum-core
Post to : [email protected]
Unsubscribe : https://launchpad.net/~quantum-core
More help : https://help.launchpad.net/ListHelp