From 040650cb5c8ca0ac64012f2993e02d126016bd93 Mon Sep 17 00:00:00 2001 From: Binny Date: Mon, 9 Jun 2025 04:09:55 +0000 Subject: [PATCH 1/3] ols-688-sprint-12-stormcontrol-draft --- schema/ethernet.yml | 36 ++++++++++++++++++++++++++++ state/link-state.yml | 36 +++++++++++++++++++++++++++- ucentral.schema.full.json | 48 +++++++++++++++++++++++++++++++++++++ ucentral.schema.json | 41 +++++++++++++++++++++++++++++++ ucentral.schema.pretty.json | 48 +++++++++++++++++++++++++++++++++++++ ucentral.state.pretty.json | 33 +++++++++++++++++++++++++ 6 files changed, 241 insertions(+), 1 deletion(-) diff --git a/schema/ethernet.yml b/schema/ethernet.yml index 5ee357a..7c4d30e 100644 --- a/schema/ethernet.yml +++ b/schema/ethernet.yml @@ -499,3 +499,39 @@ properties: type: string minLength: 1 maxLength: 32 + storm-control: + description: Storm Control configuration per storm type. Allows enabling or disabling + traffic storm control for broadcast, multicast, and unknown unicast packets, + with independent packet-per-second thresholds. + type: object + properties: + broadcast: + type: object + properties: + enabled: + description: Enable or disable broadcast storm control. + type: boolean + limit-pps: + description: Maximum allowed broadcast packets per second. Traffic beyond this is dropped. + type: integer + minimum: 0 + multicast: + type: object + properties: + enabled: + description: Enable or disable multicast storm control. + type: boolean + limit-pps: + description: Maximum allowed multicast packets per second. Traffic beyond this is dropped. + type: integer + minimum: 0 + unknown-unicast: + type: object + properties: + enabled: + description: Enable or disable unknown unicast storm control. + type: boolean + limit-pps: + description: Maximum allowed unknown unicast packets per second. Traffic beyond this is dropped. + type: integer + minimum: 0 \ No newline at end of file diff --git a/state/link-state.yml b/state/link-state.yml index 6c604c0..860668b 100644 --- a/state/link-state.yml +++ b/state/link-state.yml @@ -262,4 +262,38 @@ properties: enum: - none - block - - shutdown \ No newline at end of file + - shutdown + storm-control: + description: Runtime status of Storm Control feature on the port for each storm type. + type: object + properties: + broadcast: + type: string + description: Runtime status of Broadcast Storm Control on the port. + - `enabled`- Actively monitoring and limiting broadcast traffic. + - `storming`- Storm condition detected; packets are being dropped. + - `disabled`- Feature not applied on this port. + enum: + - enabled + - storming + - disabled + multicast: + type: string + description: Runtime status of Multicast Storm Control on the port. + - `enabled`- Actively monitoring and limiting multicast traffic. + - `storming`- Storm condition detected; packets are being dropped. + - `disabled`- Feature not applied on this port. + enum: + - enabled + - storming + - disabled + unknown-unicast: + type: string + description: Runtime status of Unknown Unicast Storm Control on the port. + - `enabled`- Actively monitoring and limiting unknown unicast traffic. + - `storming`- Storm condition detected; packets are being dropped. + - `disabled`- Feature not applied on this port. + enum: + - enabled + - storming + - disabled \ No newline at end of file diff --git a/ucentral.schema.full.json b/ucentral.schema.full.json index 1874209..e6a32c8 100644 --- a/ucentral.schema.full.json +++ b/ucentral.schema.full.json @@ -753,6 +753,54 @@ "maxLength": 32 } } + }, + "storm-control": { + "description": "Storm Control configuration per storm type. Allows enabling or disabling traffic storm control for broadcast, multicast, and unknown unicast packets, with independent packet-per-second thresholds.", + "type": "object", + "properties": { + "broadcast": { + "type": "object", + "properties": { + "enabled": { + "description": "Enable or disable broadcast storm control.", + "type": "boolean" + }, + "limit-pps": { + "description": "Maximum allowed broadcast packets per second. Traffic beyond this is dropped.", + "type": "integer", + "minimum": 0 + } + } + }, + "multicast": { + "type": "object", + "properties": { + "enabled": { + "description": "Enable or disable multicast storm control.", + "type": "boolean" + }, + "limit-pps": { + "description": "Maximum allowed multicast packets per second. Traffic beyond this is dropped.", + "type": "integer", + "minimum": 0 + } + } + }, + "unknown-unicast": { + "type": "object", + "properties": { + "enabled": { + "description": "Enable or disable unknown unicast storm control.", + "type": "boolean" + }, + "limit-pps": { + "description": "Maximum allowed unknown unicast packets per second. Traffic beyond this is dropped.", + "type": "integer", + "minimum": 0 + } + } + } + } } } } diff --git a/ucentral.schema.json b/ucentral.schema.json index 41d8019..932cfca 100644 --- a/ucentral.schema.json +++ b/ucentral.schema.json @@ -668,6 +668,47 @@ "maxLength": 32 } } + }, + "storm-control": { + "type": "object", + "properties": { + "broadcast": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "limit-pps": { + "type": "integer", + "minimum": 0 + } + } + }, + "multicast": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "limit-pps": { + "type": "integer", + "minimum": 0 + } + } + }, + "unknown-unicast": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "limit-pps": { + "type": "integer", + "minimum": 0 + } + } + } + } } } }, diff --git a/ucentral.schema.pretty.json b/ucentral.schema.pretty.json index aba6476..2386b6a 100644 --- a/ucentral.schema.pretty.json +++ b/ucentral.schema.pretty.json @@ -787,6 +787,54 @@ "maxLength": 32 } } + }, + "storm-control": { + "description": "Storm Control configuration per storm type. Allows enabling or disabling traffic storm control for broadcast, multicast, and unknown unicast packets, with independent packet-per-second thresholds.", + "type": "object", + "properties": { + "broadcast": { + "type": "object", + "properties": { + "enabled": { + "description": "Enable or disable broadcast storm control.", + "type": "boolean" + }, + "limit-pps": { + "description": "Maximum allowed broadcast packets per second. Traffic beyond this is dropped.", + "type": "integer", + "minimum": 0 + } + } + }, + "multicast": { + "type": "object", + "properties": { + "enabled": { + "description": "Enable or disable multicast storm control.", + "type": "boolean" + }, + "limit-pps": { + "description": "Maximum allowed multicast packets per second. Traffic beyond this is dropped.", + "type": "integer", + "minimum": 0 + } + } + }, + "unknown-unicast": { + "type": "object", + "properties": { + "enabled": { + "description": "Enable or disable unknown unicast storm control.", + "type": "boolean" + }, + "limit-pps": { + "description": "Maximum allowed unknown unicast packets per second. Traffic beyond this is dropped.", + "type": "integer", + "minimum": 0 + } + } + } + } } } }, diff --git a/ucentral.state.pretty.json b/ucentral.state.pretty.json index ab93d55..89c5980 100644 --- a/ucentral.state.pretty.json +++ b/ucentral.state.pretty.json @@ -1351,6 +1351,39 @@ } } } + }, + "storm-control": { + "description": "Runtime status of Storm Control feature on the port for each storm type.", + "type": "object", + "properties": { + "broadcast": { + "type": "string", + "description": "Runtime status of Broadcast Storm Control on the port. - `enabled`- Actively monitoring and limiting broadcast traffic. - `storming`- Storm condition detected; packets are being dropped. - `disabled`- Feature not applied on this port.", + "enum": [ + "enabled", + "storming", + "disabled" + ] + }, + "multicast": { + "type": "string", + "description": "Runtime status of Multicast Storm Control on the port. - `enabled`- Actively monitoring and limiting multicast traffic. - `storming`- Storm condition detected; packets are being dropped. - `disabled`- Feature not applied on this port.", + "enum": [ + "enabled", + "storming", + "disabled" + ] + }, + "unknown-unicast": { + "type": "string", + "description": "Runtime status of Unknown Unicast Storm Control on the port. - `enabled`- Actively monitoring and limiting unknown unicast traffic. - `storming`- Storm condition detected; packets are being dropped. - `disabled`- Feature not applied on this port.", + "enum": [ + "enabled", + "storming", + "disabled" + ] + } + } } } }, From 67f3f14fabf132d171b111d74dd85d7dde7c1037 Mon Sep 17 00:00:00 2001 From: Binny Date: Tue, 17 Jun 2025 04:12:10 +0000 Subject: [PATCH 2/3] ols-688-sprint12-stormcontrol-finalreview --- capabilities/connect.capabilities.yml | 1 + schema/ethernet.yml | 1 + state/link-state.yml | 33 +++++---------------------- ucentral.capabilities.pretty.json | 1 + ucentral.schema.full.json | 3 ++- ucentral.schema.json | 3 ++- ucentral.schema.pretty.json | 3 ++- ucentral.state.pretty.json | 27 +++++----------------- 8 files changed, 21 insertions(+), 51 deletions(-) diff --git a/capabilities/connect.capabilities.yml b/capabilities/connect.capabilities.yml index a8b0c08..ecb1aea 100644 --- a/capabilities/connect.capabilities.yml +++ b/capabilities/connect.capabilities.yml @@ -280,6 +280,7 @@ properties: - MAC-ACL - IP-ACL - Guest-VLAN + - Storm-Control # Services - Service-SSH - Service-RSSH diff --git a/schema/ethernet.yml b/schema/ethernet.yml index 7c4d30e..dcad549 100644 --- a/schema/ethernet.yml +++ b/schema/ethernet.yml @@ -515,6 +515,7 @@ properties: description: Maximum allowed broadcast packets per second. Traffic beyond this is dropped. type: integer minimum: 0 + default: 500 multicast: type: object properties: diff --git a/state/link-state.yml b/state/link-state.yml index 860668b..cc3dab0 100644 --- a/state/link-state.yml +++ b/state/link-state.yml @@ -268,32 +268,11 @@ properties: type: object properties: broadcast: - type: string - description: Runtime status of Broadcast Storm Control on the port. - - `enabled`- Actively monitoring and limiting broadcast traffic. - - `storming`- Storm condition detected; packets are being dropped. - - `disabled`- Feature not applied on this port. - enum: - - enabled - - storming - - disabled + type: boolean + description: Runtime status of Broadcast Storm Control on the port. Return `true`if Storm condition is detected. multicast: - type: string - description: Runtime status of Multicast Storm Control on the port. - - `enabled`- Actively monitoring and limiting multicast traffic. - - `storming`- Storm condition detected; packets are being dropped. - - `disabled`- Feature not applied on this port. - enum: - - enabled - - storming - - disabled + type: boolean + description: Runtime status of Multicast Storm Control on the port. Return `true`if Storm condition is detected. unknown-unicast: - type: string - description: Runtime status of Unknown Unicast Storm Control on the port. - - `enabled`- Actively monitoring and limiting unknown unicast traffic. - - `storming`- Storm condition detected; packets are being dropped. - - `disabled`- Feature not applied on this port. - enum: - - enabled - - storming - - disabled \ No newline at end of file + type: boolean + description: Runtime status of Unknown Unicast Storm Control on the port. Return `true`if Storm condition is detected. \ No newline at end of file diff --git a/ucentral.capabilities.pretty.json b/ucentral.capabilities.pretty.json index 420295c..4582346 100644 --- a/ucentral.capabilities.pretty.json +++ b/ucentral.capabilities.pretty.json @@ -342,6 +342,7 @@ "MAC-ACL", "IP-ACL", "Guest-VLAN", + "Storm-Control", "Service-SSH", "Service-RSSH", "Service-Telnet", diff --git a/ucentral.schema.full.json b/ucentral.schema.full.json index e6a32c8..3027d13 100644 --- a/ucentral.schema.full.json +++ b/ucentral.schema.full.json @@ -768,7 +768,8 @@ "limit-pps": { "description": "Maximum allowed broadcast packets per second. Traffic beyond this is dropped.", "type": "integer", - "minimum": 0 + "minimum": 0, + "default": 500 } } }, diff --git a/ucentral.schema.json b/ucentral.schema.json index 932cfca..d3d2a7c 100644 --- a/ucentral.schema.json +++ b/ucentral.schema.json @@ -680,7 +680,8 @@ }, "limit-pps": { "type": "integer", - "minimum": 0 + "minimum": 0, + "default": 500 } } }, diff --git a/ucentral.schema.pretty.json b/ucentral.schema.pretty.json index 2386b6a..564cb28 100644 --- a/ucentral.schema.pretty.json +++ b/ucentral.schema.pretty.json @@ -802,7 +802,8 @@ "limit-pps": { "description": "Maximum allowed broadcast packets per second. Traffic beyond this is dropped.", "type": "integer", - "minimum": 0 + "minimum": 0, + "default": 500 } } }, diff --git a/ucentral.state.pretty.json b/ucentral.state.pretty.json index 89c5980..bc2091e 100644 --- a/ucentral.state.pretty.json +++ b/ucentral.state.pretty.json @@ -1357,31 +1357,16 @@ "type": "object", "properties": { "broadcast": { - "type": "string", - "description": "Runtime status of Broadcast Storm Control on the port. - `enabled`- Actively monitoring and limiting broadcast traffic. - `storming`- Storm condition detected; packets are being dropped. - `disabled`- Feature not applied on this port.", - "enum": [ - "enabled", - "storming", - "disabled" - ] + "type": "boolean", + "description": "Runtime status of Broadcast Storm Control on the port. Return `true`if Storm condition is detected." }, "multicast": { - "type": "string", - "description": "Runtime status of Multicast Storm Control on the port. - `enabled`- Actively monitoring and limiting multicast traffic. - `storming`- Storm condition detected; packets are being dropped. - `disabled`- Feature not applied on this port.", - "enum": [ - "enabled", - "storming", - "disabled" - ] + "type": "boolean", + "description": "Runtime status of Multicast Storm Control on the port. Return `true`if Storm condition is detected." }, "unknown-unicast": { - "type": "string", - "description": "Runtime status of Unknown Unicast Storm Control on the port. - `enabled`- Actively monitoring and limiting unknown unicast traffic. - `storming`- Storm condition detected; packets are being dropped. - `disabled`- Feature not applied on this port.", - "enum": [ - "enabled", - "storming", - "disabled" - ] + "type": "boolean", + "description": "Runtime status of Unknown Unicast Storm Control on the port. Return `true`if Storm condition is detected." } } } From 0e43b3cb3ad73762d74c122759964a2a8aac6543 Mon Sep 17 00:00:00 2001 From: Binny Date: Tue, 17 Jun 2025 15:06:46 +0000 Subject: [PATCH 3/3] ols-688-sprint12-stormcontrol-finalreview-p2 --- schema/ethernet.yml | 51 ++++++++++------------------- state/link-state.yml | 2 +- ucentral.schema.full.json | 64 +++++++++++-------------------------- ucentral.schema.json | 53 +++++++++--------------------- ucentral.schema.pretty.json | 64 +++++++++++-------------------------- ucentral.state.pretty.json | 2 +- 6 files changed, 72 insertions(+), 164 deletions(-) diff --git a/schema/ethernet.yml b/schema/ethernet.yml index dcad549..d72d02f 100644 --- a/schema/ethernet.yml +++ b/schema/ethernet.yml @@ -500,39 +500,22 @@ properties: minLength: 1 maxLength: 32 storm-control: - description: Storm Control configuration per storm type. Allows enabling or disabling - traffic storm control for broadcast, multicast, and unknown unicast packets, - with independent packet-per-second thresholds. + description: Storm Control configuration per storm type. Allows enabling or disabling traffic storm control for broadcast, multicast, and unknown unicast packets, + with independent packet-per-second (pps) thresholds. A limit-pps value of 0 implies the control is disabled for that traffic type. type: object properties: - broadcast: - type: object - properties: - enabled: - description: Enable or disable broadcast storm control. - type: boolean - limit-pps: - description: Maximum allowed broadcast packets per second. Traffic beyond this is dropped. - type: integer - minimum: 0 - default: 500 - multicast: - type: object - properties: - enabled: - description: Enable or disable multicast storm control. - type: boolean - limit-pps: - description: Maximum allowed multicast packets per second. Traffic beyond this is dropped. - type: integer - minimum: 0 - unknown-unicast: - type: object - properties: - enabled: - description: Enable or disable unknown unicast storm control. - type: boolean - limit-pps: - description: Maximum allowed unknown unicast packets per second. Traffic beyond this is dropped. - type: integer - minimum: 0 \ No newline at end of file + broadcast-pps: + type: integer + minimum: 0 + default: 0 + description: Maximum allowed broadcast packets per second. 0 disables broadcast storm control. + multicast-pps: + type: integer + minimum: 0 + default: 0 + description: Maximum allowed multicast packets per second. 0 disables multicast storm control. + unknown-unicast-pps: + type: integer + minimum: 0 + default: 0 + description: Maximum allowed unknown unicast packets per second. 0 disables unknown unicast storm control. \ No newline at end of file diff --git a/state/link-state.yml b/state/link-state.yml index cc3dab0..0e5c15b 100644 --- a/state/link-state.yml +++ b/state/link-state.yml @@ -263,7 +263,7 @@ properties: - none - block - shutdown - storm-control: + storm-status: description: Runtime status of Storm Control feature on the port for each storm type. type: object properties: diff --git a/ucentral.schema.full.json b/ucentral.schema.full.json index 3027d13..4bf26d5 100644 --- a/ucentral.schema.full.json +++ b/ucentral.schema.full.json @@ -755,52 +755,26 @@ } }, "storm-control": { - "description": "Storm Control configuration per storm type. Allows enabling or disabling traffic storm control for broadcast, multicast, and unknown unicast packets, with independent packet-per-second thresholds.", + "description": "Storm Control configuration per storm type. Allows enabling or disabling traffic storm control for broadcast, multicast, and unknown unicast packets, with independent packet-per-second (pps) thresholds. A limit-pps value of 0 implies the control is disabled for that traffic type.", "type": "object", - "properties": { - "broadcast": { - "type": "object", - "properties": { - "enabled": { - "description": "Enable or disable broadcast storm control.", - "type": "boolean" - }, - "limit-pps": { - "description": "Maximum allowed broadcast packets per second. Traffic beyond this is dropped.", - "type": "integer", - "minimum": 0, - "default": 500 - } - } - }, - "multicast": { - "type": "object", - "properties": { - "enabled": { - "description": "Enable or disable multicast storm control.", - "type": "boolean" - }, - "limit-pps": { - "description": "Maximum allowed multicast packets per second. Traffic beyond this is dropped.", - "type": "integer", - "minimum": 0 - } - } - }, - "unknown-unicast": { - "type": "object", - "properties": { - "enabled": { - "description": "Enable or disable unknown unicast storm control.", - "type": "boolean" - }, - "limit-pps": { - "description": "Maximum allowed unknown unicast packets per second. Traffic beyond this is dropped.", - "type": "integer", - "minimum": 0 - } - } - } + "properties": null, + "broadcast-pps": { + "type": "integer", + "minimum": 0, + "default": 0, + "description": "Maximum allowed broadcast packets per second. 0 disables broadcast storm control." + }, + "multicast-pps": { + "type": "integer", + "minimum": 0, + "default": 0, + "description": "Maximum allowed multicast packets per second. 0 disables multicast storm control." + }, + "unknown-unicast-pps": { + "type": "integer", + "minimum": 0, + "default": 0, + "description": "Maximum allowed unknown unicast packets per second. 0 disables unknown unicast storm control." } } } diff --git a/ucentral.schema.json b/ucentral.schema.json index d3d2a7c..b536fed 100644 --- a/ucentral.schema.json +++ b/ucentral.schema.json @@ -671,44 +671,21 @@ }, "storm-control": { "type": "object", - "properties": { - "broadcast": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean" - }, - "limit-pps": { - "type": "integer", - "minimum": 0, - "default": 500 - } - } - }, - "multicast": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean" - }, - "limit-pps": { - "type": "integer", - "minimum": 0 - } - } - }, - "unknown-unicast": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean" - }, - "limit-pps": { - "type": "integer", - "minimum": 0 - } - } - } + "properties": null, + "broadcast-pps": { + "type": "integer", + "minimum": 0, + "default": 0 + }, + "multicast-pps": { + "type": "integer", + "minimum": 0, + "default": 0 + }, + "unknown-unicast-pps": { + "type": "integer", + "minimum": 0, + "default": 0 } } } diff --git a/ucentral.schema.pretty.json b/ucentral.schema.pretty.json index 564cb28..fd62bdb 100644 --- a/ucentral.schema.pretty.json +++ b/ucentral.schema.pretty.json @@ -789,52 +789,26 @@ } }, "storm-control": { - "description": "Storm Control configuration per storm type. Allows enabling or disabling traffic storm control for broadcast, multicast, and unknown unicast packets, with independent packet-per-second thresholds.", + "description": "Storm Control configuration per storm type. Allows enabling or disabling traffic storm control for broadcast, multicast, and unknown unicast packets, with independent packet-per-second (pps) thresholds. A limit-pps value of 0 implies the control is disabled for that traffic type.", "type": "object", - "properties": { - "broadcast": { - "type": "object", - "properties": { - "enabled": { - "description": "Enable or disable broadcast storm control.", - "type": "boolean" - }, - "limit-pps": { - "description": "Maximum allowed broadcast packets per second. Traffic beyond this is dropped.", - "type": "integer", - "minimum": 0, - "default": 500 - } - } - }, - "multicast": { - "type": "object", - "properties": { - "enabled": { - "description": "Enable or disable multicast storm control.", - "type": "boolean" - }, - "limit-pps": { - "description": "Maximum allowed multicast packets per second. Traffic beyond this is dropped.", - "type": "integer", - "minimum": 0 - } - } - }, - "unknown-unicast": { - "type": "object", - "properties": { - "enabled": { - "description": "Enable or disable unknown unicast storm control.", - "type": "boolean" - }, - "limit-pps": { - "description": "Maximum allowed unknown unicast packets per second. Traffic beyond this is dropped.", - "type": "integer", - "minimum": 0 - } - } - } + "properties": null, + "broadcast-pps": { + "type": "integer", + "minimum": 0, + "default": 0, + "description": "Maximum allowed broadcast packets per second. 0 disables broadcast storm control." + }, + "multicast-pps": { + "type": "integer", + "minimum": 0, + "default": 0, + "description": "Maximum allowed multicast packets per second. 0 disables multicast storm control." + }, + "unknown-unicast-pps": { + "type": "integer", + "minimum": 0, + "default": 0, + "description": "Maximum allowed unknown unicast packets per second. 0 disables unknown unicast storm control." } } } diff --git a/ucentral.state.pretty.json b/ucentral.state.pretty.json index bc2091e..af9dc45 100644 --- a/ucentral.state.pretty.json +++ b/ucentral.state.pretty.json @@ -1352,7 +1352,7 @@ } } }, - "storm-control": { + "storm-status": { "description": "Runtime status of Storm Control feature on the port for each storm type.", "type": "object", "properties": {