<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 03:00:09 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Whamcloud Community JIRA</title>
    <link>https://jira.whamcloud.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.4.14</version>
        <build-number>940014</build-number>
        <build-date>05-12-2023</build-date>
    </build-info>


<item>
            <title>[LU-13307] add LCFG_NODEMAP_ADD_RANGEv6 records for IPv6</title>
                <link>https://jira.whamcloud.com/browse/LU-13307</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;Add &lt;tt&gt;LCFG_NODEMAP_ADD_RANGEv6&lt;/tt&gt; and &lt;tt&gt;LCFG_NODEMAP_DEL_RANGEv6&lt;/tt&gt; records to hold IPv6 addresses.  There may need to be some better semantics for what constitutes a &quot;range&quot; for IPv6 addresses, as we definitely do not want enumeration of addresses involved.&lt;/p&gt;</description>
                <environment></environment>
        <key id="58214">LU-13307</key>
            <summary>add LCFG_NODEMAP_ADD_RANGEv6 records for IPv6</summary>
                <type id="4" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11310&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="4" iconUrl="https://jira.whamcloud.com/images/icons/priorities/minor.svg">Minor</priority>
                        <status id="5" iconUrl="https://jira.whamcloud.com/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="1">Fixed</resolution>
                                        <assignee username="simmonsja">James A Simmons</assignee>
                                    <reporter username="adilger">Andreas Dilger</reporter>
                        <labels>
                            <label>IPv6</label>
                    </labels>
                <created>Fri, 28 Feb 2020 12:43:16 +0000</created>
                <updated>Sat, 20 Jan 2024 14:29:38 +0000</updated>
                            <resolved>Sat, 20 Jan 2024 14:29:38 +0000</resolved>
                                    <version>Lustre 2.16.0</version>
                                    <fixVersion>Lustre 2.16.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>5</watches>
                                                                            <comments>
                            <comment id="364905" author="adilger" created="Sat, 4 Mar 2023 17:50:25 +0000"  >&lt;p&gt;After recently digging into the nodemap code, I&apos;m trying to figure out how to configure nodemaps with IPv6 addresses.&lt;/p&gt;

&lt;p&gt;My understanding of IPv6 is superficial, so it isn&apos;t clear to me how a HPC cluster of nodes would be addressed?  In some documentation, the interface identifier is randomly assigned (formerly based on the Ethernet MAC address), so no &quot;NID range&quot; is possible, and the nodemap might need thousands of individual records to describe the nodes, yuck. It also seems possible that the interface identifier part of the IPv6 address would be sequentially assigned to the client nodes, which would map will to the existing nodemap functionality.&lt;/p&gt;

&lt;p&gt;For IPv4 addresses, nodemap stores the &lt;tt&gt;nrr_start_nid&lt;/tt&gt; and &lt;tt&gt;nrr_end_nid&lt;/tt&gt; range in a 32-byte &lt;tt&gt;struct nodemap_range_rec&lt;/tt&gt; using the &lt;tt&gt;NODEMAP_RANGE_IDX&lt;/tt&gt; keys. The nodemap index contains only 32-byte records, so it would be possible to store one, but not two, 20-byte IPv6 NIDs in a single record. &lt;/p&gt;

&lt;p&gt;To distinguish IPv6 NIDs in the nodemap config index, a new &lt;tt&gt;NODEMAP_RANGE6_IDX&lt;/tt&gt; with &lt;tt&gt;nodemap_range6_rec&lt;/tt&gt; records could be used:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
struct nodemap_range6_rec {
        __u64 nr6_count;
        struct nr6_start_nid;
        __u32 nr6_padding;
};
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Since the nodemap range does not need to have a different &lt;tt&gt;nud_size&lt;/tt&gt;, &lt;tt&gt;nid_type&lt;/tt&gt;, &lt;tt&gt;nid_num&lt;/tt&gt; or IPv6 subnet, it would be possible to store the 20-byte &lt;tt&gt;struct lnet_nid&lt;/tt&gt; plus a &lt;tt&gt;_&lt;em&gt;u64&lt;/tt&gt; count of NIDs that are in this range. The &lt;tt&gt;&lt;/em&gt;_u64 nr6_count&lt;/tt&gt; corresponds to the &lt;a href=&quot;https://en.m.wikipedia.org/wiki/IPv6_address&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;interface identifier&lt;/a&gt; part of the IPv6 address, so is large enough to contain all NIDs in a given subnet, if necessary. &lt;/p&gt;

&lt;p&gt;This works for &lt;b&gt;inclusive&lt;/b&gt; ranges (ie. nodes X-Y belong to a nodemap), but not very good to specify &lt;b&gt;exclusive&lt;/b&gt; ranges (ie. &quot;all other NIDs belong to this nodemap&quot;).  Any thoughts?  &lt;/p&gt;</comment>
                            <comment id="364906" author="adilger" created="Sat, 4 Mar 2023 18:26:29 +0000"  >&lt;p&gt;James, do you have any clusters at ORNL that are configured with IPv6 addresses?  It would be useful to see what the address assignments look like in that case. &lt;/p&gt;</comment>
                            <comment id="364928" author="neilb" created="Sun, 5 Mar 2023 21:45:26 +0000"  >&lt;p&gt;It is important to be aware that a network interface can (and usually does) have multiple IPv6 addresses.&lt;/p&gt;

&lt;p&gt;There is a link-local address which cannot be routed, there maybe a an address based on the hardware MAC address, there might be 1 or more temporary addresses that are assigned randomly and used as the source of outgoing connections and are discarded after a time when not in use.&#160; There might be an address assigned by dhcp6.&#160; And there could be addresses that are manually assigned.&lt;/p&gt;

&lt;p&gt;Servers typically have a manually assigned address which is published in the DNS.&#160;&#160; Hosts that only act as a client could only have randomly assigned addresses - one permanent for the rare case when an incoming connection is needed, one or two which are temporary and recycles, and used for all outgoing connections.&lt;/p&gt;

&lt;p&gt;NFS and Lustre both&#160; set IPV6_PREFER_SRC_PUBLIC so when connecting to a server the client will advertise a stable IPv6 address that will not expire.&#160; However if there are multiple possible public source addresses for the chosen interface, there is not currently any code to choose between them.&lt;/p&gt;

&lt;p&gt;With this context: What are nodemaps used for?&#160; grouping servers? grouping clients?&#160; Both?&lt;/p&gt;

&lt;p&gt;Can we just assume that people who want to use nodemaps will configure appropriate IPv6 addresses and NIDs to make the mapping convenient?&lt;/p&gt;

&lt;p&gt;I would MUCH rather limit support to net-masks, avoiding any suggestion of numeric ranges which are not power-of-2 in size and alignment.&lt;/p&gt;</comment>
                            <comment id="364929" author="adilger" created="Mon, 6 Mar 2023 00:05:20 +0000"  >&lt;p&gt;Neil, nodemaps are used for managing client-specific configuration.&lt;/p&gt;

&lt;p&gt;Originally nodemaps were developed for UID/GID mapping for clients connecting from different &quot;workgroup&quot; clusters that are/were not managed with the same central user administration. They are also used to direct clients to mount only a subdirectory of the filesystem, and to limit root access/admin permissions to the rest of the filesystem (root squash, and more).&lt;/p&gt;

&lt;p&gt;Because nodemaps can control admin access on clients, the clients can also use strong authentication (shared secret key or Kerberos) in addition to the IP address to ensure that clients are not spoofing their address. &lt;/p&gt;

&lt;p&gt;Definitely the clients will need to use consistent source addresses, and/or advertise all of their addresses at connect time to the servers, so that the server knows that later RPCs are from the same client, or they will be rejected. &lt;/p&gt;</comment>
                            <comment id="368493" author="adilger" created="Wed, 5 Apr 2023 04:51:34 +0000"  >&lt;p&gt;It would seem reasonable to change &lt;tt&gt;nodemap_idx_type&lt;/tt&gt; similar to my previous suggestion, but instead of (or in addition to) &lt;tt&gt;nr6_count&lt;/tt&gt; to add a &lt;tt&gt;nr6_netmask_bits&lt;/tt&gt; so that it can encode e.g. &lt;tt&gt;192.168.10.1/24&lt;/tt&gt; or &lt;tt&gt;::1/52&lt;/tt&gt; (or whatever is used for IPv6 addresses):&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
&lt;span class=&quot;code-keyword&quot;&gt;enum&lt;/span&gt; nodemap_idx_type {
        :
      NODEMAP_RANGE6_IDX = 6
};

struct nodemap_range6_rec {
        __u64 nr6_count;
        struct nr6_start_nid;
        __u32 nr6_netmask_bits;
};
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                            <comment id="393048" author="gerrit" created="Tue, 14 Nov 2023 20:16:38 +0000"  >&lt;p&gt;&quot;James Simmons &amp;lt;jsimmons@infradead.org&amp;gt;&quot; uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/c/fs/lustre-release/+/53135&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/c/fs/lustre-release/+/53135&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-13307&quot; title=&quot;add LCFG_NODEMAP_ADD_RANGEv6 records for IPv6&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-13307&quot;&gt;&lt;del&gt;LU-13307&lt;/del&gt;&lt;/a&gt; nodemap: have nodemap_add_member support large NIDs&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 4aa8457f95ee21d72a35d596082f34f6fbee1ace&lt;/p&gt;</comment>
                            <comment id="393465" author="adilger" created="Sat, 18 Nov 2023 18:36:31 +0000"  >&lt;p&gt;This patch allows a single nodemap entry to be specified but not a range of NIDs. I don&apos;t think this ticket should be closed when 53135 is landed, since we really need to have a solution for specifying multiple IPv6 NIDs into a range efficiently instead of listing 5000 NIDs individually for multiple nodemaps. &lt;/p&gt;
</comment>
                            <comment id="395595" author="simmonsja" created="Wed, 6 Dec 2023 00:27:31 +0000"  >&lt;p&gt;Currently working on &lt;a href=&quot;https://review.whamcloud.com/c/fs/lustre-release/+/53135&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/c/fs/lustre-release/+/53135.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Works for IPv4 and it mostly works for IPv6. Still some issues for final deleting of the nodemap due to the records support missing currently. Also for this patch only one large NID is stored for each nodemap.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="398584" author="simmonsja" created="Thu, 4 Jan 2024 17:23:55 +0000"  >&lt;p&gt;Got &#160;&lt;a href=&quot;https://review.whamcloud.com/c/fs/lustre-release/+/53135&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/c/fs/lustre-release/+/53135 &lt;/a&gt;fully working for IPv6 and IPv4. Its ready for review. Once this lands we can put lustre into a feature freeze.&lt;/p&gt;</comment>
                            <comment id="398758" author="adilger" created="Sat, 6 Jan 2024 09:32:30 +0000"  >&lt;p&gt;Per comments in the patch, it would be much better if IPv6 netmask could handle more than just a single NID per entry.  Otherwise, I&apos;m worried at the prospect of each connect walking a linked list of 5000+ clients in a nodemap on every connection to find if the NID belongs there or not.  I don&apos;t think this is &lt;b&gt;fatal&lt;/b&gt; as it would only apply to sites that actually do this, but it would be much better to fix it if possible before the release.&lt;/p&gt;</comment>
                            <comment id="400427" author="gerrit" created="Sat, 20 Jan 2024 03:40:36 +0000"  >&lt;p&gt;&quot;Oleg Drokin &amp;lt;green@whamcloud.com&amp;gt;&quot; merged in patch &lt;a href=&quot;https://review.whamcloud.com/c/fs/lustre-release/+/53135/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/c/fs/lustre-release/+/53135/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-13307&quot; title=&quot;add LCFG_NODEMAP_ADD_RANGEv6 records for IPv6&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-13307&quot;&gt;&lt;del&gt;LU-13307&lt;/del&gt;&lt;/a&gt; nodemap: have nodemap_add_member support large NIDs&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: 0ea23e019454e03810d532758afa52aa054995d8&lt;/p&gt;</comment>
                            <comment id="400445" author="pjones" created="Sat, 20 Jan 2024 14:29:38 +0000"  >&lt;p&gt;Merged for 2.16&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                        <issuelink>
            <issuekey id="13182">LU-10391</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="19619">LU-3527</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="62193">LU-14288</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                            <customfield id="customfield_10890" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10390" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i00uiv:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10090" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>