frbNetworkProcess¶
-
class frbNetworkProcess : public kotekan::Stage¶
frbNetworkProcess Network transmission stage for FRB obs
This is an Kotekan stage that read packetized data from frbPostProcess and transmits 1024 beams to 256 links of frb backend. frbNetworkProcess distributes the out going traffic to four VLANS (10.6 10.7 10.8 10.9) on single 1 Gig port. The frb total data rate is ~0.55 gbps. The node IP address is derived by parsing the hostname.
- Todo:
Resolve the issue of NTP clock vs Monotonic clock.
- REST Endpoints
/frb/update_gains/``gpu_id``Any contact here triggers a re-parse of the gains file./frb/update_destinationSet the active status of paramhostto value of paramactive. Data is sent only to active hosts.
- Buffers
in_bufThe kotkean buffer to hold the packets to be transmitted to L1 nodesFormat: Array of unsigned char.
Metadata:
none
- Author
Arun Naidu, Davor Cubranic
- Param udp_frb_packet_size:
Int (default 4264). packet size including header
- Param udp_frb_port_number:
Int (default 1313). udp Port number for frb streams
- Param number_of_nodes:
Int (default 256). Number of L0 nodes
- Param number_of_subnets:
Int (default 4). Number of subnets or VLANS used for transmission of FRB data
- Param packets_per_stream:
Int (default 8). Number of packets for each stream within each frame
- Param L1_node_ips:
Array of Strings. List of IPs to send to. (?)
- Param beam_offset:
Int (default 0). Offset the beam_id going to L1 Process
- Param time_interval:
Unsigned long (default 125829120). Time per buffer in ns.
- Param column_mode:
bool (default false) Send beams in a single CHIME cylinder.
- Param ping_interval:
Uint32 (default 6 min) Time in seconds between sending a ping to check destination is live
- Param quick_ping_interval:
Uint32 (default 5 sec) Time in seconds for sending pings when a live node stops responding
- Param ping_dead_threshold:
Uint32 (default 30 sec) Duration in seconds of quick-checking state after which a node is declared dead if it still hasn’t responded. If 0, disable the checks entirely.
Public Functions
-
frbNetworkProcess(kotekan::Config &config, const std::string &unique_name, kotekan::bufferContainer &buffer_container)¶
Constructor, also initializes internal variables from config.
-
virtual ~frbNetworkProcess()¶
Destructor , cleaning local allocations.
-
void update_offset_callback(kotekan::connectionInstance &conn, nlohmann::json &json_request)¶
Callback to update the beam offset.
-
void set_destination_active_callback(kotekan::connectionInstance &conn, nlohmann::json &json_request)¶
Callback to change destination active status.
-
virtual void main_thread() override¶
main thread