Complex, end-to-end network services are set up via the configuration method: each component has a finite number of configuration parameters each of which is set to definite values. End-to-end 
network service requirements can be on 
connectivity, security, performance and fault-tolerance. A number of subsidiary requirements are created that constrain, for example, the protocols to be used, and the logical structures and associated policies to be set up at different protocol 
layers. By performing different types of reasoning with these requirements, different configuration tasks are accomplished. These include configuration synthesis, configuration error diagnosis, configuration error fixing, reconfiguration as requirements or components are added and deleted, and requirement 
verification. A method of performing 
network configuration management by model finding formalizes and automates such reasoning using a logical 
system called 
Alloy. Given a first-order logic formula and 
a domain of interpretation, 
Alloy tries to find whether the formula is satisfiable in that domain, i.e., whether it has a model. 
Alloy is used to build a Requirement 
Solver that takes as input a set of network components and requirements upon their configurations and determines component configurations satisfying those requirements. This Requirement 
Solver is used in different ways to accomplish the above reasoning tasks.