1 of 4

experience with XML to vty/Quagga/FRR

XML -> 6WIND management system -> vty

Matthieu@6WIND

2 of 4

Configuring FRR from 6WIND management system

  • Step 1: generate vty commands from XML tree:

router bgp 1

neighbor 1.0.0.1 remote-as 2

  • Step 2: directly send commands to the bgpd daemon over its vty socket

!

router bgp 1

neighbor 1.0.0.1 remote-as 2

!

<bgp>

<asn>1</asn>

<bgp-neighbor>

<neighbor>1.0.0.1</neighbor>

<remote-as>2</remote-as>

</bgp-neighbor>

</bgp>

6WIND CLI*:

bgpd conf:

* https://doc.6wind.com/turbo-router/user-guide/cli/routing/bgp/bgp4/configuration.html

3 of 4

Drawback of this approach

  • Issue 1: command dependencies / ordering

  • Issue 2: cannot handle routing daemon’s feedback on delivered commands on vty sockets

(XML->vty management system doesn’t know if a command has been properly applied or if an error occurred)

router bgp 1

neighbor 1.0.0.1 timers connect 3

neighbor 1.0.0.1 remote-as 2

<bgp>

<asn>1</asn>

<bgp-neighbor>

<timers-connect>3</timers-connect>

<neighbor>1.0.0.1</neighbor>

</bgp-neighbor>

<bgp-neighbor>

<neighbor>1.0.0.1</neighbor>

<remote-as>2</remote-as>

</bgp-neighbor>

</bgp>

!

router bgp 1

neighbor 1.0.0.1 remote-as 2

!

!

router bgp 1

neighbor 1.0.0.1 remote-as 2

neighbor 1.0.0.1 timers connect 3

!

4 of 4

Going with Yang

  • The model will describe the routing objects instead of a command list
  • Make a FRR importable Yang using ‘groupings’. 6WIND has its own Yang management system which would ideally import the FRR Yang.
  • Need for an API to configure FRR, which should be the only entry point (used by vtysh to ensure it provides the same services: show, clear, configuration…)

  • How to detect that a configuration is valid?
    • Before apply: Yang model will help
    • After being sent to FRR: check that a configuration was applied?

Yang

vtysh

API configuration