Software-based orchestration of communication payloads in satellites
The development of YANG data models and satellite-specific data types addresses inefficiencies in managing satellite payloads, particularly in HTS, by providing standardized configurations and monitoring, thus enhancing satellite communication performance.
Patent Information
- Authority / Receiving Office
- AU · AU
- Patent Type
- Applications
- Current Assignee / Owner
- KRATOS INTEGRAL HOLDINGS LLC
- Filing Date
- 2021-06-14
- Publication Date
- 2026-07-09
Smart Images

Figure 00000001_0000 
Figure 00000063_0000 
Figure 00000064_0000
Abstract
Description
"This module contains a collection of generally useful derived YANG data types. Copyright (c) 2013 IETF Trust and the persons identified as authors of the code. All rights reserved. Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Simplified BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http: / / trustee.ietf.org / license-info). This version of this YANG module is part of RFC 6991; see the RFC itself for full legal notices."; revision "2013-07-15" { description "This revision adds the following new data types: 2021293029 18 May 2026 - yang-identifier - hex-string - uuid - dotted-quad"; reference "RFC 6991: Common YANG Data Types"; } revision "2010-09-24" { description "Initial revision."; reference "RFC 6021: Common YANG Data Types"; } typedef counter32 { type uint32; description "The counter32 type represents a non-negative integer that monotonically increases until it reaches a maximum value of 2A32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero. Counters have no defined 'initial' value, and thus, a single value of a counter has (in general) no information content. Discontinuities in the monotonically increasing value normally occur at re-initialization of the management system, and at other times as specified in the description of a schema node using this type. If such other times can occur, for example, the creation of a schema node of type counter32 at times other than re-initialization, then a corresponding schema node should be defined, with an appropriate type, to indicate the last discontinuity. The counter32 type should not be used for configuration schema nodes. A default statement SHOULD NOT be used in combination with the type counter32. In the value set and its semantics, this type is equivalent to the Counter32 type of the SMIv2."; reference "RFC 2578: Structure of Management Information Version 2 (SMIv2)"; } typedef zero-based-counter32 { type yang:counter32; default "0"; description "The zero-based-counter32 type represents a counter32 that has the defined 'initial' value zero. A schema node of this type will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2A32-1 (4294967295 decimal), when it wraps around and starts increasing again from zero. 2021293029 18 May 2026 Provided that an application discovers a new schema node of this type within the minimum time to wrap, it can use the 'initial' value as a delta. It is important for a management station to be aware of this minimum time and the actual time between polls, and to discard data if the actual time is too long or there is no defined minimum time. In the value set and its semantics, this type is equivalent to the ZeroBasedCounter32 textual convention of the SMIv2."; reference "RFC 4502: Remote Network Monitoring Management Information Base Version 2"; } typedef counter64 { type uint64; description "The counter64 type represents a non-negative integer that monotonically increases until it reaches a maximum value of 2A64-1 (18446744073709551615 decimal), when it wraps around and starts increasing again from zero. Counters have no defined 'initial' value, and thus, a single value of a counter has (in general) no information content. Discontinuities in the monotonically increasing value normally occur at re-initialization of the management system, and at other times as specified in the description of a schema node using this type. If such other times can occur, for example, the creation of a schema node of type counter64 at times other than re-initialization, then a corresponding schema node should be defined, with an appropriate type, to indicate the last discontinuity. The counter64 type should not be used for configuration schema nodes. A default statement SHOULD NOT be used in combination with the type counter64. In the value set and its semantics, this type is equivalent to the Counter64 type of the SMIv2."; reference "RFC 2578: Structure of Management Information Version 2 (SMIv2)"; } typedef zero-based-counter64 { type counter64; default "0"; description "The zero-based-counter64 type represents a counter64 that has the defined 'initial' value zero. A schema node of this type will be set to zero (0) on creation and will thereafter increase monotonically until it reaches a maximum value of 2A64-1 (18446744073709551615 decimal), when it wraps around and starts increasing again from zero. 2021293029 18 May 2026 Provided that an application discovers a new schema node of this type within the minimum time to wrap, it can use the 'initial' value as a delta. It is important for a management station to be aware of this minimum time and the actual time between polls, and to discard data if the actual time is too long or there is no defined minimum time. In the value set and its semantics, this type is equivalent to the ZeroBasedCounter64 textual convention of the SMIv2."; reference "RFC 2856: Textual Conventions for Additional High Capacity Data Types"; } typedef gauge32 { type uint32; description "The gauge32 type represents a non-negative integer, which may increase or decrease, but shall never exceed a maximum value, nor fall below a minimum value. The maximum value cannot be greater than 2A32-1 (4294967295 decimal), and the minimum value cannot be smaller than 0. The value of a gauge32 has its maximum value whenever the information being modeled is greater than or equal to its maximum value, and has its minimum value whenever the information being modeled is smaller than or equal to its minimum value. If the information being modeled subsequently decreases below (increases above) the maximum (minimum) value, the gauge32 also decreases (increases). In the value set and its semantics, this type is equivalent to the Gauge32 type of the SMIv2."; reference "RFC 2578: Structure of Management Information Version 2 (SMIv2)"; } typedef gauge64 { type uint64; description "The gauge64 type represents a non-negative integer, which may increase or decrease, but shall never exceed a maximum value, nor fall below a minimum value. The maximum value cannot be greater than 2A64-1 (18446744073709551615), and the minimum value cannot be smaller than 0. The value of a gauge64 has its maximum value whenever the information being modeled is greater than or equal to its maximum value, and has its minimum value whenever the information being modeled is smaller than or equal to its minimum value. If the information being modeled subsequently decreases below (increases above) the maximum (minimum) value, the gauge64 also decreases (increases). In the value set and its semantics, this type is equivalent to the CounterBasedGauge64 SMIv2 textual convention defined in RFC 2856"; 2021293029 18 May 2026 reference "RFC 2856: Textual Conventions for Additional High Capacity Data Types"; } typedef object-identifier { type string { pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))' + '(\.(0|([1-9]\d*)))*'; } description "The object-identifier type represents administratively assigned names in a registration-hierarchical-name tree. Values of this type are denoted as a sequence of numerical non-negative sub-identifier values. Each sub-identifier value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers are separated by single dots and without any intermediate whitespace. The ASN.1 standard restricts the value space of the first sub-identifier to 0, 1, or 2. Furthermore, the value space of the second sub-identifier is restricted to the range 0 to 39 if the first sub-identifier is 0 or 1. Finally, the ASN.1 standard requires that an object identifier has always at least two sub-identifiers. The pattern captures these restrictions. Although the number of sub-identifiers is not limited, module designers should realize that there may be implementations that stick with the SMIv2 limit of 128 sub-identifiers. This type is a superset of the SMIv2 OBJECT IDENTIFIER type since it is not restricted to 128 sub-identifiers. Hence, this type SHOULD NOT be used to represent the SMIv2 OBJECT IDENTIFIER type; the object-identifier-128 type SHOULD be used instead."; reference "ISO9834-1: Information technology -- Open Systems Interconnection -- Procedures for the operation of OSI Registration Authorities: General procedures and top arcs of the ASN.1 Object Identifier tree"; } typedef object-identifier-128 { type object-identifier { pattern '\d*(\.\d*){1,127}'; } description "This type represents object-identifiers restricted to 128 sub-identifiers. In the value set and its semantics, this type is equivalent to the OBJECT IDENTIFIER type of the SMIv2."; reference 2021293029 18 May 2026 "RFC 2578: Structure of Management Information Version 2 (SMIv2)"; } typedef yang-identifier { type string { length "1..max"; pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*'; pattern '.|..|[AxX].*|.[AmM].*|..[AlL].*'; } description "A YANG identifier string as defined by the 'identifier' rule in Section 12 of RFC 6020. An identifier must start with an alphabetic character or an underscore followed by an arbitrary sequence of alphabetic or numeric characters, underscores, hyphens, or dots. A YANG identifier MUST NOT start with any possible combination of the lowercase or uppercase character sequence 'xml'."; reference "RFC 6020: YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)"; } typedef date-and-time { type string { pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?' + '(Z|[\+\-]\d{2}:\d{2})'; } description "The date-and-time type is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar. The profile is defined by the date-time production in Section 5.6 of RFC 3339. The date-and-time type is compatible with the dateTime XML schema type with the following notable exceptions: (a) The date-and-time type does not allow negative years. (b) The date-and-time time-offset -00:00 indicates an unknown time zone (see RFC 3339) while -00:00 and +00:00 and Z all represent the same time zone in dateTime. (c) The canonical format (see below) of data-and-time values differs from the canonical format used by the dateTime XML schema type, which requires all times to be in UTC using the time-offset 'Z'. This type is not equivalent to the DateAndTime textual convention of the SMIv2 since RFC 3339 uses a different separator between full-date and full-time and provides higher resolution of time-secfrac. 2021293029 18 May 2026 The canonical format for date-and-time values with a known time zone uses a numeric time zone offset that is calculated using the device's configured known offset to UTC time. A change of the device's offset to UTC time will cause date-and-time values to change accordingly. Such changes might happen periodically in case a server follows automatically daylight saving time (DST) time zone offset changes. The canonical format for date-and-time values with an unknown time zone (usually referring to the notion of local time) uses the time-offset -00:00."; reference "RFC 3339: Date and Time on the Internet: Timestamps RFC 2579: Textual Conventions for SMIv2 XSD-TYPES: XML Schema Part 2: Datatypes Second Edition"; } typedef timeticks { type uint32; description "The timeticks type represents a non-negative integer that represents the time, modulo 2A32 (4294967296 decimal), in hundredths of a second between two epochs. When a schema node is defined that uses this type, the description of the schema node identifies both of the reference epochs. In the value set and its semantics, this type is equivalent to the TimeTicks type of the SMIv2."; reference "RFC 2578: Structure of Management Information Version 2 (SMIv2)"; } typedef timestamp { type timeticks; description "The timestamp type represents the value of an associated timeticks schema node at which a specific occurrence happened. The specific occurrence must be defined in the description of any schema node defined using this type. When the specific occurrence occurred prior to the last time the associated timeticks attribute was zero, then the timestamp value is zero. Note that this requires all timestamp values to be reset to zero when the value of the associated timeticks attribute reaches 497+ days and wraps around to zero. The associated timeticks schema node must be specified in the description of any schema node using this type. In the value set and its semantics, this type is equivalent to the TimeStamp textual convention of the SMIv2."; reference "RFC 2579: Textual Conventions for SMIv2"; 2021293029 18 May 2026 } typedef phys-address { type string { pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; } description "Represents media- or physical-level addresses represented as a sequence octets, each octet represented by two hexadecimal numbers. Octets are separated by colons. The canonical representation uses lowercase characters. In the value set and its semantics, this type is equivalent to the PhysAddress textual convention of the SMIv2."; reference "RFC 2579: Textual Conventions for SMIv2"; } typedef mac-address { type string { pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'; } description "The mac-address type represents an IEEE 802 MAC address. The canonical representation uses lowercase characters. In the value set and its semantics, this type is equivalent to the MacAddress textual convention of the SMIv2."; reference "IEEE 802: IEEE Standard for Local and Metropolitan Area Networks: Overview and Architecture RFC 2579: Textual Conventions for SMIv2"; } typedef xpath1.0 { type string; description "This type represents an XPATH 1.0 expression. When a schema node is defined that uses this type, the description of the schema node MUST specify the XPath context in which the XPath expression is evaluated."; reference "XPATH: XML Path Language (XPath) Version 1.0"; } typedef hex-string { type string { pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; } description 2021293029 18 May 2026 "A hexadecimal string with octets represented as hex digits separated by colons. The canonical representation uses lowercase characters."; } typedef uuid { type string { pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'; } description "A Universally Unique IDentifier in the string representation defined in RFC 4122. The canonical representation uses lowercase characters. The following is an example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6 ; reference "RFC 4122: A Universally Unique IDentifier (UUID) URN Namespace"; } typedef dotted-quad { type string { pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0- 5])'; } description "An unsigned 32-bit number expressed in the dotted-quad notation, i.e., four octets written as decimal numbers and separated with the '.' (full stop) character."; } } / / module ietf-yang-types
[0081] The following is an example definition of satellite-specific data types to be used in the YANG model: / / Contents of "kratos-sat-types" module kratos-sat-types { namespace "urn:kratosspace:kratos-sat-types"; prefix "kssattypes"; description "Satellite payload model types for HTS"; organization "Kratos Space"; contact "Bob Potter"; revision 2020-04-16 { description "Initial revision"; } 2021293029 18 May 2026 identity rf-component-state { description "state of rf component on satellite spare, broken"; } identity active { base rf-component-state; description "rf-component state active"; } identity spare { base rf-component-state; description "rf-component state spare"; } identity broken { base rf-component-state; description "rf-component state broken"; } identity rf-component-type { description "type of rf component"; } identity adc { base rf-component-type ; description "adc"; } identity amplifier-lcamp { base rf-component-type ; description "lcamp amplifier"; } identity amplifier-twt { base rf-component-type ; description "twt amp"; } identity antenna-dish { base rf-component-type ; description "antenna"; } identity antenna-phased-array { base rf-component-type ; description "antenna"; } identity dac { base rf-component-type ; description "adc"; } identity downlink-carrier { base rf-component-type ; description "down link carrier"; } identity down-converter { active, 2021293029 18 May 2026 base rf-component-type ; description "down converter"; } identity lna { base rf-component-type ; description "lna"; } identity uplink-carrier { base rf-component-type ; description "up link carrier"; } identity up-converter { base rf-component-type ; description " up converter"; } identity baseball-switch { base rf-component-type ; description "baseball switch"; } identity antenna-direction { description "antenna type"; } identity rx { base antenna-direction ; description "rx dish"; } identity tx { base antenna-direction ; description "rx dish"; } identity antenna-polarity { description "polarity"; } identity pol-x { base antenna-polarity ; description "X axis pol"; } identity pol-y { base antenna-polarity ; description "Y axis pol"; } identity bb-switch-position { description "base ball switch position"; } identity bb-switch-13 { base bb-switch-position; description "bb switch where 1 is connected to 3, 2 connected to 4"; 2021293029 18 May 2026 } identity bb-switch-14 { base bb-switch-position; description "bb switch where 1 is connected to 4, 2 connected to 3"; } }
[0082] The following is an example definition of a matrix switch port in YANG: / / Contents of "kratos-matrixswitch-port" module kratos-matrixswitch-port { namespace "urn:kratosspace:kratos-matrixswitch-port"; prefix "ksmatport"; import ietf-yang-types {prefix yang; revision-date "2013-0715"; } import kratos-rf-planning-info { prefix ksrfplan; revisiondate "2020-05-11";} description "Satellite Matrix Switch / Digital Signal Processer (DSPP) based on High Throughput Satellites (HTS)."; organization "Kratos Space"; contact "Bob Potter"; revision 2020-04-07 { description "Initial revision"; } identity channel-state { description "state of a channel assigned / not assigned"; } identity assigned { base channel-state ; description "un assigned channel"; } identity not-assigned { base channel-state ; description "un assigned channel"; } identity signal-direction { description "route diection"; } identity gateway-to-subscriber { base signal-direction ; description "Gateway to Subscriber Route Flow"; } identity subscriber-to-gateway { base signal-direction ; description "Subscriber to Gateway Route Flow"; } 2021293029 18 May 2026 grouping port { leaf port-id { description "Port identifier"; type yang:uuid; } leaf port-number { description "port number"; type yang:counter32; } leaf bandwidth { description "Bandwidth of the port in MHz"; type decimal64 { fraction-digits "6"; } config false; } leaf sub-channel-count { description "Count of sub channels in this port"; type yang:counter32; } leaf phase-noise { description "phase noise"; type decimal64 { fraction-digits "3"; } config false; } leaf noise-temperature { description "noise temperature"; type decimal64 { fraction-digits "3"; } config false; } uses ksrfplan:rf-planning-info; container sub-channels { list sub-channel{ description "Sub channelization of a port on satellite matrix switch"; key sub-channel-id; leaf sub-channel-id { description "Identification of the subchannel"; type yang:uuid; } leaf sub-channel-number { description "channel number"; type yang:counter32; } 2021293029 18 May 2026 leaf sub-channel-state { description "state of the subchannel"; type identityref { base ksmatport:channel-state; } } leaf bandwidth { description "Bandwidth of the sub-channel in kHz"; type decimal64 { fraction-digits "3"; } config false; } } } } grouping route { leaf route-id { description "the id of the route"; type yang:uuid; } leaf route-name { description "the name of the route slice.port.sc-sc_slice.port.sc-sc"; type string; } leaf direction { description "direction of route flow"; type identityref { base ksmatport:signal-direction; } } leaf input-slice { description "the id of the input slice"; type yang:uuid; } leaf input-port { description "the id of the input port on the slice"; type yang:uuid; } container input-channels { leaf-list input-channel { description "list of input channel ids, TODO these channels may be contiguous"; type yang:uuid; } } 2021293029 18 May 2026 leaf output-slice { description "the id of the output slice"; type yang:uuid; } leaf output-port { description "the id of the output port on the slice"; type yang:uuid; } container output-channels { leaf-list output-channel { description "list of output channel ids, TODO these may be contiguous"; type yang:uuid; } } } }
[0083] The following is an example definition of a phased array in YANG: / / Contents of "kratos-phased-array" module kratos-phased-array { namespace "urn:kratosspace:kratos-phased-array"; prefix "kspa"; import ietf-yang-types {prefix yang; revision-date "2013-0715"; } description "RF Phased array antenna module for use with HTS payload modelling."; organization "Kratos Space"; contact "Bob Potter"; revision 2020-04-30 { description "Initial revision"; } grouping phased-array-antenna { leaf element-count { description "number of elements in the array"; type yang:counter32; } container pa-elements { list pa-element { description "The list of rf components"; key pa-element-id; leaf pa-element-id { description "element id"; type yang:uuid; } 2021293029 18 May 2026 leaf attenuation { description "Attenuation of the element"; type decimal64 { fraction-digits "5"; } } leaf phase-shift { description "phase shift coefficient"; type decimal64 { fraction-digits "5"; } } } / / end of list pa-element } / / end of container pa-elements container antenna-array-matrix-switch { leaf aams-id { description "id of the antenna array matrix switch"; type yang:uuid; } leaf is-feq-limited { description "is this antenna array matrix switch fequency limited"; type boolean; } container aams-connections { list aams-connection { description "the list of connections in this matrix switch"; key aams-connection-id; leaf aams-connection-id { description "id of the connection"; type yang:uuid; } leaf rf-component-id { description "Id of the PA or LNA connect to the beams(s)"; type yang:uuid; } container related-beams { leaf-list related-beam { description "list of Ids for associated beams"; type yang:uuid; } } / / end of container beams leaf max-frequency { description "the max fequency of the related amp if this is freq limited"; 2021293029 18 May 2026 type decimal64 { fraction-digits "5"; } } leaf min-frequency { description "the min fequency of the related amp if this is freq limited"; type decimal64 { fraction-digits "5"; } } } / / end of list aams-connection } / / end of conainter aams-connections } / / end of container antenna-array-matrix switch } / / end of grouping phased-array-antenna }
[0084] The following is an example definition of RF planning information in YANG: / / Contents of "kratos-rf-planning-info" module kratos-rf-planning-info { namespace "urn:opendaylight:kratos-rf-planning-info"; prefix "ksrfplan"; import ietf-yang-types {prefix yang; revision-date "2013-0715"; } description "Radio Frequency (RF) planning data for use with HTS payload modelling."; organization "Kratos Space"; contact "Bob Potter"; revision 2020-05-11 { description "Initial revision"; } grouping rf-planning-info { container rf-common-planning-info { leaf delta-group-delay-matrix-depth { description "depth of the delta group delay matrix"; type yang:counter32; } leaf delta-group-delay-matrix { description "depth of the delta group delay matrix"; type yang:counter32; } leaf frequency-response-matrix-depth { description "depth of the frequency response matrix"; type yang:counter32; } 2021293029 18 May 2026 leaf frequency-response-matrix { description "depth of the delta group delay matrix"; type yang:counter32; } } } }
[0085] The following is an example definition of a satellite payload in YANG: / / Contents of "kratos-sat-payload" module kratos-sat-payload { namespace "urn:kratosspace:kratos-sat-payload"; prefix "kssp"; import ietf-yang-types {prefix yang; revision-date "2013-0715"; } import kratos-matrixswitch-port { prefix ksmatport; revisiondate "2020-04-07"; } import kratos-sat-telemetry { prefix kstelem; revision-date "2020-04-03"; } import kratos-sat-types { prefix kssattypes; revision-date "2020-04-16"; } import kratos-phased-array { prefix kspa; revision-date "202004-30"; } import kratos-rf-planning-info { prefix ksrfplan; revisiondate "2020-05-11";} description "Satellite payload model based on High Throughput Satellites (HTS)."; organization "Kratos Space"; contact "Bob Potter"; revision 2020-04-03 { description "Initial revision"; } container sat-payload { description "null"; leaf payload-id { description "unique ID of this payload"; type yang:uuid; } leaf payload-name { description "name of payload"; type string; } container matrixSwitch { description "Matrix Switch component of the satellite payload."; 2021293029 18 May 2026 container slices { list slice { description "A slice in the matrix switch with input and output ports"; key slice-id; leaf slice-id { description "Slice identifier"; type yang:uuid; } leaf slice-number { description "slice number"; type yang:counter32; } leaf port-count { description "Number of inputPorts -gateway side"; config false; type yang:counter32; } container input-ports { list input-port { description "input port / channelizer"; key port-id; uses ksmatport:port; / / reference to port grouping } / / list input port end } container output-ports { list output-port { description "output port / combiner"; key port-id; uses ksmatport:port; / / reference to port grouping } / / list output port end } } / / list slice end } container routes { list route { description "routes in the matrix switch"; key route-id; uses ksmatport:route; } / / list route end } 2021293029 18 May 2026 } container rf-component-chains { description "chains of RF Components use to get the sign to / from the matrix switch"; list rf-component-chain { description "chain of components tied to matrix switch port"; key rf-component-chain-id; leaf rf-component-chain-id { description "id of chain"; type yang:uuid; } leaf direction { description "direction of signal flow"; type identityref { base ksmatport:signal-direction; } } leaf assoc-slice-id { description "slice id this rf component chain is tied to"; type yang:uuid; } leaf assoc-port-id { description "port id on the slice idenified this rf component chain is tied to"; type yang:uuid; } container rf-component-ids { leaf-list rf-component-id{ description "List if the ids for the components that make up this chain"; type yang:uuid; } } } } container rf-components { list rf-component { description "rf components definition"; key component-id; leaf component-id { description "component id"; type yang:uuid; } leaf component-type { description "the type of rf component"; 2021293029 18 May 2026 type identityref { base kssattypes:rf-component-type; } } leaf component-state { description "the state of the rf component"; type identityref { base kssattypes:rf-component-state; } } container related-components { leaf-list related-component { description "id of related components"; type yang:uuid; } } } } } / / uplink-carrier definition augment / kssp:sat-payload / kssp:rf-components / kssp:rf- component { when "kssp:component-type = 'uplink-carrier'" { description "Applies to all uplink-carrier components"; } container uplink-carrier { / / do we need a center fequency? leaf bandwidth { description "Carrier bandwidth"; type decimal64 { fraction-digits "5"; } } leaf ipfd { description "Input Power Flux Density (dBW / mA2 / 4kHz)"; type decimal64 { fraction-digits "5"; } } } } / / antenna-dish definition augment / kssp:sat-payload / kssp:rf-components / kssp:rf- component { when "kssp:component-type = 'antenna-dish'" { 2021293029 18 May 2026 description "Applies to all converter components"; } container antenna-dish { leaf direction { description "tx or rx"; type identityref { base kssattypes:antenna-direction; } } leaf polarity { description "x y pol"; type identityref { base kssattypes:antenna-polarity; } } container pointing { / / todo } uses ksrfplan:rf-planning-info; } } / / lna definition augment / kssp:sat-payload / kssp:rf-components / kssp:rf- component { when "kssp:component-type = 'lna'" { description "Applies to all converter components"; } container lna { leaf phase-noise { description "phase noise"; type decimal64 { fraction-digits "3"; } config false; } leaf noise-temperature { description "noise temperature"; type decimal64 { fraction-digits "3"; } config false; } uses kstelem:sat-telemetry; uses ksrfplan:rf-planning-info; } 2021293029 18 May 2026 } / / down converter definition augment / kssp:sat-payload / kssp:rf-components / kssp:rf- component { when "kssp:component-type = 'down-converter'" { description "Applies to all down-converter components"; } container down-converter { uses kstelem:sat-telemetry; uses ksrfplan:rf-planning-info; leaf gainAdjust { description "Gain adjustment"; type decimal64 { fraction-digits "5"; } } } } / / adc defintion augment / kssp:sat-payload / kssp:rf-components / kssp:rf- component { when "kssp:component-type = 'adc'" { description "Applies to all adc components"; } container adc { uses kstelem:sat-telemetry; uses ksrfplan:rf-planning-info; } } / / dac defintion augment / kssp:sat-payload / kssp:rf-components / kssp:rf- component { when "kssp:component-type = 'dac'" { description "Applies to all dac components"; } container dac { uses kstelem:sat-telemetry; uses ksrfplan:rf-planning-info; } } 2021293029 18 May 2026 / / up converter definition augment / kssp:sat-payload / kssp:rf-components / kssp:rf- component { when "kssp:component-type = 'up-converter'" { description "Applies to all up-converter components"; } container up-converter { uses kstelem:sat-telemetry; uses ksrfplan:rf-planning-info; leaf gainAdjust { description "Gain adjustment"; type decimal64 { fraction-digits "5"; } } } } / / amplifier-lcamp definition augment / kssp:sat-payload / kssp:rf-components / kssp:rf- component { when "kssp:component-type = 'amplifier-lcamp'" { description "Applies to all amplifier-lcamp components"; } container amplifier-lcamp { leaf phase-noise { description "phase noise"; type decimal64 { fraction-digits "3"; } config false; } leaf noise-temperature { description "noise temperature"; type decimal64 { fraction-digits "3"; } config false; } leaf gainAdjust { description "Gain adjustment"; type decimal64 { fraction-digits "5"; } } 2021293029 18 May 2026 uses kstelem:sat-telemetry; uses ksrfplan:rf-planning-info; } } / / amplifier-twt definition augment / kssp:sat-payload / kssp:rf-components / kssp:rf- component { when "kssp:component-type = 'amplifier-twt'" { description "Applies to all amplifier-twt components"; } container amplifier-twt { leaf phase-noise { description "phase noise"; type decimal64 { fraction-digits "3"; } config false; } leaf noise-temperature { description "noise temperature"; type decimal64 { fraction-digits "3"; } config false; } leaf noise-power-ratio { description "NPR"; type decimal64 { fraction-digits "3"; } config false; } uses kstelem:sat-telemetry; uses ksrfplan:rf-planning-info; } } / / antenna phased array definiton augment / kssp:sat-payload / kssp:rf-components / kssp:rf- component { when "kssp:component-type = 'antenna-phased-array'" { description "Applies to all converter components"; } container antenna-phased-array { uses kspa:phased-array-antenna; 2021293029 18 May 2026 uses kstelem:sat-telemetry; uses ksrfplan:rf-planning-info; } } / / downlink carrier defintion augment / kssp:sat-payload / kssp:rf-components / kssp:rf- component { when "kssp:component-type = 'downlink-carrier'" { description "Applies to all downlink-carrier components"; } container downlink-carrier { leaf bandwidth { description "Carrier bandwidth"; type decimal64 { fraction-digits "5"; } } leaf eirp { description "Radidated power"; type decimal64 { fraction-digits "5"; } } } } / / beam definition augment / kssp:sat-payload / kssp:rf-components / kssp:rf- component { when "kssp:component-type = 'beam'" { description "Applies to beam"; } container beam { leaf direction { description "tx or rx"; type identityref { base kssattypes:antenna-direction; } } leaf max-frequency { description "the max fequency of the related amp if this is freq limited"; type decimal64 { fraction-digits "5"; } } 2021293029 18 May 2026 leaf min-frequency { description "the min fequency of the related amp if this is freq limited"; type decimal64 { fraction-digits "5"; } } leaf pattern-depth { description "depth of the 2d array of the pattern"; type yang:counter32; } leaf pattern-center-power { description "power at center of beam pattern in dbW"; type decimal64 { fraction-digits "3"; } } leaf pattern-center-gt { description "g / t at the center of the pattern"; type decimal64 { fraction-digits "3"; } } / / to define pattern leaf pattern { description "beam pattern"; type int32; } uses ksrfplan:rf-planning-info; } } / / baseball switch defintion augment / kssp:sat-payload / kssp:rf-components / kssp:rf- component { when "kssp:component-type = 'baseball-switch'" { description "Applies to baseball-switch"; } container baseball-switch { leaf switch-position { description "bb-switch-13, bb-switch-14"; type identityref { base kssattypes:bb-switch-position; } } uses kstelem:sat-telemetry; uses ksrfplan:rf-planning-info; 2021293029 18 May 2026 } } rpc build-route { input { uses ksmatport:route; } output { leaf status { description "status of the build-route operation"; type string; } } / / close of output } / / close of rpc } / / end of Kratos Space SatPayload Module
[0086] The following is an example definition of satellite telemetry in YANG: / / Contents of "sat-telemetry" module kratos-sat-telemetry { namespace "urn:kratosspace:kratos-sat-telemetry"; prefix "kstelem"; description "Basic telemetry grouping for satellite payload modelling"; organization "Kratos Space"; contact "Bob Potter"; revision 2020-04-03 { description "Initial revision"; } grouping sat-telemetry { container telemetry { leaf temperature { description "Temperature of telemetered component"; type decimal64 { fraction-digits "5"; } config false; } leaf voltage { description "Voltage draw of telemetered component"; type decimal64 { fraction-digits "5"; } config false; } leaf current { description "Current draw of telemetered component"; 2021293029 18 May 2026 type decimal64 { fraction-digits "5"; } config false;
[0087] The following is an example satellite payload tree output of the payload YANG model: module: kratos-sat-payload +--rw sat-payload +--rw payload-id? +--rw payload-name? +--rw matrixSwitch yang:uuid string | | | | | | | | | | | | | | | +--rw slices | | | | | | | | | | | | | | +--rw slice* [slice-id] +--rw +--rw +--ro +--rw | | | | yang:counter32 yang:counter32 | | yang:counter32 yang:counter32 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | slice-id slice-number? port-count? input-ports yang:uuid yang:counter32 yang:counter32 +--rw input-port* [port-id] +--rw port-id +--rw port-number? +--ro bandwidth? +--rw sub-channel-count? | | | | | | +--rw yang:counter32 yang:counter32 +--ro +--ro +--rw | +--rw phase-noise? noise-temperature? rf-common-planning-info yang:uuid yang:counter32 decimal64 yang:counter32 decimal64 decimal64 +--rw delta-group-delay-matrix-depth? +--rw +--rw delta-group-delay-matrix? frequency-response-matrix-depth? +--rw frequency-response-matrix? sub-channels +--rw sub-channel* [sub-channel-id] +--rw sub-channel-id +--rw sub-channel-number? +--rw sub-channel-state? +--ro bandwidth? output-ports +--rw output-port* [port-id] +--rw port-id +--rw port-number? +--ro bandwidth? +--rw sub-channel-count? +--ro +--ro +--rw | phase-noise? noise-temperature? rf-common-planning-info yang:uuid yang:counter32 identityref decimal64 yang:uuid yang:counter32 decimal64 yang:counter32 decimal64 decimal64 +--rw delta-group-delay-matrix-depth? +--rw delta-group-delay-matrix? 2021293029 18 May 2026 yang yang | | counter32 counter32 | | | | | | | | | | | | | | | | | | | | | | | | | +--rw routes +--rw | | | | | | | | +--rw frequency-response-matrix-depth? | +--rw frequency-response-matrix? +--rw sub-channels +--rw sub-channel* [sub-channel-id] +--rw sub-channel-id +--rw sub-channel-number? +--rw sub-channel-state? +--ro bandwidth? +--rw route* [route-id] +--rw +--rw +--rw +--rw +--rw +--rw route-id route-name? direction? input-slice? input-port? input-channels yang:uuid string identityref yang:uuid yang:uuid yang:uuid yang:counter32 identityref decimal64 | +--rw input-channel* +--rw output-slice? +--rw output-port? +--rw output-channels +--rw output-channel* rf-component-chains yang:uuid yang:uuid yang:uuid yang:uuid +--rw rf-component-chain* [rf-component-chain-id] +--rw +--rw +--rw +--rw +--rw rf-component-chain-id direction? assoc-slice-id? assoc-port-id? rf-component-ids yang:uuid identityref yang:uuid yang:uuid +--rw +--rw rf-component-id* rf-components yang:uuid +--rw rf-component* [component-id] +--rw +--rw +--rw +--rw component-id component-type? component-state? related-components yang:uuid identityref identityref | +--rw related-component* +--rw uplink-carrier yang:uuid | +--rw bandwidth? | +--rw ipfd? +--rw antenna-dish decimal64 decimal64 yang yang yang yang | | | | | counter32 | counter32 | counter32 | counter32 +--rw +--rw +--rw +--rw direction? polarity? pointing rf-common-planning-info identityref identityref +--rw delta-group-delay-matrix-depth? +--rw delta-group-delay-matrix? +--rw frequency-response-matrix-depth? +--rw frequency-response-matrix? +--rw lna | | | | | +--ro phase-noise? +--ro noise-temperature? +--rw telemetry decimal64 decimal64 +--ro temperature? +--ro voltage? decimal64 decimal64 2021293029 18 May 2026 | | +--ro current? decimal64 | +--rw rf-common-planning-info | +--rw delta-group-delay-matrix-depth? yang:counter32 | +--rw delta-group-delay-matrix? yang:counter32 | +--rw frequency-response-matrix-depth? yang:counter32 | +--rw frequency-response-matrix? yang:counter32 +--rw down-converter | +--rw telemetry | | +--ro temperature? decimal64 | | +--ro voltage? decimal64 | | +--ro current? decimal64 | +--rw rf-common-planning-info | | +--rw delta-group-delay-matrix-depth? yang:counter32 | | +--rw delta-group-delay-matrix? yang:counter32 | | +--rw frequency-response-matrix-depth? yang:counter32 | | +--rw frequency-response-matrix? yang:counter32 | +--rw gainAdjust? decimal64 +--rw adc | +--rw telemetry | | +--ro temperature? decimal64 | | +--ro voltage? decimal64 | | +--ro current? decimal64 | +--rw rf-common-planning-info | +--rw delta-group-delay-matrix-depth? yang:counter32 | +--rw delta-group-delay-matrix? yang:counter32 | +--rw frequency-response-matrix-depth? yang:counter32 | +--rw frequency-response-matrix? yang:counter32 +--rw dac | +--rw telemetry | | +--ro temperature? decimal64 | | +--ro voltage? decimal64 | | +--ro current? decimal64 | +--rw rf-common-planning-info | +--rw delta-group-delay-matrix-depth? yang:counter32 | +--rw delta-group-delay-matrix? yang:counter32 | +--rw frequency-response-matrix-depth? yang:counter32 | +--rw frequency-response-matrix? yang:counter32 +--rw up-converter | +--rw telemetry | | +--ro temperature? decimal64 | | +--ro voltage? decimal64 | | +--ro current? decimal64 | +--rw rf-common-planning-info 2021293029 18 May 2026 | | +--rw delta-group-delay-matrix-depth? yang:counter32 | | +--rw delta-group-delay-matrix? yang:counter32 | | +--rw frequency-response-matrix-depth? yang:counter32 | | +--rw frequency-response-matrix? yang:counter32 | +--rw gainAdjust? decimal64 +--rw amplifier-lcamp | +--ro phase-noise? decimal64 | +--ro noise-temperature? decimal64 | +--rw gainAdjust? decimal64 | +--rw telemetry | | +--ro temperature? decimal64 | | +--ro voltage? decimal64 | | +--ro current? decimal64 | +--rw rf-common-planning-info | +--rw delta-group-delay-matrix-depth? yang:counter32 | +--rw delta-group-delay-matrix? yang:counter32 | +--rw frequency-response-matrix-depth? yang:counter32 | +--rw frequency-response-matrix? yang:counter32 +--rw amplifier-twt | +--ro phase-noise? decimal64 | +--ro noise-temperature? decimal64 | +--ro noise-power-ratio? decimal64 | +--rw telemetry | | +--ro temperature? decimal64 | | +--ro voltage? decimal64 | | +--ro current? decimal64 | +--rw rf-common-planning-info | +--rw delta-group-delay-matrix-depth? yang:counter32 | +--rw delta-group-delay-matrix? yang:counter32 | +--rw frequency-response-matrix-depth? yang:counter32 | +--rw frequency-response-matrix? yang:counter32 +--rw antenna-phased-array | +--rw element-count? yang:counter32 | +--rw pa-elements | | +--rw pa-element* [pa-element-id] | | +--rw pa-element-id yang:uuid | | +--rw attenuation? decimal64 | | +--rw phase-shift? decimal64 | +--rw antenna-array-matrix-switch | | +--rw aams-id? yang:uuid | | +--rw is-feq-limited? boolean | | +--rw aams-connections | | +--rw aams-connection* [aams-connection-id] | | +--rw aams-connection-id yang:uuid | | +--rw rf-component-id? yang:uuid | | +--rw related-beams | | | +--rw related-beam* yang:uuid | | +--rw max-frequency? decimal64 2021293029 18 May 2026 | | +--rw min-frequency? decimal64 | +--rw telemetry | | +--ro temperature? decimal64 | | +--ro voltage? decimal64 | | +--ro current? decimal64 | +--rw rf-common-planning-info | +--rw delta-group-delay-matrix-depth? yang:counter32 | +--rw delta-group-delay-matrix? yang:counter32 | +--rw frequency-response-matrix-depth? yang:counter32 | +--rw frequency-response-matrix? yang:counter32 +--rw downlink-carrier | +--rw bandwidth? decimal64 | +--rw eirp? decimal64 +--rw beam | | | | | | | | | yang:counter32 | yang:counter32 | yang:counter32 | yang:counter32 +--rw +--rw +--rw +--rw +--rw +--rw +--rw +--rw direction? max-frequency? min-frequency? pattern-depth? pattern-center-power? pattern-center-gt? pattern? rf-common-planning-info identityref decimal64 decimal64 yang:counter32 decimal64 decimal64 int32 +--rw delta-group-delay-matrix-depth? +--rw delta-group-delay-matrix? +--rw frequency-response-matrix-depth? +--rw frequency-response-matrix? +--rw baseball-switch +--rw switch-position? +--rw telemetry identityref | +--ro temperature? decimal64 | +--ro voltage? decimal64 | +--ro current? decimal64 +--rw rf-common-planning-info +--rw delta-group-delay-matrix-depth? yang:counter32 +--rw delta-group-delay-matrix? yang:counter32 +--rw frequency-response-matrix-depth? yang:counter32 +--rw frequency-response-matrix? yang:counter32 rpcs: +---x build-route +---w input | +---w route-id? | +---w route-name? | +---w direction? | +---w input-slice? | +---w input-port? | +---w input-channels | | +---w input-channel* yang:uuid string identityref yang:uuid yang:uuid yang:uuid 2021293029 18 May 2026 | +---w output-slice? yang:uuid | +---w output-port? yang:uuid | +---w output-channels | +---w output-channel* yang:uuid +--ro output +--ro status? string Variations and Modifications
[0088] The above description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the invention. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the general principles described herein can be applied to other embodiments without departing from the spirit or scope of the invention. Thus, it is to be understood that the description and drawings presented herein represent a presently preferred embodiment of the invention and are therefore representative of the subject matter which is broadly contemplated by the present invention. It is further understood that the scope of the present invention fully encompasses other embodiments that may become obvious to those skilled in the art and that the scope of the present invention is accordingly not limited.
[0089] Combinations, described herein, such as “at least one of A, B, or C”, “one or more of A, B, or C”, “at least one of A, B, and C”, “one or more of A, B, and C”, and “A, B, C, or any combination thereof” include any combination of A, B, and / or C, and may include multiples of A, multiples of B, or multiples of C. Specifically, combinations such as “at least one of A, B, or C”, “one or more of A, B, or C”, “at least one of A, B, and C”, “one or more of A, B, and C”, and “A, B, C, or any combination thereof” may be A only, B only, C only, A and B, A and C, B and C, or A and B and C, and any such combination may contain one or more members of its constituents A, B, and / or C. For example, a combination of A and B may comprise one A and multiple B’s, multiple A’s and one B, or multiple A’s and multiple B’s.
Claims
2021293029 18 May 20261. A method comprising using a network planning system to:receive a service model defining a service, wherein the service model is defined in Yet Another Next Generation (YANG) data modeling language;generate one or more network models based on the service model:wherein each of the one or more network models represents a required networkconfiguration, and is defined in the YANG data modeling language; andwherein each of the one or more network models comprises satellite payloadinformation to enable service provisioning; andsend at least one of the one or more network models to a control system in a network represented by the at least one network model; andusing the control system to:receive a payload model of a satellite payload in a satellite orbiting Earth;wherein the payload model is defined in YANG data modeling language; andwherein the payload model represents a configuration for the satellite payload to support the service;wherein the satellite payload comprises one or more components; andwherein the configuration specifies a setting for at least one of the one or more components;translate the payload model into one or more satellite commands for configuring the satellite payload according to the configuration represented in the payload model; andreconfigure the satellite payload using the one or more satellite commands.
2. The method of Claim 1:wherein the network planning system is comprised in a ground control system; andwherein reconfiguring the satellite payload comprises transmitting the one or more satellite commands to the satellite orbiting Earth.
3. The method of Claim 1:wherein the network planning system is comprised in the satellite; andwherein the payload model is received via transmission from a ground control system.
4. The method of Claim 1, 2 or 3, wherein the method further comprises using the networkplanning system to:receive telemetry from the satellite orbiting Earth; andtranslate the telemetry into the payload model.2021293029 18 May 20265. The method of any one of Claims 1 to 4, further comprising using the control system inthe network to:receive the at least one network model;generate one or more device models based on the at least one network model, wherein each of the one or more device models represents a configuration of a network device in the network represented by the at least one network model, and is defined in the YANG data modeling language; andsend at least one of the one or more device models to a network device represented by the at least one device model.
6. The method of any one of Claims 1 to 5, wherein the service model defining the serviceis received from an operations and business support system.
7. The method of any one of Claims 1 to 6, further comprising using the network planningsystem to communicate with a network planning system in another domain.
8. The method of Claim 7, wherein the other domain is a terrestrial communications domain.
9. The method of any one of Claims 1 to 8, wherein reconfiguring the satellite payloadcomprises provisioning the satellite payload for at least one new service.
10. The method of any one of Claims 1 to 8, wherein reconfiguring the satellite payloadcomprises changing at least one existing service of the satellite payload.
11. The method of any one of Claims 1 to 8, wherein reconfiguring the satellite payloadcomprises terminating at least one existing service of the satellite payload.
12. The method of any one of Claims 1 to 11, wherein the payload model further representsone or more capabilities of the satellite payload and one or more procedures for configuring the satellite payload to support one or more services.
13. The method of any one of Claims 1 to 12, wherein the payload model comprises:a representation of a digital switch matrix or channelizer of the satellite payload;a representation of one or more radio frequency (RF) components of the satellite payload; anda representation of one or more connections between the digital switch matrix or channelizer and the one or more RF components.2021293029 18 May 202614. The method of Claim 13, wherein the payload model comprises a remote procedure callthat updates a configuration of the digital switch matrix or channelizer.
15. The method of Claim 13, wherein the payload model comprises a remote procedure callthat accounts for changes in state and redundancy of the one or more RF components.
16. The method of any one of Claims 1 to 15, wherein the payload model comprises:a representation of an analog-to-digital converter;a switch or a router; anda digital-to-analog converter.
17. The method of any one of Claims 1 to 16, wherein the payload model comprises a remoteprocedure call that retrieves a state of one or more components of the satellite payload.
18. The method of any one of Claims 1 to 16, wherein the payload model comprises a remoteprocedure call that accesses one or more telemetry functions of the satellite payload.
19. The method of any one of Claims 1 to 16, wherein the payload model comprises arepresentation of a phased array antenna as a plurality of antenna elements.
20. The method of Claim 19:wherein each representation of one of the plurality of antenna elements comprises a representation of one or more beams; andwherein each representation of a beam represents one or more of:a beam direction;minimum frequency;maximum frequency;power;gain; ornormalized beam pattern.
21. The method of any one of Claims 1 to 16:wherein the payload model comprises a remote procedure call that updates the configuration for the satellite payload; andwherein translating the payload model into one or more satellite commands comprises: receiving a call to the remote procedure call, wherein the call is formatted ineXtensible Markup Language (XML);2021293029 18 May 2026accessing a translation XML document that maps the remote procedure call to one or more satellite command and control (C2) procedures; andcommunicating the C2 procedures to a satellite C2 system that communicatively links with the satellite.
22. The method of any one of Claims 1 to 21, further comprising using the network planningsystem to:update the payload model to represent one or more of a current status, current configuration, or current performance of the satellite payload; andsend the updated payload model to a network planning system.
23. The method of Claim 22, further comprising:using the network planning system to coordinate at least one service provided by the satellite payload with at least one service provided by one or more other network devices within a network, based on the payload model; anda model, defined in the YANG data modeling language, of each of the one or more other network devices.
24. A system comprising:at least one hardware processor; andone or more software modules that are configured to, when executed by the at least one hardware processor, perform the method of any preceding claim.
25. A non-transitory computer-readable medium having instructions stored therein, whereinthe instructions, when executed by a processor, cause the processor to perform the method of any one of Claims 1 to 23.