yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #48664
[Bug 1513981] Re: Extend IPAM tables to store more information helpful for IPAM drivers
[Expired for neutron because there has been no activity for 60 days.]
** Changed in: neutron
Status: Incomplete => Expired
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1513981
Title:
Extend IPAM tables to store more information helpful for IPAM drivers
Status in neutron:
Expired
Bug description:
We (Yahoo) have some use cases where it would be great if following
information is associated with the subnet db table
1. Rack switch info
2. Backplane info
3. DHCP ip helpers
4. Option to tag allocation pools inside subnets
5. Multiple gateway addresses
Heres our use cases in detail:
Case 1: IP allocation in L3 TOR deployments:
1. User sends a boot request as usual. The user need not know all the
network and subnet information beforehand. All he would do is send a
boot request.
2. The scheduler will pick a node in an L3 rack. The way we map nodes <-> racks is as follows:
a. For VMs, we store rack_id in nova.conf on compute nodes
b. For Ironic nodes, right now we have static IP allocation, so we practically know which IP we want to assign. But when we move to dynamic allocation, we would probably use 'chassis' or 'driver_info' fields to store the rack id.
3. Nova compute will try to pick a network ID for this instance. At
this point, it needs to know what networks (or subnets) are available
in this rack. Based on that, it will pick a network ID and send port
creation request to Neutron. At Yahoo, to avoid some back-and-forth,
we send a fake network_id and let the plugin do all the work.
4. We need some information associated with the network/subnet that
tells us what rack it belongs to. Right now, for VMs, we have that
information embedded in physnet name. But we would like to move away
from that. If we had a column for subnets - e.g. tag, it would solve
our problem. Ideally, we would like a column 'rack id' or a new table
'racks' that maps to subnets, or something. We are open to different
ideas that work for everyone. This is where IPAM can help.
Case 2: Scheduling based on IP availability when user needs multiple IPs allocated for the instance
1. User sends a boot request with --num-ips X
The network/subnet level complexities need not be exposed to the user. For better experience, all we want our users to tell us is the number of IPs they want.
2. When the scheduler tries to find an appropriate host in L3 racks, we want it to find a rack that can satisfy this IP requirement. So, the scheduler will basically say, "give me all racks that have >X IPs available". If we have a 'Racks' table in IPAM, that would help.
Once the scheduler gets a rack, it will apply remaining filters to narrow down to one host and call nova-compute. The IP count will be propagated to nova compute from scheduler.
3. Nova compute will call Neutron and send the node details and IP
count along. Neutron IPAM driver will then look at the node details,
query the database to find a network in that rack and allocate X IPs
from the subnet.
Case 3: Multiple Gateways for Subnets
Currently, the subnets in Neutron only support one gateway. For
provider networks in large data centers like ours, quite often, the
architecture is such a way that multiple gateways are configured for
the subnets. These multiple gateways are typically spread across
backplanes so that the production traffic can be load-balanced between
backplanes. Neutron subnets currently don't support multiple gateways
In a way, this information is not specific to our company. Its generic information which ought to go with the subnets. Different companies can use this information differently in their IPAM drivers. But, the information needs to be made available to justify the flexibility of ipam. In fact, there are few companies that are interested in some having some of these attributes in the database.
Considering that the community is against arbitrary JSON blobs, I
think we can expand the database to incorporate such use cases. I
would prefer to avoid having our own database to make sure that our
use-cases are always shared with the community.
To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1513981/+subscriptions
References