IP Address Assignment Behavior and Specs

1/19/00 Created by SY-
1/24/00 First draft
1/25/00 Add Rob's comments
2/3/00 Major modifications of Automatic IP Address Assignment
4/24/00 Rob reviews again
12/8/00 Last modified

This document outlines the desired behaviour of NetDB3 when assigning IP addresses. This should cover interface IP addresses for all node types (simple, advanced, router, IPC) and dynamic address for networks and IPCs.

Table of Contents


Automatic Assignment of IP Addresses

IP addresses are automatically assigned in the following cases:
  1. Using a template node
  2. Using a node as a template
  3. User does not specify address or address space (dynamic DHCP address)
  4. User specifies count>1 for IPC or dynamic addresses
  5. User specifies explicit IP address that is taken
  6. User specifies address space in IP address input field
  7. User select address space from select box

Additional notes:

  1. Addresses are reserved to a user, not to an object. Reserved addresses that are not used should be released when the user logs out.
Cases 1-3 - System attempts to find the best representative IP address as follows:

No errors are ever returned. If the address space is full or the user does not have rights to the address space, the IP address field is left blank.

Cases 4-7 - user has specified address, address space and/or count

Determining start and end addresses

IP address will be assigned as follows:

Look for Address


Valid Address Space Formats

Invalid address spaces will generate error.

Valid address space formats


Node Interface IP Addresses

The below portion of the NetDB node page is used for IP addresses and will be referred to in this section. I picked the Advanced Node interface since it's the most comprehensive.

 
IP Addresses  Active     Name
 
or
  Active
   Name
 
Creating IP Addresses
  1. Enter explicit IP address in input field in w.x.y.z format
    ex. 171.64.20.5, 171.66.23.4
    Will assign next available by above algorithm, starting from this explicit address
    If explicit IP address is not available so another is selected, message will be sent. If no IP address available between explicit IP address and end of AS, send an error.
  2. Enter existing address space in input field- assign addresses as specified above.
  3. Select address space from select box- assign address as specified above

Input field takes precedence over select box.
Active box is checked by default

Modifying IP Addresses

  1. Erase old IP address and explicitly enter a new IP address in w.x.y.z format
  2. Erase old IP address and enter address space
  3. Uncheck old address. Hit "addl" to get select box and input field. Add new address as usual.

Deleting IP addresses
IP addresses can be deleted in two ways:

  1. Unclick box to left of IP address
  2. Clear IP address box and name (if present)- (currently, a checked box next to a blank IP address causes an error)

Adding Additional Addresses

  1. Hit "addl" button. Add new address as usual. If nothing is selected, do not give error. (currently gives error unless one unclicks box)

Use as Template


Assigning Dynamic Addresses

Dynamic DHCP Addresses
Dynamic DHCP Addresses are addresses used for Roaming DHCP. They are associated with address spaces within a network. Below is a portion of the Network page, showing the dynamic address section as it should look.

Dynamic DHCP Addresses
  Name  Active
 
 Active   Count

Notes on Dynamic DHCP Addresses

IPC Addresses
IPC Addresses are the addresses handed out by an IPC provider. IPC addresses are not the interface addresses of an IPC node. Below is a portion of the IPC page, showing the IPC address section as it should look.

IP Addresses (IPC provider) Uncheck to remove
    Name  Active
  or  Active   Count
Notes on IPC Addresses

IP Address Reservations

Addresses are checked and reserved at the following times:
  1. User hits "verify" button next to IP address- all addresses verified on that interface
  2. User assigns multiple IPC or Dynamic addresses using Count field
  3. User hits "Create" or "Modify" button
  4. User hits "add'l" button- all addresses verified on that interfaces

Test Cases

P = pass, F = fail

Automatic Address Assignment from User's Default Address Space

  1. Is address assigned from user's address space?P 3/25
  2. What if no address left in user's address space?P 4/4
  3. Does it observe the /27 assignment order rule? P 3/2
  4. Are reserves observed? Even for gods? P 3/25
  5. No default address space- should leave blank P 4/4

Address Space Select Box

  1. Reserves observed P 3/25
  2. /27 rule observed P 3/2
  3. Only see user's allowed AS P 3/2

IP Address Input Field

  1. Input valid address space P 4/4
  2. Input invalid address space to create start point P 3/25
  3. Input valid non-used IP address P 3/2
  4. Input invalid IP address (no associated address space) P3/2
  5. Input invalid (not valid IP addr or AS) P 3/25 Invalid AS get put in list and checked- feature
  6. Valid used IP address- should get next available with message P 3/25
  7. No address available- get message P 3/25
  8. Are reserves observed?
  9. Accepts all AS formats P 3/25
  10. If AS is 0/24, what happens if try 0/25 or 128/25
  11. /27 rule observed if address space
  12. God can explcitly assign reserved address P 3/25
  13. Can explicity assign /27 broadcast or net address P 4/4
  14. Use broadcast address- get error F 3/25
  15. Address space does not wrap around. P4/4

Verify button/ reserving

  1. Verified names/addresses reserved to user P 3/2
  2. If add the same address as an existing address and hit verify, should assign next avail P 3/2
  3. Verify existing address/name - no error P 3/2
  4. Verify name, no address- error expected P 3/2
  5. Verify blank fields- error expected P 3/2
  6. If verify an IP address, then uncheck and commit, is that address still locked? F 3/2 An odd condition. Also, that user now cannot use it even tho verified under its id (confirmed by GS for dialtest user)
  7. Verified names and addresses listed F 3/2
  8. Single verify button per interface but verifies all addresses on that interface
  9. Single verify button for IPC addresses, DHCP addresses
  10. Reserved addresses cleaned up after user logs out F 4/4
  11. No best fit if count=1 P 4/4
  12. Should not lose any data during name or address verifies

Additional button

  1. Does add'l verify other addresses so no duplicates? P 3/25
  2. Don't enter additional- should get no error P 3/2

IPC Addresses

  1. Does count work properly?
  2. Find the best block? P 3/25
  3. Invalid count format should give error P 3/25
  4. Enter name, no address
  5. Automatic name assignment
  6. Does not assign broadcast or net addresses P 3/25
  7. Count bigger than available addresses- error P 3/25
  8. Reserves observed? F 3/2

Dynamic Addresses

  1. Does count work properly?
  2. Find the best block? P 3/25
  3. What if select different AS? P 4/4
  4. Invalid count format
  5. Enter name, no address
  6. Automatic name assignment
  7. Does not assign broadcast or net addresses P 3/25
  8. Count bigger than available addresses P 3/25
  9. Reserves observed? F 3/2 With lo/hi reserve = 0, acts like reserves = 2

Existing Addresses

  1. If uncheck existing address and try to reassign and verify, should accept. P 3/2
  2. If uncheck existing address and try additional assignment in that AS, does it skip the unchecked address? Feature P 3/25
  3. Unclick to remove address F 3/2 sometimes, when deleting DHCP addr, get "<#> not locked by user sunia" error
  4. Clear address to remove address - name should go away P 3/2
  5. Clear name to remove name P 3/2
  6. Change existing address to AS. Accepts all formats? P /4
  7. Change all existing addresses to same AS- assigned properly?P 3/2
  8. If existing addr changed to another existing addr, should get reassigned to next avail P 3/2
  9. change existing address, but not name. Hit verify Should accept. F 3/2 get error that name already exists
  10. If delete address, other users should be able to use it

Router Node

  1. 2 addresses per interface F 3/2 Only one address field now
  2. Only first address on first interface is automatically assigned during create

Template Node

  1. What if use template which has AS that user does not have rights to?
  2. What if AS is out of addresses?
  3. Reserves observed?
  4. /27 rule observed?
  5. If no AS, does it use user's default AS?

Use as Template

  1. What if use template which has AS that user does not have rights to?
  2. What if AS is out of addresses?
  3. Reserves observed?
  4. /27 rule observed?
  5. Is the correct AS used (if multiple interfaces, active/non-active addresses, order) F 3/25
  6. If no AS, does it use user's default AS?
  7. Assign from beginning of AS, not from IP address
  8. What if no address is active?
Create/Modify
  1. Check for different behavior given node already exists or doesn't exist
Display
  1. IP addresses should be in number order, not string order, on info page G 3/25

Duplicate Addresses

  1. If duplicate addresses are found on an interface, one will be assigned to next avail address P 3/2
  2. If duplicate address but no available address, get error. F 3/2 Get error but cannot simply declick or clear duplicate. Perpetual loop.

Multiple Interfaces/Nodes

  1. How is automatic address assignment, verify, duplicates affected on multiple interfaces?
  2. How is automatic address assignment, verify, duplicates affected on multiple locked nodes?

Errors

  1. If an error occurs during any operation, is the returned page correct? P 4/4

User Access to Address Space

  1. "bad addr" means user does not have access to that address' AS
  2. "bad AS" means user does not have access to that address space (AS)
  3. In below cases, should get error saying user doesn't have rights to AS. Original entry should be listed but not checked.
  4. Create Node
    1. Create - use bad addr - hit create F 3/2 get error but bad input is still checked
    2. Create - use bad AS - hit create F 3/2 node is created with no IP address
    3. Create - use bad addr - hit verify
    4. Create - use bad AS - hit verify
    5. Create - use bad addr - hit add'l
    6. Create - use bad AS - hit add'l
    7. Create - hit add'l - use bad addr - hit create P 4/4
    8. Create - hit add'l - use bad AS - hit create F 3/2 get error but bad input is still checked
    9. Create - hit add'l - use bad addr - hit verify F 3/2 get error but bad input is still checked
    10. Create - hit add'l - use bad AS - hit verify F 3/2 get error but bad input is still checked
    11. Create - hit add'l - use bad addr - hit add'l F 3/2 no error
    12. Create - hit add'l - use bad AS - hit add'l F 3/2 get error but bad input is still checked
  5. Modify Node
    1. Modify - use bad addr for existing - hit Modify F 3/2 get error but bad input is still checked
    2. Modify - use bad AS for existing - hit Modify
    3. Modify - use bad addr for existing - hit verify F 3/2 get error but bad input is still checked
    4. Modify - use bad AS for existing- hit verify
    5. Modify - use bad addr for existing - hit add'l
    6. Modify - use bad AS for existing- hit add'l
    7. Modify - hit add'l - use bad addr - hit Modify
    8. Modify - hit add'l - use bad AS - hit Modify
    9. Modify - hit add'l - use bad addr - hit verify
    10. Modify - hit add'l - use bad AS - hit verify
    11. Modify - hit add'l - use bad addr - hit add'l
    12. Modify - hit add'l - use bad AS - hit add'l
  6. Use as Template - not Template Node
    1. Use as Template - use bad addr - hit create
    2. Use as Template - use bad AS - hit create
    3. Use as Template - use bad addr - hit verify
    4. Use as Template - use bad AS - hit verify
    5. Use as Template - use bad addr - hit add'l
    6. Use as Template - use bad AS - hit add'l
    7. Use as Template - hit add'l - use bad addr - hit create
    8. Use as Template - hit add'l - use bad AS - hit create
    9. Use as Template - hit add'l - use bad addr - hit verify
    10. Use as Template - hit add'l - use bad AS - hit verify
    11. Use as Template - hit add'l - use bad addr - hit add'l
    12. Use as Template - hit add'l - use bad AS - hit add'l
  7. Use as Template - Template Node
    1. Use as Template - use bad addr - hit create
    2. Use as Template - use bad AS - hit create
    3. Use as Template - use bad addr - hit verify
    4. Use as Template - use bad AS - hit verify
    5. Use as Template - use bad addr - hit add'l
    6. Use as Template - use bad AS - hit add'l
    7. Use as Template - hit add'l - use bad addr - hit create
    8. Use as Template - hit add'l - use bad AS - hit create
    9. Use as Template - hit add'l - use bad addr - hit verify
    10. Use as Template - hit add'l - use bad AS - hit verify
    11. Use as Template - hit add'l - use bad addr - hit add'l
    12. Use as Template - hit add'l - use bad AS - hit add'l
  8. Advanced Node
    1. Create - use bad addr - hit create
    2. Create - use bad AS - hit create
    3. Create - use bad addr - hit verify
    4. Create - use bad AS - hit verify
    5. Create - use bad addr - hit add'l
    6. Create - use bad AS - hit add'l
    7. Create - hit add'l - use bad addr - hit create
    8. Create - hit add'l - use bad AS - hit create
    9. Create - hit add'l - use bad addr - hit verify
    10. Create - hit add'l - use bad AS - hit verify
    11. Create - hit add'l - use bad addr - hit add'l
    12. Create - hit add'l - use bad AS - hit add'l
  9. IPC Node
    1. Create - use bad addr - hit create
    2. Create - use bad AS - hit create
    3. Create - use bad addr - hit verify
    4. Create - use bad AS - hit verify
    5. Create - use bad addr - hit add'l
    6. Create - use bad AS - hit add'l
    7. Create - hit add'l - use bad addr - hit create
    8. Create - hit add'l - use bad AS - hit create
    9. Create - hit add'l - use bad addr - hit verify
    10. Create - hit add'l - use bad AS - hit verify
    11. Create - hit add'l - use bad addr - hit add'l
    12. Create - hit add'l - use bad AS - hit add'l


THE END