Data streaming: hardware architecture
architecture-beta
group control_board[CONTROL BOARD]
service timing_fanout(server)[Timing fanout board] in control_board
service vxi_control_board(server)[VXI Control board] in control_board
group wlsf_module[WLSF MODULE]
service detector_fpga(server)[WLSF Detector FPGA] in wlsf_module
group linux(server)[LINUX STREAMING SERVER]
service kafka_runInfo(database)[kafka runInfo] in linux
service kafka_udp(database)[kafka UDP] in linux
service udp(server)[udp to kafka Rust] in linux
service event_processor(server)[event processor Rust] in linux
service kafka_events(database)[kafka Events] in linux
group external_signals[EXTERNAL SIGNALS]
service isis_timing(server)[ISIS Timing TOF GPS PPP Vetos] in external_signals
group ibex[IBEX IOCs] in linux
service kafka_dae_control(server)[KDAE Control] in ibex
service kafka_dae_diagnostics(server)[KDAE Diagnostics] in ibex
udp:T --> B:kafka_udp
kafka_udp:R --> L:event_processor
event_processor:B --> T:kafka_events
detector_fpga:R --> L:udp
timing_fanout:T --> B:detector_fpga
vxi_control_board:T --> B:timing_fanout
vxi_control_board:B <-- T:isis_timing
kafka_dae_control:L --> R:vxi_control_board
kafka_events:B --> T:kafka_dae_diagnostics
kafka_dae_control:B --> T:kafka_runInfo
Hardware components
VXI Control Board
Each instrument will have exactly one VXI streaming control board. It controls “global” instrument state, gets timing signals and PPP fed into it. It is what kafka_dae_control primarily talks to begin and end event streaming.
Timing Fanout board
This sends data from the VXI board to the (potentially multiple) WLSF modules. IBEX will not need to communicate to this.
WLSF Fibre module (FPGA)
An instrument may have several of these, depending on the instrument detector configuration. These have a similar UDP-based interface to the VXI boards but also have settings for each detector module.
IBEX will not need to talk to these except for “advanced” diagnostics.
Linux streaming server
This hosts a Kafka cluster, for this bit of infrastructure there are three topics:
runInfo- this containspl72and6s4trun starts/stops send bykafka_dae_controlraw_udp- this contains Kafka messages corresponding to each UDP packet which was received (with metadata such as IP address) sent by the rust udp to Kafka process which is also hosted on this serverevents- this containsev44formed by the event stream processor which is also hosted on this server
This also hosts the kafka_dae_control and kafka_dae_diagnostics IOCs.