Details
-
Improvement
-
Resolution: Unresolved
-
Major
-
Lustre 2.16.0
-
9223372036854775807
Description
The nodemap functionality in lustre allows sets of hosts to be described using a range of network addresses.
For network types where the address is a simple integer, this seems reasonable.
For IPv4 where an address is usually represented as 4 small integers, this is manageable, but not really ideal. The standard throughout IP is to use a netmask to identify a set of addresses, whether for routing, for access control, or any other purpose.
For IPv6 it would be quite inconvenient to use ranges. Addresses are rarely allocated sequentially, and specifying a netmask length is much easier. Also, it is standard practice to store IPv6 address (and IPv4) in network-byte-order, so comparing two addresses to see if they are ordered (as needed for ranges) is clumsy to implement.
Clearly we need to keep address-range support for existing address types, but I believe we should not support it for new IP address. Further we should add netmask support for existing address types.
Internally, this would mean keeping nodemap information in a range-tree for 4-bytes addresses (as we already do), and using a netmask based structure for longer addresses.
From user-space, we would add a syntax (/nn suffix) to specify a netmask. For 4-byte addresses this would be converted to a range. For large address, this would be used as-is.
Attachments
Issue Links
- is related to
-
LU-18014 Interop conf-sanity test_43a: @@@@@@ FAIL: check lustre-MDTall.mdt.nosquash_nids failed!
-
- Open
-
-
LU-18167 sanity-sec test_16: nodemap_classify_nid()) ASSERTION( nodemap != ((void *)0) ) failed
-
- Resolved
-
-
LU-18417 Finish IPv6 support
-
- Open
-
- is related to
-
LU-10391 LNET: Support IPv6
-
- Resolved
-
-
LU-17217 Allow server to control/deny client connections
-
- Open
-
-
LU-13307 add LCFG_NODEMAP_ADD_RANGEv6 records for IPv6
-
- Resolved
-
I think when I added them to always_except I was thinking that we could re-enable them after adding ipv6 range support with this ticket. However, we decided against that strategy and instead invented the nidmask feature (because a range of ipv6 NIDs can be extremely large). But nidmasks are really only appropriate for answering the question "is this NID part of the network?" while test_101/103 need the ability specify a range of NIDs that are then expanded to a list. I think the appropriate thing would be to remove the always_except and keep the '[[ -n $ARR_IF0_IP ]] || skip "Need IPv4 NIDs"' check
Yes, conf-sanity/43a and some sanity-sec test cases exercise the nidmask code with ipv6 when FORCE_LARGE_NID=true and LOAD_MODULES_REMOTE=true.