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_destination Set the active status of param host to value of param active. Data is sent only to active hosts.

Buffers

  • in_buf The kotkean buffer to hold the packets to be transmitted to L1 nodes

    • Format: 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