IXpect Configuration Schema

Type: object
No Additional Properties

Type: object

The probe configurations.

No Additional Properties

Type: object
No Additional Properties

Type: boolean Default: false

Enables this probe.

Type: object

The arp_neighbor probe checks the ARP resolution from IP to MAC addresses.

No Additional Properties

Type: boolean Default: false

Enables this probe.

Type: array

Static map of ARP resolutions.

No Additional Items

Each item of this array must be:

Type: object
No Additional Properties

Type: string
Must match regular expression: ^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$

Type: boolean Default: false

Enable dynamic learning from observed ARP resolutions.

Type: object

The bum_rate probe monitors the packet rates of BUM traffic.

No Additional Properties

Type: boolean Default: false

Enables this probe.

Type: object

The aggregation window in which the BUM thresholds are periodically checked.

Type: integerFormat: uint64

Value must be greater or equal to 0

Type: integerFormat: uint32

Value must be greater or equal to 0

Type: object

The thresholds for different BUM traffic patterns.

No Additional Properties

Type: integer or nullFormat: uint64

Type: integer or nullFormat: uint64

Type: integer or nullFormat: uint64

Type: object

The ether_type probe inspects the EtherType of packets.

No Additional Properties

Type: boolean Default: false

Enables this probe.

Type: array of integer Default: []

The list of allowed ether types.

All items must be unique

No Additional Items

Each item of this array must be:

Type: integerFormat: uint16

Value must be greater or equal to 0 and lesser or equal to 65535

Type: object
No Additional Properties

Type: boolean Default: false

Enables this probe.

Type: object

The arp_bogon probe checks IP addresses in ARP resolutions against a prefix whitelist.

No Additional Properties

Type: boolean Default: false

Enables this probe.

Type: array of string Default: []

A whitelist of connected prefixes.

No Additional Items

Each item of this array must be:

Type: object

The ipv6_bogon probe checks IP addresses in IPv6 neighbor discoveries against a prefix whitelist.

No Additional Properties

Type: boolean Default: false

Enables this probe.

Type: array of string Default: []

A whitelist of connected prefixes.

No Additional Items

Each item of this array must be:

Type: object
No Additional Properties

Type: boolean Default: false

Enables this probe.

Type: object

The ipv6_neighbor probe checks the IPv6 neighbor discovery from IP addresses to MAC addresses.

No Additional Properties

Type: boolean Default: false

Enables this probe.

Type: array

Static map of IPv6 neighbor discoveries.

No Additional Items

Each item of this array must be:

Type: object
No Additional Properties

Type: string
Must match regular expression: ^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$

Type: boolean Default: false

Enable dynamic learning from observed IPv6 neighbor discoveries.

Type: object

The configuration of event notifications.

No Additional Properties

Type: string Default: "5m"

The time window, in which IXpect will collect and aggregate events.
Example: 1hour 12min 5s

The duration string is a concatenation of time spans. Where each time
span is an integer number and a suffix. Supported suffixes:

  • nsec, ns -- nanoseconds
  • usec, us, µs -- microseconds
  • msec, ms -- milliseconds
  • seconds, second, sec, s
  • minutes, minute, min, m
  • hours, hour, hr, hrs, h
  • days, day, d
  • weeks, week, wk, wks, w
  • months, month, M -- defined as 30.44 days
  • years, year, yr, yrs, y -- defined as 365.25 days

Type: object

The notifiers configurations.

No Additional Properties

Type: object

The log notifier will print the list of received events to stdout.

No Additional Properties

Type: boolean Default: false

Enables this notifier.

Type: array

A whitelist of events processed by this notifier. An empty list accepts any events.

All items must be unique

No Additional Items

Each item of this array must be:

Type: object

Type: const

the target IP address is not covered by prefixes

Specific value: "ARP_BOGON_TARGET"
Type: const

the source IP address is not covered by prefixes

Specific value: "ARP_BOGON_SOURCE"
Type: const

an observed resolution conflicts with a static configured one

Specific value: "ARP_NEIGHBOR_SPOOFED_STATIC"
Type: const

an observed resolution conflicts with a dynamic learned one

Specific value: "ARP_NEIGHBOR_SPOOFED_DYNAMIC"
Type: const

dynamic_enable is true and a resolution is learned

Specific value: "ARP_NEIGHBOR_NEW_DYNAMIC"
Type: const

dynamic_enable is false and a resolution is unknown

Specific value: "ARP_NEIGHBOR_UNKNOWN"
Type: const

a packet with a non-whitelisted EtherType has been observed

Specific value: "ETHER_TYPE_VIOLATION"
Type: const

the number of broadcast packets have exceeded the threshold

Specific value: "BUM_RATE_BROADCAST_EXCEEDED"
Type: const

the number of multicast packets have exceeded the threshold

Specific value: "BUM_RATE_UNICAST_EXCEEDED"
Type: const

the number of (unknown) unicast packets have exceeded the threshold

Specific value: "BUM_RATE_MULTICAST_EXCEEDED"
Type: const

a STP related packet has been observed

Specific value: "STP_PACKET_FOUND"
Type: const

the target IPv6 address is not covered by prefixes

Specific value: "IPV6_BOGON_TARGET"
Type: const

the source IPv6 address is not covered by prefixes

Specific value: "IPV6_BOGON_SOURCE"
Type: const

router advertisement has been detected

Specific value: "IPV6_ROUTER_ADVERTISEMENT"
Type: const

router solicitation has been detected

Specific value: "IPV6_ROUTER_SOLICITATION"
Type: const

an observed resolution conflicts with a static configured one

Specific value: "IPV6_NEIGHBOR_SPOOFED_STATIC"
Type: const

an observed resolution conflicts with a dynamic learned one

Specific value: "IPV6_NEIGHBOR_SPOOFED_DYNAMIC"
Type: const

dynamic_enable is true and a resolution is learned

Specific value: "IPV6_NEIGHBOR_NEW_DYNAMIC"
Type: const

dynamic_enable is false and a resolution is unknown

Specific value: "IPV6_NEIGHBOR_UNKNOWN"
Type: const

the packet does not match the expected format

Specific value: "IXPECT_BAD_PACKET"
Type: const

a test event, triggered when a signal USR1 is received

Specific value: "IXPECT_TEST"

Type: object

The email notifier allows IXpect to send emails via SMTP.

No Additional Properties

Type: boolean Default: false

Enables this notifier.

Type: object

The SMTP configuration of the mail server that should be used for submitting emails.

No Additional Properties

Type: string

The mail server host.

Type: integerFormat: uint16 Default: 25

The SMTP port of the mail server.

Value must be greater or equal to 0 and lesser or equal to 65535

Type: enum (of string)

The transport encryption to be used.

Must be one of:

  • "NONE"
  • "START_TLS"
  • "TLS"

Type: object

The authentication mode to be used.

Type: object
No Additional Properties

Type: const
Specific value: "NONE"
Type: object
No Additional Properties

Type: object

Type: string

An inlined password

Type: object

The path to a file containing the password.

Type: const
Specific value: "PLAIN"
Type: object
No Additional Properties

Type: object

Type: string

An inlined password

Type: object

The path to a file containing the password.

Type: const
Specific value: "LOGIN"

Type: string

The email sender address which should be used.

Type: string Default: "email.html.j2"

The file name of the MiniJinja template in the templates folder that should be used to format the message.

Type: array

The list of channels.

No Additional Items

Each item of this array must be:

Type: object
No Additional Properties

Type: array

A whitelist of events processed by this notifier. An empty list accepts any events.

All items must be unique

No Additional Items

Each item of this array must be:

Type: object

Type: const

the target IP address is not covered by prefixes

Specific value: "ARP_BOGON_TARGET"
Type: const

the source IP address is not covered by prefixes

Specific value: "ARP_BOGON_SOURCE"
Type: const

an observed resolution conflicts with a static configured one

Specific value: "ARP_NEIGHBOR_SPOOFED_STATIC"
Type: const

an observed resolution conflicts with a dynamic learned one

Specific value: "ARP_NEIGHBOR_SPOOFED_DYNAMIC"
Type: const

dynamic_enable is true and a resolution is learned

Specific value: "ARP_NEIGHBOR_NEW_DYNAMIC"
Type: const

dynamic_enable is false and a resolution is unknown

Specific value: "ARP_NEIGHBOR_UNKNOWN"
Type: const

a packet with a non-whitelisted EtherType has been observed

Specific value: "ETHER_TYPE_VIOLATION"
Type: const

the number of broadcast packets have exceeded the threshold

Specific value: "BUM_RATE_BROADCAST_EXCEEDED"
Type: const

the number of multicast packets have exceeded the threshold

Specific value: "BUM_RATE_UNICAST_EXCEEDED"
Type: const

the number of (unknown) unicast packets have exceeded the threshold

Specific value: "BUM_RATE_MULTICAST_EXCEEDED"
Type: const

a STP related packet has been observed

Specific value: "STP_PACKET_FOUND"
Type: const

the target IPv6 address is not covered by prefixes

Specific value: "IPV6_BOGON_TARGET"
Type: const

the source IPv6 address is not covered by prefixes

Specific value: "IPV6_BOGON_SOURCE"
Type: const

router advertisement has been detected

Specific value: "IPV6_ROUTER_ADVERTISEMENT"
Type: const

router solicitation has been detected

Specific value: "IPV6_ROUTER_SOLICITATION"
Type: const

an observed resolution conflicts with a static configured one

Specific value: "IPV6_NEIGHBOR_SPOOFED_STATIC"
Type: const

an observed resolution conflicts with a dynamic learned one

Specific value: "IPV6_NEIGHBOR_SPOOFED_DYNAMIC"
Type: const

dynamic_enable is true and a resolution is learned

Specific value: "IPV6_NEIGHBOR_NEW_DYNAMIC"
Type: const

dynamic_enable is false and a resolution is unknown

Specific value: "IPV6_NEIGHBOR_UNKNOWN"
Type: const

the packet does not match the expected format

Specific value: "IXPECT_BAD_PACKET"
Type: const

a test event, triggered when a signal USR1 is received

Specific value: "IXPECT_TEST"

Type: array of string

The list of recipient email addresses.

No Additional Items

Each item of this array must be:

Type: object

The matrix notifier allows IXpect to send unencrypted messages into Matrix chat rooms.

No Additional Properties

Type: boolean Default: false

Enables this notifier.

Type: array

The list of channels.

No Additional Items

Each item of this array must be:

Type: object
No Additional Properties

Type: stringFormat: uri

The URL of the matrix server (i.e. https://matrix.example.net).

Type: string

The internal room inclung your servers host (i.e. room_id:matrix.example.net).

Type: object

The access token for this account.

Type: string

An inlined password

Type: object

The path to a file containing the password.

Type: string Default: "matrix.html.j2"

The file name of the MiniJinja template in the templates folder that should be used to format the message.

Type: array

A whitelist of events processed by this notifier. An empty list accepts any events.

All items must be unique

No Additional Items

Each item of this array must be:

Type: object

Type: const

the target IP address is not covered by prefixes

Specific value: "ARP_BOGON_TARGET"
Type: const

the source IP address is not covered by prefixes

Specific value: "ARP_BOGON_SOURCE"
Type: const

an observed resolution conflicts with a static configured one

Specific value: "ARP_NEIGHBOR_SPOOFED_STATIC"
Type: const

an observed resolution conflicts with a dynamic learned one

Specific value: "ARP_NEIGHBOR_SPOOFED_DYNAMIC"
Type: const

dynamic_enable is true and a resolution is learned

Specific value: "ARP_NEIGHBOR_NEW_DYNAMIC"
Type: const

dynamic_enable is false and a resolution is unknown

Specific value: "ARP_NEIGHBOR_UNKNOWN"
Type: const

a packet with a non-whitelisted EtherType has been observed

Specific value: "ETHER_TYPE_VIOLATION"
Type: const

the number of broadcast packets have exceeded the threshold

Specific value: "BUM_RATE_BROADCAST_EXCEEDED"
Type: const

the number of multicast packets have exceeded the threshold

Specific value: "BUM_RATE_UNICAST_EXCEEDED"
Type: const

the number of (unknown) unicast packets have exceeded the threshold

Specific value: "BUM_RATE_MULTICAST_EXCEEDED"
Type: const

a STP related packet has been observed

Specific value: "STP_PACKET_FOUND"
Type: const

the target IPv6 address is not covered by prefixes

Specific value: "IPV6_BOGON_TARGET"
Type: const

the source IPv6 address is not covered by prefixes

Specific value: "IPV6_BOGON_SOURCE"
Type: const

router advertisement has been detected

Specific value: "IPV6_ROUTER_ADVERTISEMENT"
Type: const

router solicitation has been detected

Specific value: "IPV6_ROUTER_SOLICITATION"
Type: const

an observed resolution conflicts with a static configured one

Specific value: "IPV6_NEIGHBOR_SPOOFED_STATIC"
Type: const

an observed resolution conflicts with a dynamic learned one

Specific value: "IPV6_NEIGHBOR_SPOOFED_DYNAMIC"
Type: const

dynamic_enable is true and a resolution is learned

Specific value: "IPV6_NEIGHBOR_NEW_DYNAMIC"
Type: const

dynamic_enable is false and a resolution is unknown

Specific value: "IPV6_NEIGHBOR_UNKNOWN"
Type: const

the packet does not match the expected format

Specific value: "IXPECT_BAD_PACKET"
Type: const

a test event, triggered when a signal USR1 is received

Specific value: "IXPECT_TEST"

Type: object

The slack notifier allows IXpect to send messages into Slack channels.

No Additional Properties

Type: boolean Default: false

Enables this notifier.

Type: array

The list of channels.

No Additional Items

Each item of this array must be:

Type: object
No Additional Properties

Type: object

The Slack webhook containing the access token and the Slack channel ID.

Type: string

An inlined password

Type: object

The path to a file containing the password.

Type: string Default: "slack.json.j2"

The file name of the MiniJinja template in the templates folder that should be used to format the message.

Type: array

A whitelist of events processed by this notifier. An empty list accepts any events.

All items must be unique

No Additional Items

Each item of this array must be:

Type: object

Type: const

the target IP address is not covered by prefixes

Specific value: "ARP_BOGON_TARGET"
Type: const

the source IP address is not covered by prefixes

Specific value: "ARP_BOGON_SOURCE"
Type: const

an observed resolution conflicts with a static configured one

Specific value: "ARP_NEIGHBOR_SPOOFED_STATIC"
Type: const

an observed resolution conflicts with a dynamic learned one

Specific value: "ARP_NEIGHBOR_SPOOFED_DYNAMIC"
Type: const

dynamic_enable is true and a resolution is learned

Specific value: "ARP_NEIGHBOR_NEW_DYNAMIC"
Type: const

dynamic_enable is false and a resolution is unknown

Specific value: "ARP_NEIGHBOR_UNKNOWN"
Type: const

a packet with a non-whitelisted EtherType has been observed

Specific value: "ETHER_TYPE_VIOLATION"
Type: const

the number of broadcast packets have exceeded the threshold

Specific value: "BUM_RATE_BROADCAST_EXCEEDED"
Type: const

the number of multicast packets have exceeded the threshold

Specific value: "BUM_RATE_UNICAST_EXCEEDED"
Type: const

the number of (unknown) unicast packets have exceeded the threshold

Specific value: "BUM_RATE_MULTICAST_EXCEEDED"
Type: const

a STP related packet has been observed

Specific value: "STP_PACKET_FOUND"
Type: const

the target IPv6 address is not covered by prefixes

Specific value: "IPV6_BOGON_TARGET"
Type: const

the source IPv6 address is not covered by prefixes

Specific value: "IPV6_BOGON_SOURCE"
Type: const

router advertisement has been detected

Specific value: "IPV6_ROUTER_ADVERTISEMENT"
Type: const

router solicitation has been detected

Specific value: "IPV6_ROUTER_SOLICITATION"
Type: const

an observed resolution conflicts with a static configured one

Specific value: "IPV6_NEIGHBOR_SPOOFED_STATIC"
Type: const

an observed resolution conflicts with a dynamic learned one

Specific value: "IPV6_NEIGHBOR_SPOOFED_DYNAMIC"
Type: const

dynamic_enable is true and a resolution is learned

Specific value: "IPV6_NEIGHBOR_NEW_DYNAMIC"
Type: const

dynamic_enable is false and a resolution is unknown

Specific value: "IPV6_NEIGHBOR_UNKNOWN"
Type: const

the packet does not match the expected format

Specific value: "IXPECT_BAD_PACKET"
Type: const

a test event, triggered when a signal USR1 is received

Specific value: "IXPECT_TEST"

Type: object

The HTTP notifier can be used to send a customizable payload to a HTTP-based API.

No Additional Properties

Type: boolean Default: false

Enables this notifier.

Type: array

The list of channels.

No Additional Items

Each item of this array must be:

Type: object
No Additional Properties

Type: stringFormat: uri

The URL of the remote HTTP endpoint (i.e. https://api.example.net/api/notify).

Type: string Default: "POST"

The HTTP method.

Type: string

The content type of the HTTP body (i.e. application/json).

Type: string

The file name of the MiniJinja template in the templates folder that should be used to format the message.

Type: array

A whitelist of events processed by this notifier. An empty list accepts any events.

All items must be unique

No Additional Items

Each item of this array must be:

Type: object

Type: const

the target IP address is not covered by prefixes

Specific value: "ARP_BOGON_TARGET"
Type: const

the source IP address is not covered by prefixes

Specific value: "ARP_BOGON_SOURCE"
Type: const

an observed resolution conflicts with a static configured one

Specific value: "ARP_NEIGHBOR_SPOOFED_STATIC"
Type: const

an observed resolution conflicts with a dynamic learned one

Specific value: "ARP_NEIGHBOR_SPOOFED_DYNAMIC"
Type: const

dynamic_enable is true and a resolution is learned

Specific value: "ARP_NEIGHBOR_NEW_DYNAMIC"
Type: const

dynamic_enable is false and a resolution is unknown

Specific value: "ARP_NEIGHBOR_UNKNOWN"
Type: const

a packet with a non-whitelisted EtherType has been observed

Specific value: "ETHER_TYPE_VIOLATION"
Type: const

the number of broadcast packets have exceeded the threshold

Specific value: "BUM_RATE_BROADCAST_EXCEEDED"
Type: const

the number of multicast packets have exceeded the threshold

Specific value: "BUM_RATE_UNICAST_EXCEEDED"
Type: const

the number of (unknown) unicast packets have exceeded the threshold

Specific value: "BUM_RATE_MULTICAST_EXCEEDED"
Type: const

a STP related packet has been observed

Specific value: "STP_PACKET_FOUND"
Type: const

the target IPv6 address is not covered by prefixes

Specific value: "IPV6_BOGON_TARGET"
Type: const

the source IPv6 address is not covered by prefixes

Specific value: "IPV6_BOGON_SOURCE"
Type: const

router advertisement has been detected

Specific value: "IPV6_ROUTER_ADVERTISEMENT"
Type: const

router solicitation has been detected

Specific value: "IPV6_ROUTER_SOLICITATION"
Type: const

an observed resolution conflicts with a static configured one

Specific value: "IPV6_NEIGHBOR_SPOOFED_STATIC"
Type: const

an observed resolution conflicts with a dynamic learned one

Specific value: "IPV6_NEIGHBOR_SPOOFED_DYNAMIC"
Type: const

dynamic_enable is true and a resolution is learned

Specific value: "IPV6_NEIGHBOR_NEW_DYNAMIC"
Type: const

dynamic_enable is false and a resolution is unknown

Specific value: "IPV6_NEIGHBOR_UNKNOWN"
Type: const

the packet does not match the expected format

Specific value: "IXPECT_BAD_PACKET"
Type: const

a test event, triggered when a signal USR1 is received

Specific value: "IXPECT_TEST"