Commit Graph

14 Commits

Author SHA1 Message Date
Donald Sharp
7c8ff89e93 Multi-Instance OSPF Summary
——————————————-------------

- etc/init.d/quagga is modified to support creating separate ospf daemon
  process for each instance. Each individual instance is monitored by
  watchquagga just like any protocol daemons.(requires initd-mi.patch).

- Vtysh is modified to able to connect to multiple daemons of the same
  protocol (supported for OSPF only for now).

- ospfd is modified to remember the Instance-ID that its invoked with. For
  the entire life of the process it caters to any command request that
  matches that instance-ID (unless its a non instance specific command).
  Routes/messages to zebra are tagged with instance-ID.

- zebra route/redistribute mechanisms are modified to work with
  [protocol type + instance-id]

- bgpd now has ability to have multiple instance specific redistribution
  for a protocol (OSPF only supported/tested for now).

- zlog ability to display instance-id besides the protocol/daemon name.

- Changes in other daemons are to because of the needed integration with
  some of the modified APIs/routines. (Didn’t prefer replicating too many
  separate instance specific APIs.)

- config/show/debug commands are modified to take instance-id argument
  as appropriate.

Guidelines to start using multi-instance ospf
---------------------------------------------

The patch is backward compatible, i.e for any previous way of single ospf
deamon(router ospf <cr>) will continue to work as is, including all the
show commands etc.

To enable multiple instances, do the following:

     1. service quagga stop
     2. Modify /etc/quagga/daemons to add instance-ids of each desired
        instance in the following format:
        ospfd=“yes"
        ospfd_instances="1,2,3"
	assuming you want to enable 3 instances with those instance ids.
     3. Create corresponding ospfd config files as ospfd-1.conf, ospfd-2.conf
        and ospfd-3.conf.
     4. service quagga start/restart
     5. Verify that the deamons are started as expected. You should see
        ospfd started with -n <instance-id> option.
     	ps –ef | grep quagga
     	With that /var/run/quagga/ should have ospfd-<instance-id>.pid and
	ospfd-<instance-id>/vty to each instance.
     6. vtysh to work with instances as you would with any other deamons.
     7. Overall most quagga semantics are the same working with the instance
     	deamon, like it is for any other daemon.

NOTE:
     To safeguard against errors leading to too many processes getting invoked,
     a hard limit on number of instance-ids is in place, currently its 5.
     Allowed instance-id range is <1-65535>
     Once daemons are up, show running from vtysh should show the instance-id
     of  each daemon as 'router ospf <instance-id>’  (without needing explicit
     configuration)
     Instance-id can not be changed via vtysh, other router ospf configuration
     is allowed as before.

Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
2015-05-19 18:03:42 -07:00
Denis Ovsienko
cbde15513b babeld: 3 more timing statements in config text
This commit makes the following lines visible in running-config text,
when respective intervals are configured to non-default values:

* babel hello-interval
* babel update-interval
* babel resend-delay
2012-03-25 17:06:54 +01:00
Denis Ovsienko
a14ef5eecc babeld: justify "running-config" meaning in CLI
The primary focus of this commit is to make "show running-config"
command display more current configuration, including some of the bits
previously seen in the output of "show babel running-config". Besides
that, the following commands were renamed for consistency with the
syntax of other components:

"debug *" to "debug babel *" (and moved to top level)
"show babel running-config" to "show babel parameters"

* babel_interface.c
  * show_babel_running_config(): rename to show_babel_parameters(),
    update syntax pattern, don't call show_babeld_configuration()
  * babel_if_init(): update respectively
  * babel_enable_if_config_write(): new VTY helper for static
    babel_enable_if
* babel_interface.h: add extern declaration
* babel_main.c: unset all debug options by default
  * show_babel_main_configuration(): remove debug options decoder
* babel_zebra.c
  * babel_debug(): rename to debug_babel(), update syntax pattern
  * no_babel_debug(): rename to no_debug_babel(), update syntax pattern
  * babelz_zebra_init(): update respectively
  * debug_babel_config_write() new VTY helper for static debug_type
* babel_zebra.h: add extern declaration
* babeld.c
  * babel_config_write(): add the code to output "debug babel *",
    "router babel", "redistribute *" and "network *" statements
  * show_babeld_configuration(): dismiss
* babeld.h: remove extern declaration
* babeld.texi: update for renamed commands
* babeld.conf.sample: idem, add debug statements block
2012-03-25 17:06:54 +01:00
Juliusz Chroboczek
c428edba5f babeld: vty commands (hello-interval, update-interval, resend-delay). 2012-03-25 17:06:54 +01:00
Juliusz Chroboczek
b58871ee4d babeld: remove port and group setting commands.
They didn't work anyway, since they're called too late.
2012-03-25 17:06:54 +01:00
Juliusz Chroboczek
31e2a19fd2 babeld: refactor filtering stubs.
Factorise the common parts of the in/out filtering functions.  This also
fixes a bug with filtered out routes, which in babeld are signalled by
a filter returing INFINITY, not -1.
2012-03-25 17:06:53 +01:00
Juliusz Chroboczek
38846de1fd babeld: Error handling and tweaks for babeld commands. 2012-03-25 17:06:53 +01:00
Matthieu Boutier
6939454359 babeld: state-file was loaded too early. Initial seqno too. 2012-03-25 17:06:53 +01:00
Matthieu Boutier
c35fafdf88 babeld: babelz merge.
Babelz is the last version of the stand-alone babel daemon. In
particular, it use multiple channels to diminuate
interferences. Please refer to this one for more details.
2012-03-25 17:06:53 +01:00
Matthieu Boutier
6dfeb3f6cf babeld: fix bug due to v4mapped addresses. 2012-03-25 17:06:53 +01:00
Matthieu Boutier
3f031ed536 babeld: fix commands informations messages. 2012-03-25 17:06:52 +01:00
Matthieu Boutier
d3351d1ebf babeld: add command: "show_babel_running_config". 2012-03-25 17:06:52 +01:00
Denis Ovsienko
3dbda0ceeb babeld: address some compilation warnings
Including system headers is not necessary with zebra.h included and
sometimes results in "__ASSERT_FUNCTION redefined" compilation warning.

* babeld.c
  * babel_distribute_update_interface(): make static
* babel_interface.c
  * interface_config_write(): unused 'babel_ifp'
  * don't include system headers
* message.c
  * send_request(): unused 'babel_ifp'
  * send_multihop_request(): idem
  * don't include system headers
* route.c: don't include system headers
* xroute.c: idem
* source.h: newline at EOF
* message.h: idem
2012-03-25 17:06:52 +01:00
Paul Jakma
5734509c05 babeld: Initial import, for Babel routing protocol.
* Initial import of the Babel routing protocol, ported to Quagga.
* LICENCE: Update the original LICENCE file to include all known potentially
  applicable copyright claims.  Ask that any future contributors to babeld/
  grant MIT/X11 licence to their work.
* *.{c,h}: Add GPL headers, in according with the SFLC guidance on
  dealing with potentially mixed GPL/other licensed work, at:

  https://www.softwarefreedom.org/resources/2007/gpl-non-gpl-collaboration.html
2012-03-25 17:06:51 +01:00