Configuration Management on the SSR
The following sections describe the various configurations available to you on your SSR, the basics of the configuration workflow, and important things to consider when managing your SSR devices.
Factory Default Configuration
When a new node is initialized, it is given the factory default configuration. The factory defaults include the configuration attributes given to it during initialization (the router name and node name, and a high availability counterpart node if applicable) as well as various configuration elements that are part of the global data of an Authority – session-type elements that represent common network protocols (e.g., HTTP, HTTPS, SSH), and service-class elements for common DSCP values.
By default, these factory default elements are not displayed when viewing the configuration through the PCLI. To view the factory default settings, add the keyword "verbose" at the end of a show configuration statement; e.g., show config running verbose. Factory default elements are always displayed when viewing the configuration through the GUI.
To restore an SSR system back to its factory defaults, use the restore config factory-default command from the PCLI.
Generated Configuration
Occasionally, the Conductor generates configuration on behalf of the administrator; this is typically done to facilitate some configuration steps that would otherwise be somewhat onerous or prone to error. When the Conductor generates the configuration on behalf of an administrator, it includes a generated setting in each configuration element it has generated, and sets the value to true.
The Conductor regenerates this configuration each time the configuration is committed. This ensures that the generation properly reflects any changes made to the rest of the configuration from which the generated configuration was derived. When committing configuration, the Conductor first deletes all configuration that has the generated flag set to true.
If you have made any changes to configuration elements that were originally generated by the Conductor, but neglected to set the generated flag to false, those elements will be discarded and regenerated. Thus, it is mandatory that you set the generated flag to false before modifying any generated configuration to make it persistent.
Forcing the Generation of Configuration
The Force Configuration Generation command (selected from the GUI or using create config autogenerated from the PCLI) generates and stages the configuration changes into the current candidate configuration. This allows you to validate, inspect, make edits, and commit these changes as part of the work flow.

Running Configuration
The running configuration is the set of configuration elements that the SSR is currently using to make routing decisions, forward traffic, enforce policy, etc. The SSR loads the running configuration when the software starts; this configuration is either the one that it retrieves at start from its conductor, or from its local disk (in the case where it is either unmanaged, or unable to reach its conductor).
Candidate Configuration
Configuration concurrency was introduced in version 5.6. This feature creates a candidate configuration for each user the first time they edit their configuration, allowing multiple administrators to modify the running configuration at the same time.
Beginning with 5.3, the candidate configuration is not saved to disk and will not persistent through reboot. It is strongly recommended that you export candidate configurations occasionally when making large or important changes to avoid losing your work.
Each user makes edits locally to a candidate configuration. When they have completed their edits locally, they commit the config to the conductor and changes are merged into the running configuration. As other users complete and commit their changes, the updated running configuration is compared to each candidate configuration for conflicts. If none exist, the local changes are committed to the running configuration on the conductor.
How it Works
Consider the case of User A and User B:
- Both users access the same conductor, open the configuration, and begin making changes.
- User A makes three separate changes to the candidate configuration. User A’s changes are kept local.
- User B makes one change to the candidate configuration. User B’s changes are kept local.
When User A commits their changes, the changes applied to their candidate configuration are validated and then merged into the running configuration. The candidate configuration from User B is now behind the running configuration by User A’s three changes.
User B has one change of their own. The validation and commit process compares the updated running configuration to User B's candidate configuration for conflicts. If none are found, then the local changes are committed to the running configuration on the conductor.
If the validation operation encouters conflicts, an error message containing the details of the conflict is displayed, and the conflicts are deleted from the candiate config. All non-conflicting changes are preserved in the candidate configuration.
Conflict Resolution
In the example below, User B changed the description of the router Router, but User A had already deleted that router, resulting in the conflict.
To see the configuration changes that were preserved in the candidate despite the conflicts, run compare-config.
The following is an example of a configuration conflict as seen in the PCLI:
*admin@conductor-east-1.RTR_EAST_CONDUCTOR# commit force
Validating, then committing...
% Error: Failed to commit candidate configuration because another user
has committed conflicting changes. The following changes have been lost,
run 'compare config' to see changes that were preserved:
1. failed to apply merge configuration change:
config
authority
router Router
name Router
description hello
exit
exit
exit
In this case, using compare-config displays a non-coflicting change that remains in the candidate, and can be committed.
*admin@conductor-east-1.RTR_EAST_CONDUCTOR# compare config
config
authority
name NewAuthority
exit
exit
GUI Considerations
Juniper strongly suggests careful configuration of users' permissions to avoid rare configuration conflicts when users concurrently make conflicting updates using the GUI. For information about user permissions, see Configuring Role-Based Access Control.
The following conflict may occur when multiple GUI users make changes to the configuration.
Scenario:
-
User A removes a peer from the configuration, and commits the change. The change has no conflicts and is accepted into the running config.
-
User B changes the description field of the peer that User A deleted. User B then commits their changes.
Rather than an error message informing User B that the peer they are editing has been deleted, the GUI accepts the information directly impacting the change to the description field, but not the entire peer. The resulting commit failure message can be cryptic, as shown below.

In this case, viewing the configuration changes as seen from the command line, the discrepancies are visible.
config
authority
router RTR_EAST_COMBO
name RTR_EAST_COMBO
peer bluerouter <--- DELETED BY USER A
authority-name Authority
router-name bluerouter
exit
exit
exit
config
authority
router RTR_EAST_COMBO
name RTR_EAST_COMBO
peer bluerouter
name bluerouter
description "hello user was here" <--- ADDED BY USER B
exit
exit
exit
When User B commits their change, the peer, name, and description are verified to be added back into the configuration. The deleted authority-name and router-name are not found as part of the change, and therefore generate the commit failure message.
To resolve this type of conflict, the error message and candidate configuration should be reviewed with the adminstrator. They can work to identify the user who generated the conflicting changes and review the event logs to reconstruct the changes to the affected objects. Ultimately the users must determine the priority of the configuration changes and commit the result.