Design of a Stream Based Software Radar Architecture
Total Page:16
File Type:pdf, Size:1020Kb
Design of a Stream Based Software Radar Architecture Karl Cronburg (Bucknell University), Mentors: Frank Lind & Robert Schaefer (MIT Haystack) Goals: YAML Object Definition: Stream data directly from instruments to signal processing and This project primarily focused on the design and analysis systems implementation of a YAML-based Interface Definition Dynamic scaling of computation and storage resources Language (IDL) used for defining composite objects with named attributes. Event-based control of processing and analysis systems Plug-and-play message distribution YAML object definition provides… Automatic system configuration for various tasks A human readable data format Robust data / object formats for: Easily listen to / debug data streams Radar frequency voltages Non-programmer understandable object composition Metadata Implementation agnostic object definitions Status, logging, and debugging events Use any YAML-aware programming language A highly capable yet robust object format Capable of default attribute values Handles all basic data types (strings, floats, ints, etc) Tools: Numpy aware Figure 1 – Example object definition for RF voltage data and Figure 2 – Example usage of the dynamic object instantiation, serialization, and Redhat Enterprise Linux Operating Environment Automatic construction of composite data types corresponding metadata. streaming capabilities of various python modules written for this project. Python Implementation GNU C Based Instruments Object Serialization: Runtime Results: ZeroMQ Sockets Library (python binding) Gevent – deterministic python event-based threading Formats: YAML (Yet Another Markup Language) YAML – slow but human-readable serialization for message stream debugging MessagePack Object Serialization MessagePack – fast & compact serialization for on-the-wire data transmission PyCUDA GPU Acceleration HDF5 – object storage in a consistent scientific data format Numpy & Scipy Scientific Analysis Tools YAML !Person: {name : ‘Bob’, age : 22} Matplotlib Plotting Person HDF5 Data Storage name = Bob Serialize msgpack '\x83\xa3age\x16\xa6__type\xa6Person\xa4name\xa3Bob' Figure 3 – Average message rate using MessagePack serialization (with and without compression), age = 22 broken up by task. Small (126 – 512 byte messages) were used. HDF5 (binary) Features: Passive Radar Prototype: On-the-fly deserialization – dynamic loading of object definitions from revision control ‘Pickle’ like syntax for loading and dumping objects Optional gzip compression Example serialization usage shown in Fig. 2. ZeroMQ Object Transport: This Project: The ZeroMQ sockets library provides elastic / scalable plug-and-play style messaging. Messaging Patterns: The primary objective of this project is to collect, analyze, and Push / Pull Request / Reply – one-to-one connection process Radar data with live streaming and viewing capabilities using one-to-many connection, one-to-one and messaging existing and future processing and analysis components. messaging Puller 1 REQ 1 The work I undertook towards this goal involved setting up the Replier REQ/REP 2 architecture for defining data objects apart from Radar processing Pusher msg 2 REQ 2 Puller 2 implementations, and further serializing these objects for transport over networks. Puller 3 REQ 3 Publish / Subscribe A similar architecture being designed is Ocean Observatories one-to-many connection and messaging Initiative (OOI) Cyberinfrastructure, for dynamically collecting and distributing Ocean-related data. SUB 1 Features Implemented: Automatic object (de)serialization Thanks to PUB msg 1,2,3 SUB 2 Debugging / re-routing message filters Frank Lind for giving clear specifications and assistance Optional hash-based integrity verification Robert Schaefer for implementation guidance Clean messaging interface (see Fig. 2) Phil Erickson, Vincent Fish, and KT Paul for organizing the REU SUB 3 The MIT Haystack staff for support throughout the summer .