Processing the Configuration

Committing a configuration is not the final step in configuring an application.

The information must still pass through additional phases which depend on other JUNOS processes, as well as the application's data component. These parts function independently of the management component, and, thus, require coordination which could affect the management component's output.

The application logs messages using syslog as the configuration is loaded in these phases, to allow the user to observe the progress. The EQUILIBRIUM_MGMT log tag is used so that messages from this system can easily be filtered for viewing.

The management component parses the configuration hierarchy introduced in Configuring the Application. The configuration under a service belongs to only one service set and is tied to a service set ID, which the data component receives with every packet.

Processing Steps

The service set IDs might not be available at the time of the configuration load. Furthermore, the data component might not be available and connected. To handle these challenges, the management component passes the configuration through three steps:

  1. Loading the configuration data: The management component examines every service configuration and stores it with an action of added, changed, or deleted. The configuration data is contained in this list and is held until the service set resolution blob (SSRB) is available.

    The DAX and patricia tree function calls to do this task are in the functions equilibrium_config_read() and parse_service_set() in the file equilibrium-mgmt_config.c.

  2. Mapping the service set names to service set IDs using the information in the SSRB. The code to do this is in the function add_ssrb() in the file equilibrium-mgmt_config.c. The public blob, defined in the junos_kcom_pub_ssrb_t structure, contains the mapping.

    The SSRB is published by another JUNOS process that is responsible for services. The management component does not need to communicate with the other process because the SSRB is passed through the JUNOS kernel and the management component will have registered with the kernel for notifications.

  3. Processing the configuration data and sending it to the data component with any pertinent actions. The function call to notify_server_update() that sends a message to the data component is in the update_server() function in the file equilibrium-mgmt_config.c. The notify_server_update() function is defined in the file equilibriummgmt_conn.c.

    The data component notifies the management component that it is up and ready for configuration; this could already be the case if the data component is not in the process of starting for the first time.

Communicating Configuration Changes

The data component receives the configuration data from the management component with an action of added, changed, or deleted.

The code to handle messages between the management and data components is in the files equilibrium-mgmt_conn.c and equilibrium-data_conn.c (and the associated header files). The message types are defined in the file equilibrium_ipc.h, in the shared/h/sync directory.

Each message type defined in the mgmt_client_message() function in equilibrium-data_conn.c has an associated function call in the configuration code in equilibrium-data_config.c. If a function call involves changes in the monitoring manager, there is also an associated call in equilibrium-data_monitor.c

When a configuration is added, it affects only the stored configuration state applied to new sessions. However, changes and deletions can cause the session entry information in the lookup table to become stale; therefore, the configuration manager removes session entries that contain deleted or changed configuration data. As a result, a configuration change with renames and deletes can affect existing flows and ongoing HTTP sessions.

Load Balancing the Data

2007-2009 Juniper Networks, Inc. All rights reserved. The information contained herein is confidential information of Juniper Networks, Inc., and may not be used, disclosed, distributed, modified, or copied without the prior written consent of Juniper Networks, Inc. in an express license. This information is subject to change by Juniper Networks, Inc. Juniper Networks, the Juniper Networks logo, and JUNOS are registered trademarks of Juniper Networks, Inc. in the United States and other countries. All other trademarks, service marks, registered trademarks, or registered service marks are the property of their respective owners.
Generated on Sun May 30 20:26:47 2010 for Juniper Networks Partner Solution Development Platform JUNOS SDK 10.2R1 by Doxygen 1.4.5