Version 0.12, 2008-Sep-29
NWAM profiles will be stored persistently as files under
/etc/nwam, as is the case in the Phase 0 implementation.
The organization of the data will be changed to better reflect the
architecture, as the Phase 0 file format was only intended to be a
simple, short-term solution.
Sections 4.1, 4.2, and 4.3 describe the objects to be stored in the repository, and section 4.4 defines the organization of the files and their formats.
The Network Configuration Profile, or NCP, defines the network configuration of a system. The NCP is composed of Network Configuration Units, or NCUs; these units represent the individual links and interfaces on the system. There are thus two types of NCUs: link and ip. Each type has a variety of classes, as discussed in the following sections.
| Property | Property Type |
|---|---|
| NCU Type | uint64 (enum values) |
| NCU Class | uint64 (enum values) |
| Parent NCP | string (name of parent) |
| Activation mode | uint64 (enum values) |
| Priority group | uint64 |
| Priority group mode | uint64 (enum values) |
| Condition | string (conditional description) |
| NCU Over | string (name of NCU) |
| NCU Under | string (name of NCU) |
Link NCUs represent datalinks. There are several different classes of datalinks: physical links (ethernet or wifi), tunnels, aggregations, vlans, vnics. In Phase 1, NWAM will support physical links and tunnels only.
| Link Class | Property | Property Type |
|---|---|---|
| All | MAC Address | string |
| Autopush | string list (list of modules) | |
| MTU | uint64 | |
| Tunnel | Tunnel type | uint64 (enum values) |
| Tunnel source address | v4 or v6 address | |
| Tunnel destination address | v4 or v6 address | |
| ESP Encryption Algorithm | string (encr alg) | |
| ESP Authentication Algorithm | string (auth alg) | |
| AH Authentication Algorithm | string (auth alg) |
IP NCUs represent an instance of IP plumbed on a datalink. In addition to the basic IP instance, there are several classes of IP NCUs: IPMP group and vni. NWAM Phase 1 will only support basic IP instances.
| Property | Property Type |
|---|---|
| IP Version | uint64 (enum values, multivalued) |
| IPv4 Address Source(s) | uint64 (enum values, multivalued) |
| IPv4 Static Address(es) | v4 address (multivalued) |
| IPv6 Address Source(s) | uint64 (enum values, multivalued) |
| IPv6 Static Address(es) | v6 address (multivalued) |
The automatic NCP will consist of one NCU for each physical link discovered in the system, and one IP NCU plumbed on each link. The automatic NCP will change dynamically upon insertion of additional physical links; as new links are inserted, a link NCU and corresponding IP NCU will be created for each new link. The following table defines the values that will be assigned to each NCU property.
| Property | Value |
|---|---|
| NCU Type | LINK |
| NCU Class | PHYS |
| Parent NCP | "automatic" |
| Activation mode | PRIORITIZED |
| Priority group | 1 (for 802.3 links) or 0 (for 802.11 links) |
| Priority group mode | EXCLUSIVE |
| Condition | n/a |
| NCU Over | IP NCU name |
| NCU Under | no value |
| MAC Address | hardware-assigned |
| Autopush | no value |
| MTU | 1500 |
| Property | Value |
|---|---|
| NCU Type | IP |
| NCU Class | IP |
| Parent NCP | "automatic" |
| Activation mode | CONDITIONAL |
| Priority group | n/a |
| Priority group mode | n/a |
| Dependency | "link:<my_name>" |
| NCU Over | no value |
| NCU Under | link NCU name |
| IP Version | IPv4, IPv6 |
| IPv4 Address Source | DHCP |
| IPv4 Static Address | no value |
| IPv6 Address Source | DHCPv6, AUTOCONF |
| IPv6 Static Address | no value |
The Location is a profile of system-wide network configuration information, which is applied once the basic network configuration has been established. Only one Location is active at a time; before a new Location is enabled, settings from the previous Location are removed.
A Location is made up of two types of attributes:
These attributes are discussed in more detail in the Location page of this specification. The property types and values that make up a stored location in the repository are outlined in sections 4.2.1 and 4.2.2. Three pre-defined locations will be supplied: the No-Net location, which will be applied when no network interfaces are available; the Automatic location, which will be applied when no other locations are available that match the current conditions; and the Legacy location, which will be a snapshot of the existing settings when NWAM performs a cold start. The property values that make up each of these locations are defined in sections 4.2.3, 4.2.4 and 4.2.5.
| Property | Property Type |
|---|---|
| Activation | uint64 (enum values) |
| Condition | string |
| nameservice-discover | boolean |
| nameservices | uint64 list (enum values) |
| nameservices-config-file | string |
| dns-nameservice-servers | ip address list |
| dns-nameservice-domain | string |
| dns-nameservice-search | string |
| nis-nameservice-servers | ip address list |
| nis-nameservice-domain | string |
| nisplus-nameservice-servers | ip address list |
| nisplus-nameservice-domain | string |
| ldap-nameservice-servers | ip address list |
| ldap-nameservice-domain | string |
| hosts-file | string |
| nfsv4-domain | string |
| ipfilter-config-file | string |
| ipfilter-v6-config-file | string |
| ipnat-config-file | string |
| ippool-config-file | string |
| ike-config-file | string |
| ipseckey-config-file | string |
| ipsecpolicy-config-file | string |
| svcs-enable | string list |
| svcs-disable | string list |
Network-related SMF services may specify properties which should be included in an NWAM location. NWAM will discover those properties by walking all SMF services and checking for a property indicating that that service has specified an extensible property. Extensible properties are described in more detail in section 3.2 of the Location page of this specification.
For each extensible property, two properties will be added to the set of location properties, as defined in the table below.
| Property | Property Type |
|---|---|
| <prop_name> | <prop_type> |
| <prop_name>_fmri | string |
The name of the first property is the name of the property itself, as specified in the extensible property template in the defining service, and the type of that property is the type specified in that template. The second property is the property name with "_fmri" appended; it is a string, and identifies the service to which this property belongs. Given the property name and service fmri, the rest of the property template can be retrieved from the specifying service.
This is the default location; i.e. it will be applied when no other location has conditions that are met. This is identified by
This location may be modified by the user; upon the first load of its values via the API, a read-only copy will be saved, which will be available if the user chooses to restore defaults.
| Property | Property Value |
|---|---|
| name | "Automatic" |
| activation | DEFAULT |
| condition | n/a |
| nameservice_discover | true |
| nameservices | n/a |
| nameservices-config-file | n/a |
| dns-nameservice-servers | n/a |
| dns-nameservice-domain | n/a |
| dns-nameservice-search | n/a |
| nis-nameservice-servers | n/a |
| nis-nameservice-domain | n/a |
| nisplus-nameservice-servers | n/a |
| nisplus-nameservice-domain | n/a |
| ldap-nameservice-servers | n/a |
| ldap-nameservice-domain | n/a |
| hosts-file |
"/etc/inet/hosts.default", which will be delivered by the NWAM project and will consist of two entries:
127.0.0.1 localhost loghost
::1 localhost
|
| nfsv4-domain | n/a |
| ipfilter-config-file | "" |
| ipfilter-v6-config-file | "" |
| ipnat-config-file | "" |
| ippool-config-file | "" |
| ike-config-file | "" |
| ipseckey-config-file | "" |
| ipsecpolicy-config-file | "" |
| svcs-enable | "" |
| svcs-disable | "" |
This location will be applied when none of the local interfaces have an IP address assigned.
Like the Automatic location, this location may be modified by the user; upon the first load of its values via the API, a read-only copy will be saved, which will be available if the user chooses to restore defaults.
| Property | Property Value |
|---|---|
| name | "No-Net" |
| activation | CONDITIONAL |
| condition | "/0 is not assigned" |
| nameservice-discover | false |
| nameservices | "files" |
| nameservices-config-file | "/etc/nsswitch.files" |
| dns-nameservice-servers | n/a |
| dns-nameservice-domain | n/a |
| dns-nameservice-search | n/a |
| nis-nameservice-servers | n/a |
| nis-nameservice-domain | n/a |
| nisplus-nameservice-servers | n/a |
| nisplus-nameservice-domain | n/a |
| ldap-nameservice-servers | n/a |
| ldap-nameservice-domain | n/a |
| hosts-file |
"/etc/inet/hosts.default", which will be delivered by the NWAM project and will consist of two entries:
127.0.0.1 localhost loghost
::1 localhost
|
| nfsv4-domain | n/a |
| ipfilter-config-file | TBD |
| ipfilter-v6-config-file | TBD |
| ipnat-config-file | TBD |
| ippool-config-file | TBD |
| ike-config-file | TBD |
| ipseckey-config-file | TBD |
| ipsecpolicy-config-file | TBD |
| svcs-enable | "" |
| svcs-disable | "" |
External entities which perform their own link/IP configuration may be installed on the system. These entities are referred to as External Network Modifiers, or ENMs. Configuration performed by an ENM will not be stored as part of the persistent NWAM configuration; doing so would require that the user understand the details of how the service is configured, or that NWAM be designed with that knowledge, neither of which is practical.
Therefore NWAM will take note of externally-initiated network configuration; it will not interfere with this configuration, and in fact will use externally- initiated changes to reevaluate its Location selection criteria. However, if the NWAM service is restarted, it will revert the system to the configuration specified by the persistent NCP, tearing down any externally-initiated changes.
To enable more automatic manipulation of ENMs, NWAM provides a registry interface, allowing NWAM to enable and disable ENMs as needed. Registered ENMs will be stored in the NWAM repository in much the same way as NCUs and Locations. The properties of an ENM are defined in the following table.
| Property | Type |
|---|---|
| Name | string |
| Activation | uint64 (enum values) |
| Condition | string |
| FMRI | string |
| Start Method | string |
| Stop Method | string |
| State (set by NWAM) | uint64 (enum values) |
Configuration for each object type will be stored in a file under
/etc/nwam: NCP data in
/etc/nwam/ncp-<name>.conf (one file per NCP,
with each file entry representing an NCU), Locations in
/etc/nwam/loc.conf, and ENMs in
/etc/nwam/enm.conf. The file format will be similar
to that of /etc/dladm/datalink.conf; for example, an
entry in ncp.conf would look like
ncu_name prop0=type,val[,val];prop1=type,val[,val];
The property name is a free-form string. Property values are stored as a (type,value,[,value]) tuple; where values are of type uint64, the integer value will be stored. It is not intended that these files be editable by hand.
| Revision | Date | Changes |
|---|---|---|
| 0.1 | 2007-Sep-05 | initial draft |
| 0.2 | 2007-Dec-03 | system-wide config profiles are now called Locations |
| 0.3 | 2008-Feb-26 | using files rather than smf; fill in NCP/NCU/Location/ENM detail; fill in file format section |
| 0.4 | 2008-Feb-27 | update with team feedback |
| 0.5 | 2008-Mar-05 | formatting nits; add some ToDo items |
| 0.6 | 2008-Mar-12 | update automatic ncp details |
| 0.7 | 2008-Mar-31 | automatic IP NCUs will enable IPv6 |
| 0.8 | 2008-Apr-25 | automatic NCP details moved to NCP page |
| 0.9 | 2008-Apr-28 | merge/reorganize data in repository and location pages |
| 0.10 | 2008-Sep-09 | update property lists |
| 0.11 | 2008-Sep-23 | fix location file name |
| 0.12 | 2008-Sep-29 | fix a few more details |