This directory contains multiple YAML topology description files to run `RIFT` binaries. 
**The schema is bound to change anytime** but this file keep documentation of the allowed 
format below. We use an intuitive, loose format. The multiplicity is presented as follow: 

    {1}  - exactly one
    {+}  - one or more
    {?}  - at most one
    {*}  - zero or more
    X    - may not be supported in all released versions

    # comments
    {1} const:
    {1}   lie_mcast_address: <IPv4 multicast address in dotted notation, e.g. 224.0.1.150>
    {?}   lie_mcast_port: <UDP Port used by default to send LIEs>
    {1} shards: 
        {+} - id: <64-bit integer shard identifier> 
            {1}   nodes: 
                {*}   - name: <name string> 
                {1}      level: [<numerical level> | undefined | leaf | leaf-2-leaf | superspine ]  
                {1}      systemid: <64-bit integer>  
                {1}      interfaces:
                {*}         - name: <interface name string>
                {?}           bandwidth: <in megabit units, if not given, schema default is used>
                {?}           metric: <positive numerical metric > 0, if not given, schema default>
                {?}           tx_lie_port: <UDP Port used by default to send LIEs>
                {?}           rx_lie_port: <UDP Port used by default to receive LIEs>
                {?}           flood_server_port: <UDP Port used by default to receive TIEs>  
                {?}X          state_thrift_services_port: <TCP port to run state services>
                {?}X          config_thrift_services_port: <TCP port to run config services>
                {?}      v4prefixes: 
                {*}         - address: <IPv4 address in dotted notation, e.g. 1.1.1.0>
                {1}           mask: <numeric mask length>
                {1}           metric: <positive numerical metric > 0>
    
ZTP is possible via the level clause.

The file does not support v6 addressing so far albeit it is implemented in the protocol and tested. 
 
When running sharding observe that you still have to keep UDP ports unique given 
multicast scope. Machines must be one within TTL scope of one from each other.

YAML topology or sharding does NOT support binding to specific physical 
interfaces on reception and hence separates "interfaces" by matching the UDP port 
pairs.  