Version 0.18, 2009-Mar-17
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, 4.3, and 4.4 describe the objects to be stored in the repository, and section 4.5 defines the organization of the repository data 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) |
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 initially only support physical links; support for tunnels will be added soon after integration, and support for additional link types should follow after that.
| Property | Property Type |
|---|---|
| Activation mode | uint64 (enum values) |
| Enabled | boolean |
| Priority group | uint64 |
| Priority mode | uint64 (enum values) |
| MAC Address | string |
| Autopush | string list (list of modules) |
| MTU | uint64 |
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 |
| Enabled | true |
| Priority group | 1 (for 802.3 links) or 0 (for 802.11 links) |
| Priority group mode | EXCLUSIVE |
| MAC Address | hardware-assigned |
| Autopush | no value |
| MTU | 1500 |
| Property | Value |
|---|---|
| NCU Type | IP |
| NCU Class | IP |
| Parent NCP | "automatic" |
| 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 properties that are global and generally relate to higher-layer networking configuration.
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. Three pre-defined locations will be supplied: the NoNet 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.2, 4.2.3 and 4.2.4.
| Property | Property Type |
|---|---|
| Activation mode | uint64 (enum values) |
| Enabled | boolean |
| Conditions | list of strings |
| default-domain | string |
| nameservices | uint64 list (enum values) |
| nameservices-config-file | string |
| dns-nameservice-configsrc | uint64 list (enum values) |
| dns-nameservice-domain | string |
| dns-nameservice-servers | ip address list |
| dns-nameservice-search | string |
| nis-nameservice-configsrc | uint64 list (enum values) |
| nis-nameservice-servers | ip address list |
| ldap-nameservice-configsrc | uint64 list (enum values) |
| ldap-nameservice-servers | ip address list |
| 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 |
| ipsecpolicy-config-file | string |
| svcs-enable | string list |
| svcs-disable | string list |
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-mode | SYSTEM |
| enabled | modified as needed by the system |
| conditions | n/a |
| default-domain | n/a |
| nameservices | DNS |
| nameservices-config-file | "/etc/nsswitch.dns" |
| dns-nameservice-configsrc | DHCP |
| dns-nameservice-domain | n/a |
| dns-nameservice-servers | n/a |
| dns-nameservice-search | n/a |
| nis-nameservice-configsrc | n/a |
| nis-nameservice-servers | n/a |
| ldap-nameservice-configsrc | n/a |
| ldap-nameservice-servers | n/a |
| hosts-file |
"/etc/nwam/loc/Automatic/hosts", 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 | "" |
| ipsecpolicy-config-file | "" |
| svcs-enable | "" |
| svcs-disable | "" |
This location will be applied when none of the local interfaces have an IP address assigned, and as an interim location when NWAM is transitioning between user-defined locations.
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 | "NoNet" |
| activation-mode | SYSTEM |
| enabled | modified as needed by the system |
| conditions | n/a |
| default-domain | n/a |
| nameservices | FILES |
| nameservices-config-file | "/etc/nsswitch.files" |
| dns-nameservice-configsrc | n/a |
| dns-nameservice-domain | n/a |
| dns-nameservice-servers | n/a |
| dns-nameservice-search | n/a |
| nis-nameservice-configsrc | n/a |
| nis-nameservice-servers | n/a |
| ldap-nameservice-configsrc | n/a |
| ldap-nameservice-servers | n/a |
| hosts-file |
"/etc/nwam/loc/NoNet/hosts", 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 |
"/etc/nwam/loc/NoNet/ipf.conf", which will be delivered by the NWAM project and will consist of ipfilter rules which block all non-loopback traffic except the minimum required by NWAM to do network configuration, such as DHCP. |
| ipfilter-v6-config-file |
"/etc/nwam/loc/NoNet/ipf6.conf", which will be delivered by the NWAM project and will consist of ipfilter rules as described for ipfilter-config-file. |
| ipnat-config-file | n/a |
| ippool-config-file | n/a |
| ike-config-file | n/a |
| ipsecpolicy-config-file | n/a |
| svcs-enable | n/a |
| svcs-disable | n/a |
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 mode | uint64 (enum values) |
| Enabled | boolean |
| Conditions | list of strings |
| FMRI | string |
| Start Method | string |
| Stop Method | string |
NWAM maintains a global list of known wireless networks; this list is used to determine the order in which NWAM tries to connect to available wireless networks. If a wireless network that exists in the Known WLAN list is available, NWAM will automatically connect to that network; if two or more Known networks are available, NWAM connects to the wireless network with the highest priority (greatest number).
Any new wireless network that NWAM connects to will be added to the top (current highest priority) of the Known WLAN list.
The properties of a Known WLAN are defined in the following table.
| Property | Type |
|---|---|
| Name (ESSID) | string |
| BSSIDs | list of strings |
| priority | uint64 |
| keyname | list of strings |
As previously noted, Known WLANs are selected in priority order; the priority is given by an unsigned integer. A larger number indicates higher priority.
NWAM will automatically add WLANs to the list when it connects to them. When it does this, it will add the new WLAN at the highest priority; that is, the default behavior will be to prefer WLANs that have been connected to more recently.
Known WLANs may not share the same priority. If a WLAN is added via the API with the same numeric priority value as an existing WLAN entry, the existing entry will be shifted down in priority; this change will further shift the rest of the list as needed to avoid shared priorities.
One or more keynames may also be associated with a Known WLAN. This allows the
user to create their own keys (using dladm create-secobj and
associate those keys with WLANs by adding the secure object names to the Known
WLAN keyname property.
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, ENMs in /etc/nwam/enm.conf,
and Known WLANs in /etc/nwam/known-wlan.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 |
| 0.13 | 2008-Dec-23 | update based on implementation experience: activation props are specific to link ncus; remove ncu over/under props; tunnel support and extensible locations are post-phase-1; update location startup details; remove ipseckey-config-file from location props; just one domainname prop (not per-ns); update NoNet location details |
| 0.14 | 2009-Jan-07 | add Known WLAN list details |
| 0.15 | 2009-Jan-27 | miscellaneous clean-up |
| 0.16 | 2009-Feb-13 | Design review feedback; more implementation changes |
| 0.17 | 2009-Feb-27 | more tweaks of nameservice properties |
| 0.18 | 2009-Mar-17 | pre-psarc review feedback |