<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.lustre.org/index.php?action=history&amp;feed=atom&amp;title=Static_LNet_Configuration</id>
	<title>Static LNet Configuration - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.lustre.org/index.php?action=history&amp;feed=atom&amp;title=Static_LNet_Configuration"/>
	<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=Static_LNet_Configuration&amp;action=history"/>
	<updated>2026-09-02T19:06:07Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>http://wiki.lustre.org/index.php?title=Static_LNet_Configuration&amp;diff=3092&amp;oldid=prev</id>
		<title>Malcolm: /* LNet ip2nets syntax */</title>
		<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=Static_LNet_Configuration&amp;diff=3092&amp;oldid=prev"/>
		<updated>2018-03-21T20:43:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;LNet ip2nets syntax&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:43, 21 March 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l117&quot;&gt;Line 117:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 117:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Above, there are two hosts that will create an LNet NID on the &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt; device, four hosts using &amp;lt;code&amp;gt;eth2&amp;lt;/code&amp;gt;, and the remainder of the &amp;lt;code&amp;gt;10.70/16&amp;lt;/code&amp;gt; network will create an LNet NID for the &amp;lt;code&amp;gt;tcp0&amp;lt;/code&amp;gt; LNet on the first interface presented by the operating system, provided that the interface has an IPv4 address on the &amp;lt;code&amp;gt;10.70/16&amp;lt;/code&amp;gt; subnet.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Above, there are two hosts that will create an LNet NID on the &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt; device, four hosts using &amp;lt;code&amp;gt;eth2&amp;lt;/code&amp;gt;, and the remainder of the &amp;lt;code&amp;gt;10.70/16&amp;lt;/code&amp;gt; network will create an LNet NID for the &amp;lt;code&amp;gt;tcp0&amp;lt;/code&amp;gt; LNet on the first interface presented by the operating system, provided that the interface has an IPv4 address on the &amp;lt;code&amp;gt;10.70/16&amp;lt;/code&amp;gt; subnet.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This last item requires further explanation. The syntax of configuration entry &amp;lt;code&amp;gt;“tcp0 10.70.*.*”&amp;lt;/code&amp;gt; is ambiguous and open to misinterpretation by a human reader. Contrary to expectation, this does not mean &amp;#039;&amp;#039;“configure the interface that matches the pattern &amp;lt;code&amp;gt;10.70.*.*&amp;lt;/code&amp;gt; as LNet &amp;lt;code&amp;gt;tcp0&amp;lt;/code&amp;gt;”&amp;#039;&amp;#039;. It is in fact far more specific. It means &amp;#039;&amp;#039;“configure the first interface detected by the host operating system as LNet &amp;lt;code&amp;gt;tcp0&amp;lt;/code&amp;gt; if it also matches the pattern &amp;lt;code&amp;gt;10.70.*.*&amp;lt;/code&amp;gt;&amp;quot;&amp;#039;&amp;#039;. If &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;either &lt;/del&gt;condition is false, then no LNet NID will be configured.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This last item requires further explanation. The syntax of configuration entry &amp;lt;code&amp;gt;“tcp0 10.70.*.*”&amp;lt;/code&amp;gt; is ambiguous and open to misinterpretation by a human reader. Contrary to expectation, this does not mean &amp;#039;&amp;#039;“configure the interface that matches the pattern &amp;lt;code&amp;gt;10.70.*.*&amp;lt;/code&amp;gt; as LNet &amp;lt;code&amp;gt;tcp0&amp;lt;/code&amp;gt;”&amp;#039;&amp;#039;. It is in fact far more specific. It means &amp;#039;&amp;#039;“configure the first interface detected by the host operating system as LNet &amp;lt;code&amp;gt;tcp0&amp;lt;/code&amp;gt; if it also matches the pattern &amp;lt;code&amp;gt;10.70.*.*&amp;lt;/code&amp;gt;&amp;quot;&amp;#039;&amp;#039;. If &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the &lt;/ins&gt;condition is false, then no LNet NID will be configured.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;One can also mix LNDs in the &amp;lt;code&amp;gt;ip2nets&amp;lt;/code&amp;gt; syntax, should this be required:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;One can also mix LNDs in the &amp;lt;code&amp;gt;ip2nets&amp;lt;/code&amp;gt; syntax, should this be required:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki_lustre_org:diff::1.12:old-2781:rev-3092 --&gt;
&lt;/table&gt;</summary>
		<author><name>Malcolm</name></author>
	</entry>
	<entry>
		<id>http://wiki.lustre.org/index.php?title=Static_LNet_Configuration&amp;diff=2781&amp;oldid=prev</id>
		<title>Malcolm at 04:43, 8 September 2017</title>
		<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=Static_LNet_Configuration&amp;diff=2781&amp;oldid=prev"/>
		<updated>2017-09-08T04:43:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:43, 7 September 2017&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In releases of Lustre prior to version 2.7.0, configuration of the LNet device driver is managed exclusively by supplying options to the &amp;lt;code&amp;gt;lnet&amp;lt;/code&amp;gt; kernel module. The options are read from a modules options (&amp;lt;code&amp;gt;modprobe&amp;lt;/code&amp;gt;) configuration file when the kernel module is first loaded. With the release of Lustre 2.7.0, administrators can instead make use of the [[Dynamic LNet &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;configuration (DLC)&lt;/del&gt;]] feature, controlled by a utility called &amp;lt;code&amp;gt;lnetctl&amp;lt;/code&amp;gt;, as an alternative to static configuration.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In releases of Lustre prior to version 2.7.0, configuration of the LNet device driver is managed exclusively by supplying options to the &amp;lt;code&amp;gt;lnet&amp;lt;/code&amp;gt; kernel module. The options are read from a modules options (&amp;lt;code&amp;gt;modprobe&amp;lt;/code&amp;gt;) configuration file when the kernel module is first loaded. With the release of Lustre 2.7.0, administrators can instead make use of the [[Dynamic LNet &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Configuration and lnetctl| Dynamic LNet Configuration&lt;/ins&gt;]] feature, controlled by a utility called &amp;lt;code&amp;gt;lnetctl&amp;lt;/code&amp;gt;, as an alternative to static configuration.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Refer to the article [[Lustre Networking (LNET) Overview]] for a general introduction to LNet.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Refer to the article [[Lustre Networking (LNET) Overview]] for a general introduction to LNet.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki_lustre_org:diff::1.12:old-2724:rev-2781 --&gt;
&lt;/table&gt;</summary>
		<author><name>Malcolm</name></author>
	</entry>
	<entry>
		<id>http://wiki.lustre.org/index.php?title=Static_LNet_Configuration&amp;diff=2724&amp;oldid=prev</id>
		<title>Malcolm at 05:46, 31 August 2017</title>
		<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=Static_LNet_Configuration&amp;diff=2724&amp;oldid=prev"/>
		<updated>2017-08-31T05:46:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:46, 30 August 2017&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l147&quot;&gt;Line 147:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 147:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Lustre Networking (LNet)]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Lustre Networking (LNet)]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Lustre Systems Administration]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki_lustre_org:diff::1.12:old-2605:rev-2724 --&gt;
&lt;/table&gt;</summary>
		<author><name>Malcolm</name></author>
	</entry>
	<entry>
		<id>http://wiki.lustre.org/index.php?title=Static_LNet_Configuration&amp;diff=2605&amp;oldid=prev</id>
		<title>Malcolm: Created page with &quot;In releases of Lustre prior to version 2.7.0, configuration of the LNet device driver is managed exclusively by supplying options to the &lt;code&gt;lnet&lt;/code&gt; kernel module. The o...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.lustre.org/index.php?title=Static_LNet_Configuration&amp;diff=2605&amp;oldid=prev"/>
		<updated>2017-08-10T02:57:11Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;In releases of Lustre prior to version 2.7.0, configuration of the LNet device driver is managed exclusively by supplying options to the &amp;lt;code&amp;gt;lnet&amp;lt;/code&amp;gt; kernel module. The o...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;In releases of Lustre prior to version 2.7.0, configuration of the LNet device driver is managed exclusively by supplying options to the &amp;lt;code&amp;gt;lnet&amp;lt;/code&amp;gt; kernel module. The options are read from a modules options (&amp;lt;code&amp;gt;modprobe&amp;lt;/code&amp;gt;) configuration file when the kernel module is first loaded. With the release of Lustre 2.7.0, administrators can instead make use of the [[Dynamic LNet configuration (DLC)]] feature, controlled by a utility called &amp;lt;code&amp;gt;lnetctl&amp;lt;/code&amp;gt;, as an alternative to static configuration.&lt;br /&gt;
&lt;br /&gt;
Refer to the article [[Lustre Networking (LNET) Overview]] for a general introduction to LNet.&lt;br /&gt;
&lt;br /&gt;
This article describes static configuration of LNet.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
An LNet interface can be configured by supplying parameters directly to the &amp;lt;code&amp;gt;lnet&amp;lt;/code&amp;gt; module when it is loaded by the kernel. To do this, create a file in the normal &amp;lt;code&amp;gt;modprobe&amp;lt;/code&amp;gt; configuration options directory (usually &amp;lt;code&amp;gt;/etc/modprobe.d&amp;lt;/code&amp;gt;), and add an entry for the &amp;lt;code&amp;gt;lnet&amp;lt;/code&amp;gt; module. By convention, Lustre module configuration options are recorded in a file called &amp;lt;code&amp;gt;/etc/modprobe.d/lustre.conf&amp;lt;/code&amp;gt; (although tuning parameters for devices can be separated into device-specific files, such as &amp;lt;code&amp;gt;/etc/modprobe.d/ko2iblnd.conf&amp;lt;/code&amp;gt; – see the section [[Optimizing o2iblnd Performance]] for an example of this, which shows an optimized configuration that is automatically applied when an Intel® Omni-Path interface is detected).&lt;br /&gt;
&lt;br /&gt;
There are two ways to define an LNet configuration using module options: &amp;lt;code&amp;gt;networks&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ip2nets&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;networks&amp;lt;/code&amp;gt; parameter is the easiest to understand and uses a very simple syntax, while &amp;lt;code&amp;gt;ip2nets&amp;lt;/code&amp;gt; gives administrators the greatest flexibility at the expense of much greater complexity. The &amp;lt;code&amp;gt;networks&amp;lt;/code&amp;gt; syntax is strongly recommended unless there is a specific requirement that can be more readily fulfilled by the &amp;lt;code&amp;gt;ip2nets&amp;lt;/code&amp;gt; syntax.&lt;br /&gt;
&lt;br /&gt;
There should be only one &amp;lt;code&amp;gt;networks&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ip2nets&amp;lt;/code&amp;gt; parameter defined for the &amp;lt;code&amp;gt;lnet&amp;lt;/code&amp;gt; module. The parameters are mutually exclusive; choose one or the other but not both. If both options are referenced in the modules configuration, then the following warning will be reported in the kernel ring buffer (&amp;lt;code&amp;gt;dmesg&amp;lt;/code&amp;gt;) and system console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
[46290.641911] LNetError: 101-0: Please specify EITHER &amp;#039;networks&amp;#039; or &amp;#039;ip2nets&amp;#039; but not both at once&lt;br /&gt;
[46290.645288] LNetError: 3483:0:(config.c:199:lnet_parse_networks()) networks string is undefined&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second line in the error output is a side-effect of the conflict between &amp;lt;code&amp;gt;ip2nets&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;networks&amp;lt;/code&amp;gt; options. The key error report is the first line of the above output. Remove one or other of the &amp;lt;code&amp;gt;networks&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ip2nets&amp;lt;/code&amp;gt; options to resolve the conflict.&lt;br /&gt;
&lt;br /&gt;
If there is more than one &amp;lt;code&amp;gt;networks&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ip2nets&amp;lt;/code&amp;gt; declaration defined through successive entries in one or more kernel module configuration files (i.e., multiple &amp;lt;code&amp;gt;networks&amp;lt;/code&amp;gt; declarations or multiple &amp;lt;code&amp;gt;ip2nets&amp;lt;/code&amp;gt; declarations), the last entry that is read by the module loader will be used. Make sure that there is no more than one LNet configuration defined in the &amp;lt;code&amp;gt;modprobe&amp;lt;/code&amp;gt; directory (&amp;lt;code&amp;gt;/etc/modprobe.d&amp;lt;/code&amp;gt; in RHEL and CentOS) when using this method to define LNet parameters.&lt;br /&gt;
&lt;br /&gt;
Kernel module options are read only when the kernel module is loaded, passed to the kernel by the module loader. As a consequence, changes in the configuration will not be applied until the &amp;lt;code&amp;gt;lnet&amp;lt;/code&amp;gt; module is stopped, unloaded from the kernel, and then reloaded.&lt;br /&gt;
&lt;br /&gt;
== LNet &amp;lt;code&amp;gt;networks&amp;lt;/code&amp;gt; syntax ==&lt;br /&gt;
&lt;br /&gt;
The simplest configuration has the following syntax:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
options lnet networks=&amp;quot;&amp;lt;lnd&amp;gt;&amp;lt;#&amp;gt;(&amp;lt;dev&amp;gt;)[,…]&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to add a TCP/IP (&amp;lt;code&amp;gt;socklnd&amp;lt;/code&amp;gt;) LNet NID for an Ethernet device &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
options lnet networks=&amp;quot;tcp0(eth1)&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice that the IP address is not mentioned in the configuration, only the device name. The syntax is simple and readable.&lt;br /&gt;
&lt;br /&gt;
The next example creates an RDMA verbs (&amp;lt;code&amp;gt;o2iblnd&amp;lt;/code&amp;gt;) LNet interface:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
options lnet networks=&amp;quot;o2ib0(ib0)&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If there is more than one network interface on the host that will carry LNet traffic, additional interfaces can be added to the &amp;lt;code&amp;gt;networks&amp;lt;/code&amp;gt; variable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
options lnet networks=&amp;quot;tcp0(eth1),o2ib0(ib0),o2ib1(ib1)&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above example configures three LNet interfaces: a &amp;lt;code&amp;gt;socklnd&amp;lt;/code&amp;gt; NID on &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;o2iblnd&amp;lt;/code&amp;gt; NIDs for &amp;lt;code&amp;gt;ib0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ib1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To create a configuration where one physical interface belongs to two LNets, specify each LNet in a comma-separated format, with the same physical interface in brackets for each LNet. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
options lnet networks=&amp;quot;tcp0(eth1),tcp1(eth1)&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is not a common configuration, because its practical application is limited (both LNets will be on the same subnet and connect to the same physical interface, so there is no advantage in creating two LNets in this case).&lt;br /&gt;
&lt;br /&gt;
== LNet &amp;lt;code&amp;gt;ip2nets&amp;lt;/code&amp;gt; syntax ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;ip2nets&amp;lt;/code&amp;gt; configuration syntax makes use of regular expressions to programmatically create a host’s LNet configuration from a single global definition. The administrator creates pattern-matching rules based on the IPv4 address of the network interfaces of the target hosts, and the first matching rule is used to determine the configuration that will be applied. In this way, a single configuration file can be applied to both clients and servers across a heterogeneous network environment, and across multiple networks.&lt;br /&gt;
&lt;br /&gt;
This flexibility comes at the cost of simplicity and readability. The &amp;lt;code&amp;gt;ip2nets&amp;lt;/code&amp;gt; rules can be complex, making it difficult to interpret the effects of a rule on a given set of hosts. A syntax error introduced into the rules, such as an incorrectly scoped pattern matching expression, can have a wide-ranging, negative impact on the configuration of the entire host population, if it is distributed before the error is caught. Testing the &amp;lt;code&amp;gt;ip2nets&amp;lt;/code&amp;gt; configuration is more complex as a result. &lt;br /&gt;
&lt;br /&gt;
The general syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
options lnet ip2nets=&amp;quot;&amp;lt;lnd&amp;gt;[&amp;lt;#&amp;gt;][(&amp;lt;dev&amp;gt;)][, &amp;lt;lnd&amp;gt;[&amp;lt;#&amp;gt;][(&amp;lt;dev&amp;gt;)]] &amp;lt;pattern&amp;gt;[; …]&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each rule is separated by a semi-colon and rules are evaluated in left-to-right order when &amp;lt;code&amp;gt;lnet&amp;lt;/code&amp;gt; is started. The first match for each LNet will be applied to the configuration. Evaluation continues until all unique LNets are created or the last rule has been evaluated. This allows a single rule to define multiple NIDs for a single server, each one for a different LNet on a different network interface. &lt;br /&gt;
&lt;br /&gt;
It is simplest to illustrate how to use &amp;lt;code&amp;gt;ip2nets&amp;lt;/code&amp;gt; with an example. The following describes a configuration for two different LNets on different types of network fabric:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
options lnet ip2nets=&amp;quot;tcp0(eth1) 10.10.100.*; o2ib0(ib0) 192.168.200.*&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hosts having an IP address that matches the pattern &amp;lt;code&amp;gt;10.10.100.*&amp;lt;/code&amp;gt; will be configured with a NID on the &amp;lt;code&amp;gt;tcp0&amp;lt;/code&amp;gt; LNet, and hosts that match the &amp;lt;code&amp;gt;192.168.200.*&amp;lt;/code&amp;gt; pattern will be configured with an &amp;lt;code&amp;gt;o2ib0&amp;lt;/code&amp;gt; LNet. Should a host match both patterns, then both LNets will be configured for that host.&lt;br /&gt;
&lt;br /&gt;
The pattern-matching syntax includes numeric ranges in the format &amp;lt;code&amp;gt;[x-y]&amp;lt;/code&amp;gt;, for example &amp;lt;code&amp;gt;[2-20]&amp;lt;/code&amp;gt;. This can be further refined with a divisor to allow for stepping in the range: &amp;lt;code&amp;gt;[2-20/2]&amp;lt;/code&amp;gt; will match all of the even numbers in the range, and &amp;lt;code&amp;gt;[1-19/2]&amp;lt;/code&amp;gt; can be used to match all of the odd numbers in a range. &lt;br /&gt;
&lt;br /&gt;
In the next example, some of the hosts will use &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; while others use &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt; to connect to the LNet &amp;lt;code&amp;gt;tcp0&amp;lt;/code&amp;gt;. This configuration is most likely when there are hardware differences between systems and they are using different NICs to connect to the same subnet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
options lnet ip2nets=&amp;quot;tcp0(eth0) 10.10.100.[1-50]; tcp0(eth1) 10.10.100.[100-200]&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the interface definition is omitted, then the host interface that matches the IP address will be used. So the above example could be re-written as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
options lnet ip2nets=&amp;quot;tcp0 10.10.100.*&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If no match is found in the configuration, LNet will report an error:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
[257641.245272] LNetError: 11a-a: ip2nets does not match any local IP interfaces&lt;br /&gt;
[257641.247813] LNetError: 8881:0:(config.c:199:lnet_parse_networks()) networks string is undefined&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Contrary, perhaps, to expectations, if &amp;lt;code&amp;gt;ip2nets&amp;lt;/code&amp;gt; does not find a match, the LNet kernel module will not fall back to the &amp;lt;code&amp;gt;networks&amp;lt;/code&amp;gt; option or load a default configuration. A failure to match a pattern in the &amp;lt;code&amp;gt;ip2nets&amp;lt;/code&amp;gt; options declaration is considered to be implicit confirmation that the target system is not meant to have an LNet configuration applied.&lt;br /&gt;
&lt;br /&gt;
Here is a more complex demonstration:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
options lnet ip2nets=&amp;quot;tcp0(eth1) 10.70.207.[11,12]; \&lt;br /&gt;
    tcp0(eth2) 10.70.207.[21-24]; \&lt;br /&gt;
    tcp0 10.70.*.*&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Above, there are two hosts that will create an LNet NID on the &amp;lt;code&amp;gt;eth1&amp;lt;/code&amp;gt; device, four hosts using &amp;lt;code&amp;gt;eth2&amp;lt;/code&amp;gt;, and the remainder of the &amp;lt;code&amp;gt;10.70/16&amp;lt;/code&amp;gt; network will create an LNet NID for the &amp;lt;code&amp;gt;tcp0&amp;lt;/code&amp;gt; LNet on the first interface presented by the operating system, provided that the interface has an IPv4 address on the &amp;lt;code&amp;gt;10.70/16&amp;lt;/code&amp;gt; subnet.&lt;br /&gt;
&lt;br /&gt;
This last item requires further explanation. The syntax of configuration entry &amp;lt;code&amp;gt;“tcp0 10.70.*.*”&amp;lt;/code&amp;gt; is ambiguous and open to misinterpretation by a human reader. Contrary to expectation, this does not mean &amp;#039;&amp;#039;“configure the interface that matches the pattern &amp;lt;code&amp;gt;10.70.*.*&amp;lt;/code&amp;gt; as LNet &amp;lt;code&amp;gt;tcp0&amp;lt;/code&amp;gt;”&amp;#039;&amp;#039;. It is in fact far more specific. It means &amp;#039;&amp;#039;“configure the first interface detected by the host operating system as LNet &amp;lt;code&amp;gt;tcp0&amp;lt;/code&amp;gt; if it also matches the pattern &amp;lt;code&amp;gt;10.70.*.*&amp;lt;/code&amp;gt;&amp;quot;&amp;#039;&amp;#039;. If either condition is false, then no LNet NID will be configured.&lt;br /&gt;
&lt;br /&gt;
One can also mix LNDs in the &amp;lt;code&amp;gt;ip2nets&amp;lt;/code&amp;gt; syntax, should this be required:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
options lnet ip2nets=&amp;quot;o2ib0(ib0) 192.168.207.[11,12]; \&lt;br /&gt;
    o2ib0(ib2) 192.168.207.[21-24]; \&lt;br /&gt;
    tcp0 10.70.*.*&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comments are also supported, but take care with placement of the comment relative to the semi-colon that separates rules. A comment marker instructs the parser to ignore everything between the comment marker and the next semi-colon in the string, or the end of the string, whichever comes first. If a comment is started after a semi-colon, that could have the effect of causing the parser to ignore an important part of the configuration.&lt;br /&gt;
&lt;br /&gt;
For example, the following syntax is correct:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow-x:auto;&amp;quot;&amp;gt;&lt;br /&gt;
options lnet ip2nets=&amp;quot;tcp0(eth1) 10.70.207.[11-12] # MGS/MDS; \&lt;br /&gt;
    tcp0(eth2) 10.70.207.[21-24] # OSS; \&lt;br /&gt;
    tcp0 10.70.*.* # Everything else&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the next example, the second line will be ignored because the comment marker (#) is placed after the semi-colon, causing the next line to be treated as comment text, not configuration syntax:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;overflow-x:auto;font-family:monospace, Courier;color:black;background-color:#f9f9f9;border:1px solid #ddd;border-radius:2px;padding:1px 4px&amp;quot;&amp;gt;&lt;br /&gt;
options lnet ip2nets=&amp;quot;tcp0(eth1) 10.70.207.[11-12] ; &amp;lt;span style=&amp;quot;background:yellow&amp;quot;&amp;gt;# MGS/MDS \&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;background:yellow&amp;quot;&amp;gt;    tcp0(eth2) 10.70.207.[21-24] # OSS; \&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;background:yellow&amp;quot;&amp;gt;    tcp0 10.70.*.* # Everything else&amp;lt;/span&amp;gt;&amp;quot;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
All of the text highlighted in the example will be treated as a comment.&lt;br /&gt;
&lt;br /&gt;
[[Category:Lustre Networking (LNet)]]&lt;/div&gt;</summary>
		<author><name>Malcolm</name></author>
	</entry>
</feed>