multiple controller functions may be competing for
resources (e.g., link bandwidth or switch table slots).
Corybantic design
supports modular composition of independent controller modules,
which manage different aspects of the network while competing for
resources. module tries to optimize one or more objective functions;
coordinate between these modules to maximize the overall value
delivered.
We contrast our work with Frenetic [8, 9] and Pyretic [18]: both
systems support composition of modules by resolving conflicts over
specific OpenFlow rules. Corybantic supports composition of
modules that might conflict over higherlevel policies and
objectives. In other words, Frenetic, Pyretic, and all the prior
work that we know of, aims at better ways to get the network to do
what you want it to do; Corybantic, in contrast, is aimed at deciding
what you want it to do. As a consequence, Corybantic operates at a
higher layer of the controller stack, and is mostly complementary to
prior work.
Corybantic sidesteps the constrained multi-objective optimization problem
converts a multi-objective problem into a single-objective problem
by expressing objectives in a common currency