Introduction

Currently the configuration via lnetctl, yaml and module parameters allows only adding network interfaces by specifying an ethernet interface. The default behaviour adds the main IP address and does not consider any alias ip addresses. Internally the first available ip address found on this interface is used to set the NID. Multiple IP aliases can be defined for a single ethernet interface which creates the necessity to configure a specific IP address in combination with an interface instead of an ethernet interface. Changes in the handling of routing don't seem to be necessary.

References

LU-13642, DDN 2840

Requirements

The static and dynamic configuration of specific IP addresses shall be implemented.
The implementation shall be backward compatible to the existing implementation and interfaces.
IPV6 shall be considered.

Overview

This feature requires changes in multiple components. Mainly the lnetctl interface, the included YAML sub components and in the ksocklnd layer in the kernel as well as the lnet configuration.
The IP address is set in the LNet NID and has to set in the configuration, yaml or lnetctl. It also has to be interpreted in ksocklnd.

Dynamic configuration

lnetctl
The "lnetctl net add" command shall be able to specify the ip address of an interface in the form "lnetctl net add --net tcp1 --nid ipaddress". Equivalent to the add command the "lnetctl net del" shall allow --nid ipaddress. The handling of the the --if interface flag shall remain the same.
The present implementation requests the the IP address of the ethernet interface and sets the IP address in the NID. It doesn't consider any aliases. It shall look for IP address aliases, find the specified IP and set it instead of the main IP address in the interface.

YAML configuration
The YAML configuration shall process the IP address that is set in the NID definition. The format of the YAML configuration files stays the same. Internally the yaml interface shall parse the IP address. Import and export have to be extended for the new requirements. Internally the same lnet functionality as the command line interface is used.


Static configuration

Kernel module parameter in lnet.conf

The system uses the "networks" module parameter to specify the network and define an ethernet interface as access point. It shall be possible to specify the IP address equivalent to lnetctl. The syntax would look like "options lnet networks=tcp1(192.168.122.25)". It shall be backward compatible i.e. "options lnet networks=tcp1(eth0)" which has the standard behaviour.

Internal handling

ksocklnd
The kernel module shall parse the incoming interface description and NID and set the NID and internal structures corresponding to the specification See ksocknal_startup function.

Test environment

Test scripts shall be extended with new test cases for the new extension. Both static and dynamic test cases should be implemented.

Patches

The changes will integrated in multiple patches.


1 ksocklnd: Should not impact the existing behaviour. No additional test scripts necessary.

2 Module parameter: Changes in parameter parsing. Additional test scripts for standard behaviour and extended functionality.

3 YAML: Additional test scripts to test standard behaviour and extended functionality with test yaml configurations.

4 lnetctl: Additional test functions for "lnet net add" and "lnet net del" with standard interface specification and extended interface, IP address specification.

  • No labels