Overview
Introduction to NOS
The New Observing Strategies (NOS) initiative within the NASA Earth Science Technology Office Advanced Information Systems Technology program envisions future Earth science missions with distributed sensors (nodes) interconnected by a communications fabric that enables dynamic and intelligent operations. Some NOS concepts resemble systems-of-systems or collaborative systems where operational authority is distributed among multiple systems, necessitating new methods for systems engineering and design to cope with more decentralized control over constituent systems.
NOS-T Architecture
NOS-T is best suited for conceptual, systems-level design of NOS components and operational concepts. The system architecture follows a loosely-coupled event-driven architecture (EDA) where member nodes communicate through events in the form of notification messages sent over a network.
Key characteristics of the NOS-T architecture:
Flexible Node Types: Nodes can be software applications, simulation models, science databases, or hardware
Enhanced Scalability: The EDA provides scalability and reliability by using consistent event-handling functions
Modular Design: Participants can join and leave experiments without reconfiguring the testbed
Security: Maintains protection of proprietary software and data while enabling cross-organizational tests
Event Broker Infrastructure
The NOS-T architecture relies on a centralized infrastructure component called an event broker (or message broker) to exchange event notifications between applications. A broker simplifies communication by requiring each application to connect only to the broker, rather than directly to every other application.
NOS-T adopts RabbitMQ, an open-source message broker implementing the Advanced Message Queuing Protocol (AMQP). RabbitMQ uses a publish-subscribe messaging pattern with:
Publishers: Applications that produce events
Subscribers: Applications that consume events
Topics: Categories for event types that applications can publish to or subscribe to
---
config:
theme: redux
---
flowchart LR
subgraph User_Apps["User Apps"]
direction TB
UserApp1["User App 1"]
UserApp2["User App 2"]
UserApp3["User App 3"]
end
UserApp1 <-. Publish/Subscribe .-> Network["Network"]
UserApp2 <-. Publish/Subscribe .-> Network
UserApp3 <-. Publish/Subscribe .-> Network
Network -- Publish --> EventBroker["Event Broker<br>(AMQP Protocol)"]
EventBroker -. Subscribe .-> Network
UserApp1:::red
UserApp2:::blue
UserApp3:::green
Network:::gray
EventBroker:::darkorange1
classDef red fill:#ff0000,stroke:#000000,stroke-width:2px
classDef blue fill:dodgerblue,stroke:#000000,stroke-width:2px
classDef green fill:#00ff00,stroke:#000000,stroke-width:2px
classDef gray fill:#808080,stroke:#000000,stroke-width:2px
classDef darkorange1 fill:#ff8c00,stroke:#000000,stroke-width:2px
System Components
NOS-T consists of two top-level system components:
User System (tailored to each test case):
Consists of user applications developed by users
Applications run on separate hosts controlled by each user
Can model entire observing systems or individual components (sensors, communication links, algorithms, etc.)
Must meet basic NOS-T interface requirements for orchestration
NOS-T System (fixed for all test cases):
Managed by an NOS-T operator
Includes the event broker infrastructure
Contains a manager application that orchestrates test runs
Ensures proper application synchronization, topic configuration, and consistent message structure
---
config:
theme: redux
---
flowchart LR
subgraph cluster0["User System"]
direction TB
PI1["NOS PI"]
PI2["NOS PI"]
PI3["NOS PI"]
UserApp1["User Apps"]
UserApp2["User Apps"]
UserApp3["User Apps"]
end
subgraph cluster2["NOS-T Operator"]
EventBroker["Broker<br>(AMQP)"]
ManagerApplication["Manager"]
Monitor["Monitor"]
end
subgraph cluster1["NOS-T System"]
direction TB
NOSTInfrastructure["NOS-T Infrastructure"]
cluster2
end
PI1 --> UserApp1
PI2 --> UserApp2
PI3 --> UserApp3
UserApp1 --> NOSTInfrastructure
UserApp2 --> NOSTInfrastructure
UserApp3 --> NOSTInfrastructure
NOSTInfrastructure --> EventBroker & ManagerApplication & Monitor
TestCase["NOS Test Case"] --> PI1 & PI2 & PI3
PI1:::red
PI2:::blue
PI3:::green
UserApp1:::red
UserApp2:::blue
UserApp3:::green
NOSTInfrastructure:::orange
TestCase:::oval
classDef red fill:#ff0000,stroke:#000000,stroke-width:2px
classDef blue fill:dodgerblue,stroke:#000000,stroke-width:2px
classDef green fill:#00ff00,stroke:#000000,stroke-width:2px
classDef orange fill:orange,stroke:#333,stroke-width:2px
classDef oval shape:oval,fill:lightgrey,stroke:#333,stroke-width:2px
%% Increase the line width of all arrows and change color to black
linkStyle default stroke-width:3px, stroke:black;
Development Tools
To aid in application development, the open-source[*] NOS-T tools library provides templates for implementing basic NOS-T functionality:
Manager application template: Orchestrates test execution
Network Time Protocol (NTP) capabilities: Synchronizes applications across distributed systems
Observer templates: For implementing sensor applications
Observable templates: For science applications
Publisher templates: For regular messaging (e.g., “heartbeat” messages)
Broker connection utilities: For connecting to the message broker
Network Time Protocol (NTP) Round Trip Time Delay
Language Compatibility
While the NOS-T tools and most example applications are coded in Python, the system supports multiple programming languages:
Any language with RabbitMQ interface libraries can be used
Supported protocols include AMQP and MQTT
Examples of compatible platforms:
JavaScript (used in the “scoreboard” geospatial visualization)
MATLAB (via available RabbitMQ libraries)
Applications in a test suite can use different programming languages as long as they maintain a common message structure.