Skip to content

OFSW required OpenConfig YANG models

Sam Ribeiro edited this page Jul 14, 2020 · 9 revisions

Models

The list of OpenConfig YANG models required for operating an OpenFlow switch. Note that this list specifically enumerates the leaf nodes. When the config path is mentioned, it is implicit that the equivalent state path is also supported.

OpenFlow

https://github.com/openconfig/public/tree/master/release/models/openflow Must support the whole model. Exceptions should be communicated for assessment.

/system/openflow/controllers/controller/config/name
/system/openflow/controllers/controller/connections/connection/config/aux-id
/system/openflow/controllers/controller/connections/connection/config/priority
/system/openflow/controllers/controller/connections/connection/config/address
/system/openflow/controllers/controller/connections/connection/config/port
/system/openflow/controllers/controller/connections/connection/config/transport
/system/openflow/controllers/controller/connections/connection/config/certificate-id
/system/openflow/controllers/controller/connections/connection/config/source-interface

/system/openflow/controllers/controller/connections/connection/status/connected

/system/openflow/agent/config/datapath-id
/system/openflow/agent/config/failure-mode
/system/openflow/agent/config/backoff-interval
/system/openflow/agent/config/max-backoff
/system/openflow/agent/config/inactivity-probe

System

https://github.com/openconfig/public/tree/master/release/models/system Must support enabling and setting NTP server address.

/system/ntp/config/enabled
/system/ntp/servers/server/config/address

Must support setting the time zone name, the hostname and domain-name.

/system/clock/config/timezone-name
/system/config/hostname
/system/config/domain-name

Must support presenting the last time the switch booted.

/system/state/boot-time

Must support setting at least one username and matching password.

/system/aaa/authentication/users/user/config/username
/system/aaa/authentication/users/user/config/password

Must support setting remote syslog.

/system/logging/remote-servers/remote-server/config/host
/system/logging/remote-servers/remote-server/config/remote-port

Must support SSH.

/system/ssh-server/config/enable
/system/ssh-server/config/protocol-version
/system/ssh-server/config/timeout
/system/ssh-server/config/rate-limit
/system/ssh-server/config/session-limit

Platform

https://github.com/openconfig/public/tree/master/release/models/platform Components can be hardware components. E.g.: cpu, fan, power supply, sensor, transceiver, port, module, line card, chassis, etc.. Components can also be software. E.g.: OS. Components are categorized into well defined and enumerated types. E.g.: CPU, OS, power supply, etc.. Must support reporting various data for chassis or line cards.

/components/component/state/name
/components/component/state/type
/components/component/state/id
/components/component/state/description
/components/component/state/mfg-name
/components/component/state/mfg-date
/components/component/state/hardware-version
/components/component/state/firmware-version
/components/component/state/software-version
/components/component/state/serial-no
/components/component/state/part-no

Must support reporting individual fan speeds.

/components/component/fan/state/speed

Must support reporting individual power supply data.

/components/component/power-supply/state/enabled
/components/component/power-supply/state/capacity
/components/component/power-supply/state/input-current
/components/component/power-supply/state/input-voltage
/components/component/power-supply/state/output-current
/components/component/power-supply/state/output-voltage
/components/component/power-supply/state/output-power

Must support reporting cpu utilization data.

/components/component/cpu/utilization/state/instant
/components/component/cpu/utilization/state/avg
/components/component/cpu/utilization/state/min
/components/component/cpu/utilization/state/max
/components/component/cpu/utilization/state/interval
/components/component/cpu/utilization/state/min-time
/components/component/cpu/utilization/state/max-time

Must support reporting memory utilization data.

/components/component/state/memory/available
/components/component/state/memory/utilized

Must support reporting temperature from individual sensors.

/components/component/state/temperature/instant
/components/component/state/temperature/avg
/components/component/state/temperature/min
/components/component/state/temperature/max
/components/component/state/temperature/interval
/components/component/state/temperature/min-time
/components/component/state/temperature/max-time
/components/component/state/temperature/alarm-status
/components/component/state/temperature/alarm-threshold
/components/component/state/temperature/alarm-severity

Must support reporting various transceiver data.

/components/component/transceiver/state/vendor
/components/component/transceiver/state/vendor-part
/components/component/transceiver/state/vendor-rev
/components/component/transceiver/state/serial-no

/components/component/transceiver/state/form-factor
/components/component/transceiver/state/connector-type

/components/component/transceiver/state/output-power/instant
/components/component/transceiver/state/output-power/avg
/components/component/transceiver/state/output-power/min
/components/component/transceiver/state/output-power/max
/components/component/transceiver/state/output-power/interval
/components/component/transceiver/state/output-power/min-time
/components/component/transceiver/state/output-power/max-time

/components/component/transceiver/state/input-power/instant
/components/component/transceiver/state/input-power/avg
/components/component/transceiver/state/input-power/min
/components/component/transceiver/state/input-power/max
/components/component/transceiver/state/input-power/interval
/components/component/transceiver/state/input-power/min-time
/components/component/transceiver/state/input-power/max-time

/components/component/transceiver/state/laser-bias-current/instant
/components/component/transceiver/state/laser-bias-current/avg
/components/component/transceiver/state/laser-bias-current/min
/components/component/transceiver/state/laser-bias-current/max
/components/component/transceiver/state/laser-bias-current/interval
/components/component/transceiver/state/laser-bias-current/min-time
/components/component/transceiver/state/laser-bias-current/max-time

Interface

https://github.com/openconfig/public/tree/master/release/models/interfaces OpenFlow already collects a fair bit of information from the interfaces in regards to data plane. The ifindex must match the OpenFlow port number. The name must match the one in OFPortDesc.

/interfaces/interface/config/enabled

/interfaces/interface/state/name
/interfaces/interface/state/type
/interfaces/interface/state/description
/interfaces/interface/state/ifindex
/interfaces/interface/state/oper-status

All ports should have PoE enabled by default. However, it should be possible to disable PoE in individual ports.

/interfaces/interface/ethernet/poe/config/enabled

/interfaces/interface/ethernet/poe/state/power-used
/interfaces/interface/ethernet/poe/state/power-class

MACsec

For platforms that support MACsec, all of the MACsec model must be supported.

/macsec/mka/policies/...
/macsec/mka/key-chains/...
/macsec/mka/state/...
/macsec/interfaces/...

License

The following leafs are required if the Target uses Licenses.

/system/license/...

gNOI/gNMI

The following leafs are required.

/system/grpc-server/config/enable
/system/grpc-server/config/port
/system/grpc-server/config/transport-security (not required if gNMI uses encryption and authentication via certificates)
/system/grpc-server/config/certificate-id
/system/grpc-server/config/metadata-authentication (not required if defaulted to false as in the model)

Default State

Any other service not mentioned in this document must be disabled by default. For instances where this is not the case, OpenConfig paths must be provided in order to disable them.

Management interface

The management interface must have DHCP enabled by default. Setting the following leafs is required.

/interfaces/interface/subinterfaces/subinterface/ipv4/config/enabled
/interfaces/interface/subinterfaces/subinterface/ipv4/config/dhcp-client
/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/config/ip
/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/config/prefix-length