Proto commits in firedancer-io/firedancer

These commits are when the Protocol Buffers files have changed: (only the last 100 relevant commits are shown)

Commit:6e6d031
Author:Richard Patel
Committer:ripatel-fd

bundle: streamline txn delivery removes ugly logic that double-parsed and buffered bundle txns due to design flaws in nanopb and stem

The documentation is generated from this commit.

Commit:29bb988
Author:rspahn-jump
Committer:GitHub

Support receiving VLAN packets in all providers. (#12725) This implements functionality to receive VLAN packets from the NIC in all providers. Tested with a scapy script sending traffic from one port to another on a cx6 for xdp and mlx5 then on a intel nic for iavf. scapy ``` from scapy.all import * b = Ether(src='98:b7:85:a8:10:e3', dst='98:b7:85:a8:10:e2') ip = IP(src='198.18.0.2', dst='198.18.0.1') / UDP(sport=12345, dport=5678) / Raw(b'x'*64) sendp(b/Dot1Q(vlan=100)/ip, iface='cx6port1', count=100) ``` iavf ``` user@host:~$ diff /tmp/metrics_before /tmp/metrics_after | grep pkt_rx < iavf_pkt_rx_total{kind="iavf",kind_id="0"} 0 > iavf_pkt_rx_total{kind="iavf",kind_id="0"} 100 < iavf_pkt_rx_bytes_total{kind="iavf",kind_id="0"} 0 > iavf_pkt_rx_bytes_total{kind="iavf",kind_id="0"} 10600 < iavf_vlan_pkt_rx_total{kind="iavf",kind_id="0"} 0 > iavf_vlan_pkt_rx_total{kind="iavf",kind_id="0"} 100 ``` xdp w/ rx vlan offload disabled ``` user@host:~$ diff /tmp/metrics_before /tmp/metrics_after | grep pkt_rx < net_pkt_rx_total{kind="net",kind_id="0"} 0 > net_pkt_rx_total{kind="net",kind_id="0"} 100 < net_pkt_rx_bytes_total{kind="net",kind_id="0"} 0 > net_pkt_rx_bytes_total{kind="net",kind_id="0"} 10600 < net_vlan_pkt_rx_total{kind="net",kind_id="0"} 0 > net_vlan_pkt_rx_total{kind="net",kind_id="0"} 100 ``` mlx5 ``` user@host:~$ diff /tmp/metrics_before /tmp/metrics_after | grep pkt_rx < mlx5_pkt_rx_total{kind="mlx5",kind_id="0"} 0 > mlx5_pkt_rx_total{kind="mlx5",kind_id="0"} 100 < mlx5_pkt_rx_bytes_total{kind="mlx5",kind_id="0"} 0 > mlx5_pkt_rx_bytes_total{kind="mlx5",kind_id="0"} 10600 < mlx5_vlan_pkt_rx_total{kind="mlx5",kind_id="0"} 0 > mlx5_vlan_pkt_rx_total{kind="mlx5",kind_id="0"} 100 ```

Commit:3461f0b
Author:Ishan Bhatt
Committer:Nishk Patel

stakes: add stake delegation disk spill metrics

Commit:327729c
Author:Richard Patel

Merge remote-tracking branch 'origin/main' into ripatel/jit

Commit:fbc5668
Author:Richard Patel
Committer:ripatel-fd

bundle, grpc: switch to fd_pb Port the bundle client and auth to fd_pb and drop the nanopb based gRPC send API. Removes the bundle nanopb schemas.

Commit:f39dd86
Author:Emily Wang

upd parent sad path

Commit:8ad09d6
Author:Richard Patel

Merge remote-tracking branch 'origin/main' into ripatel/jit

Commit:9aafbb2
Author:Richard Patel
Committer:ripatel-fd

further Tower and repair cleanups - remove documentation referencing Tower BFT components - remove unused [tiles.repair] slot_max config option - remove keyguard tower matcher

Commit:4b7d18b
Author:King Butcher
Committer:King Butcher

accdb: decouple rooting/purging requests from bg maintenance Replace the single T1->T2 command slot with a monotonic root/purge counter. T1 owns fork data structures (fork states, purge unlink, descends clearing on slot reuse) and publishes requests without waiting. T2 applies root levels in order, drains intrusive purge list, and reclaims retired forks on every pass. Replay only waits when no fork slot is free.

Commit:6cc2cb8
Author:Richard Patel
Committer:Richard Patel

fix

Commit:dd89189
Author:Richard Patel
Committer:Richard Patel

jit machinery

Commit:2bb30d5
Author:Richard Patel
Committer:Richard Patel

runtime: execute transpiled programs

Commit:7a5c19d
Author:jherrera-jump
Committer:jherrera-jump

gui: add timeline txn, tile state and revenue queries

Commit:0dd9bfa
Author:Richard Patel
Committer:Richard Patel

further Tower and repair cleanups - remove documentation referencing Tower BFT components - remove unused [tiles.repair] slot_max config option - remove keyguard tower matcher

Commit:9b71b0e
Author:Richard Patel
Committer:Richard Patel

runtime: execute transpiled programs

Commit:c8806dc
Author:Riley Spahn

net: Count neighbor failure in routing failures This adds a specific metric to count neighbor failures in routing failures instead of in drops. They are sent to the kernel.

Commit:d3e51b8
Author:Riley Spahn

net: regenerate metrics for net tiles

Commit:7e72fa0
Author:Emanuele Cesena
Committer:Emanuele Cesena

dragon

Commit:8c2b36f
Author:Ishan Bhatt

bundle: add protocol config and protos

Commit:25124c8
Author:Manik Jain

rebase fixes

Commit:8ed0f34
Author:Manik Jain
Committer:Manik Jain

sched: transaction redispatching

Commit:8b2c459
Author:Ishan Bhatt
Committer:Ishan Bhatt

stakes: add stake delegation disk spill metrics

Commit:357a657
Author:Ishan Bhatt

make some updates for the config

Commit:0ba5645
Author:Charles Li
Committer:GitHub

repair: cleanup dead code and deprecate rotor name (#12713)

Commit:940e95e
Author:Ishan Bhatt

adding block protos

Commit:3e208ac
Author:Ishan Bhatt

some bundle connecting logic

Commit:073db05
Author:jherrera-jump
Committer:jherrera-jump

gui: txn states

Commit:967b581
Author:Ishan Bhatt
Committer:Ishan Bhatt

accdb: store fork lists in chunks

Commit:81a7f01
Author:Riley Spahn
Committer:Riley Spahn

Support receiving VLAN packets in all providers. This implements functionality to receive VLAN packets from the NIC in all providers. Each will attempt to configure the hardware to strip the VLAN tag if possible. It that's not possible, then Firedancer will fall back to parsing the packet in software. Tested with a scapy script sending traffic from one port to another on a cx6 for xdp and mlx5 then on a intel nic for iavf. scapy ``` from scapy.all import * b = Ether(src='98:b7:85:a8:10:e3', dst='98:b7:85:a8:10:e2') ip = IP(src='198.18.0.2', dst='198.18.0.1') / UDP(sport=12345, dport=5678) / Raw(b'x'*64) sendp(b/Dot1Q(vlan=100)/ip, iface='ens5f0np0', count=100) ``` iavf ``` user@host:~$ diff /tmp/metrics_before /tmp/metrics_after | grep pkt_rx < iavf_pkt_rx_total{kind="iavf",kind_id="0"} 0 > iavf_pkt_rx_total{kind="iavf",kind_id="0"} 100 < iavf_pkt_rx_bytes_total{kind="iavf",kind_id="0"} 0 > iavf_pkt_rx_bytes_total{kind="iavf",kind_id="0"} 10600 < iavf_vlan_pkt_rx_total{kind="iavf",kind_id="0"} 0 > iavf_vlan_pkt_rx_total{kind="iavf",kind_id="0"} 100 ``` xdp w/ rx vlan offload disabled ``` user@host:~$ diff /tmp/metrics_before /tmp/metrics_after | grep pkt_rx < net_pkt_rx_total{kind="net",kind_id="0"} 0 > net_pkt_rx_total{kind="net",kind_id="0"} 100 < net_pkt_rx_bytes_total{kind="net",kind_id="0"} 0 > net_pkt_rx_bytes_total{kind="net",kind_id="0"} 10600 < net_vlan_pkt_rx_total{kind="net",kind_id="0"} 0 > net_vlan_pkt_rx_total{kind="net",kind_id="0"} 100 ``` xdp w/ rx vlan offload enabled ``` user@host:~$ diff /tmp/metrics_before /tmp/metrics_after | grep pkt_rx < net_pkt_rx_total{kind="net",kind_id="0"} 0 > net_pkt_rx_total{kind="net",kind_id="0"} 100 < net_pkt_rx_bytes_total{kind="net",kind_id="0"} 0 > net_pkt_rx_bytes_total{kind="net",kind_id="0"} 10600 ``` mlx5 ``` user@host:~$ diff /tmp/metrics_before /tmp/metrics_after | grep pkt_rx < mlx5_pkt_rx_total{kind="mlx5",kind_id="0"} 0 > mlx5_pkt_rx_total{kind="mlx5",kind_id="0"} 100 < mlx5_pkt_rx_bytes_total{kind="mlx5",kind_id="0"} 0 > mlx5_pkt_rx_bytes_total{kind="mlx5",kind_id="0"} 10600 ```

Commit:a526c96
Author:Richard Patel
Committer:ripatel-fd

net: drop packets with IPv4 options Due to recent events, the Internet continued filtering IPv4 packets with IHL!=5 even more aggressively. We can take this opportunity to also reject such annoying packets.

Commit:d88ed9d
Author:Richard Patel

shred: cache exact invalid signature equation verdicts Bound each resolver to256 negative entries keyed by all signature, derived Merkle root and leader public-key bytes. Populate only after ERR_MSG; preserve authentication-before-spill and expose cache hits separately. Native controls cover full-pool repeats, forced-key collisions, legitimate repair, fresh-S bypass and churn.

Commit:9398f67
Author:Nishk Patel

events: add runtime_account_lthash for per-account LtHash diffing Emit one runtime_account_lthash event each time replay computes an account's final-value LtHash, carrying the first 32 bytes of the hash, so a bank hash mismatch can be traced to an account against Agave. Rows are emitted only where the hash is already computed: out-of-band ADD jobs on exec tiles, in-band writes (fd_hashes, accdb_svm close_rw), footer vote rewards through fd_vote_queue, and in-band epoch stake rewards. A per-bank lthash_seq (in fd_bank_t padding) orders them; a recomputed hash is always dispatched later and takes a higher value, so the highest lthash_seq per (bank_seq, pubkey) is the final hash.

Commit:aff1fd3
Author:cmoyes-jump
Committer:GitHub

metrics: add empty failov tile schema (#12719)

Commit:15cd6ff
Author:Charles Li
Committer:Charles Li

repair: cleanup dead code and deprecate rotor name

Commit:6189fce
Author:emwang-jump
Committer:GitHub

replay: fast leader handover (#12618)

Commit:96a43bb
Author:jherrera-jump
Committer:GitHub

gossip: publish client_id to prometheus metrics (#12711)

Commit:9edd442
Author:Richard Patel

net: backport native iavf provider for Sunburst Integrate the seven upstream iavf commits through ed59b6642f with VFIO, LACP, multi-tile queues, efficient layout, and summary telemetry. Preserve the accepted private consensus/runtime/pack/repair trees and transaction timing opt-in. Adjust the JSON config layout assertion for the existing private telemetry field.

Commit:c2b2865
Author:Richard Patel
Committer:Richard Patel

net: drop packets with IPv4 options Due to recent events, the Internet continued filtering IPv4 packets with IHL!=5 even more aggressively. We can take this opportunity to also reject such annoying packets.

Commit:a5d60dd
Author:Richard Patel
Committer:ripatel-fd

votor: reject non-G2 vote signatures instead of reporting success ag_pool_add_vote returned AG_POOL_SUCCESS for a vote it dropped for failing the deferred G2 subgroup check. The tile then counted the vote as accepted and could mark the reward cert dirty. Return AG_POOL_ERR_VOTE_VERIFY, and have the tile ban the peer and count it under SignatureFailed. Mostly cosmetic, metrics and events stop counting dropped votes as accepted. A sender can no longer force reward-cert republish with bad signatures. It also matches how certs already fail (AG_POOL_ERR_CERT_VERIFY)

Commit:1910ac9
Author:Riley Spahn
Committer:Riley Spahn

Support receiving VLAN packets in all providers. This implements functionality to receive VLAN packets from the NIC in all providers. Each will attempt to configure the hardware to strip the VLAN tag if possible. It that's not possible, then Firedancer will fall back to parsing the packet in software.

Commit:1d2df2a
Author:jherrera-jump
Committer:jherrera-jump

gui: add remaining timeline queries

Commit:a0fb443
Author:Ishan Bhatt
Committer:Ishan Bhatt

replay: remove bank eviction

Commit:18a06b6
Author:Ishan Bhatt
Committer:Ishan Bhatt

accdb: store fork lists in chunks

Commit:036bca1
Author:Manik Jain
Committer:Manik Jain

sched: transaction redispatching

Commit:1cf9db0
Author:topointon-jump
Committer:GitHub

disco, pack: auction scheduler strategy (#12619) Credit to Hervé Guillemet (Puffin Validator)!

Commit:9ccca11
Author:Kunal Bhargava
Committer:Kunal Bhargava

events: fix runtime diff reporting and add runtime_vote_write

Commit:733fc1c
Author:cmoyes-jump
Committer:GitHub

failover: on-demand operator promotion (#11769) * votor: add Alpenglow vote history export and adoption * failover: add the HELLO message and the session state machine * failover: frame the protocol messages on the wire * failover: add the [failover] config and derive the junk identity path * failover: generate the junk identity and boot every tile under it * failover: preload both identities and sign the member cert and pair TLS * failover: add the handoff messages and validate the final Tower * failover: add the authenticated on-demand pair channel * failover: add identity switching and failover commands to the admin bus * failover: add the on-demand handoff controller * failover: add the promote, demote and status commands * failover: document the controller, channel and protocol states * failover: make set-identity restart failover on the new identity and remove demote * Harden failover authentication and bound public listener work * Generate failover junk identities in memory * failover: make handoffs Alpenglow-only * failover: add operator guidance to the duplicate instance abort * failover: adapt admin and config tests to Tower removal * failover: remove obsolete Alpenglow activation guidance * failover: keep validators that do not use failover unchanged * votor: fence the boot identity's windows on every adoption * failover: boot under [paths.identity_key] and take the target from failover promote * votor: persist the adopted signing constraints at a failover switch * votor: drop the engage latch, export without changing consensus state * failover: add [failover.boot_to_standby] to boot as a standby under an in-memory junk key * failover: reuse fd_tlsrec_sock, fd_token_bucket and fd_keepalive and simplify the channel * failover: make the junk key a plain spare and authenticate the channel as the identity * Apply batched suggestions from code review * failover: ration TLS sessions separately from admission to resist DoS * failover: make promote wait for the outcome and remove status * failover: pair on the identity alone and make the bus links reliable * failover: count a promotion as voting for the preflight * failover: refuse a retarget on a voting holder, dial per run, name the duplicate instance * failover: exit with a code for the state the machines are in * book: add the failover guide and shorten the failover promote reference * book: list the failover promote exit codes in order * book: tighten two sentences in the failover guide * book: fix typos in the failover pages * failover: make --force try the handoff first and add --adopt * failover: shorten the handoff wait and tighten the liveness check for --adopt and --force * failover: give failover promote one exit code per outcome and keep result strings in the CLI * failover: review fixes for the handoff CLI, the --adopt liveness rule and the channel * failover: tighten the result table in the guide * failover: split promote and takeover, add --standby, make [failover.enabled] gate only the listener

Commit:e0f0ba3
Author:jherrera-jump
Committer:jherrera-jump

gui: add remaining timeline queries

Commit:5ba0ba2
Author:Emily Wang
Committer:Emily Wang

event schema update abandon prefix bank

Commit:726d1c9
Author:Tom Pointon
Committer:Tom Pointon

update metric description

Commit:5e2be0f
Author:jherrera-jump
Committer:GitHub

gui: add query_shreds fec granularity, query_agg_shreds (#12601)

Commit:d4f62e3
Author:jherrera-jump
Committer:jherrera-jump

gui: add remaining timeline queries

Commit:bb46f96
Author:jherrera-jump
Committer:jherrera-jump

gui: add query_shreds fec granularity, query_agg_shreds

Commit:9f796d8
Author:Tom Pointon
Committer:topointon-jump

disco, pack: auction scheduler strategy Credit to Puffin Validator (https://puffin-validator.xyz/pebble)

Commit:c33077d
Author:topointon-jump
Committer:GitHub

pack: only keep the 16 highest-tipping early bundles (#12589) * pack: only keep the 16 highest-tipping early bundles * add comments

Commit:fd49a54
Author:Tristan Carter
Committer:Tristan Carter

net: implement fd_iavf_tile.c and integrate the iavf config stage/metrics etc into rest of FD

Commit:3629ba2
Author:jherrera-jump
Committer:jherrera-jump

gui: add remaining timeline queries

Commit:0233545
Author:Ishan Bhatt
Committer:Ishan Bhatt

accdb: store fork lists in chunks

Commit:9c2efb6
Author:Yufeng Zhou
Committer:GitHub

replay: move lthash off the transaction critical path Also switch to a policy of one block per rdisp lane for better performance.

Commit:22eb6c6
Author:jherrera-jump
Committer:jherrera-jump

gui: add query_shreds fec granularity, query_agg_shreds

Commit:da88a2c
Author:Tom Pointon
Committer:Tom Pointon

disco, pack: auction scheduler strategy Credit to Puffin Validator (https://puffin-validator.xyz/pebble)

Commit:7656432
Author:Tom Pointon
Committer:Tom Pointon

pack: only keep the 16 highest-tipping early bundles

Commit:37b94d9
Author:Richard Patel
Committer:Richard Patel

net: drop packets with IPv4 options Due to recent events, the Internet continued filtering IPv4 packets with IHL!=5 even more aggressively. We can take this opportunity to also reject such annoying packets.

Commit:ac49b92
Author:Yufeng Zhou
Committer:Sunburst Benchmark

replay: move lthash off the transaction critical path Also switch to a policy of one block per rdisp lane for better performance. (cherry picked from commit 701e14eeb3ca6b02425554b97a6cef89a105fc92)

Commit:58158d8
Author:Ishan Bhatt

accdb: store fork lists in chunks

Commit:701e14e
Author:Yufeng Zhou
Committer:Yufeng Zhou

replay: move lthash off the transaction critical path Also switch to a policy of one block per rdisp lane for better performance.

Commit:a3f17bf
Author:King Butcher

store: fix generated metrics & gcc test build

Commit:b97e4fe
Author:Manik Jain

review comments

Commit:4daf9a4
Author:King Butcher

Merge remote-tracking branch 'origin/main' into king/store-fec-spill

Commit:0d5168b
Author:Ishan Bhatt
Committer:Ishan Bhatt

txncache: spill to disk

Commit:ad4dbbf
Author:Charles Moyes
Committer:Charles Moyes

failover: make promote wait for the outcome and remove status

Commit:e8bfd32
Author:Charles Moyes
Committer:Charles Moyes

failover: boot under [paths.identity_key] and take the target from failover promote

Commit:e8d3fac
Author:Charles Moyes
Committer:Charles Moyes

failover: make set-identity restart failover on the new identity and remove demote

Commit:f08d93e
Author:Charles Moyes
Committer:Charles Moyes

failover: add identity switching and failover commands to the admin bus

Commit:e7b2438
Author:Tom Pointon
Committer:Tom Pointon

disco, pack: auction scheduler strategy Credit to Puffin Validator (https://puffin-validator.xyz/pebble)

Commit:5fc9f9c
Author:Tom Pointon
Committer:Tom Pointon

pack: only keep the 16 highest-tipping early bundles

Commit:32d912d
Author:Manik Jain

assign field numbers to the new replay metric

Commit:604486a
Author:Manik Jain
Committer:Manik Jain

rotor, replay: stop replaying blocks consensus ruled out

Commit:afb6ec7
Author:Ishan Bhatt
Committer:Ishan Bhatt

txncache: spill to disk

Commit:8506356
Author:Yufeng Zhou
Committer:Yufeng Zhou

replay: move lthash off the transaction critical path Also switch to a policy of one block per rdisp lane for better performance.

Commit:ee5b898
Author:Richard Patel
Committer:Richard Patel

votor: defer long header QUIC packets Implement QoS via a deferral queue: Immediately process 1-RTT packets (established conns) and defer anything else.

Commit:4f5a199
Author:Richard Patel
Committer:Richard Patel

bundle, grpc: switch to fd_pb Port the bundle client and auth to fd_pb and drop the nanopb based gRPC send API. Removes the bundle nanopb schemas.

Commit:c5aa9a6
Author:jherrera-jump
Committer:GitHub

gui: per-ring store bases and per-tile CPU timeline (#12534)

Commit:a193a71
Author:Tristan Carter
Committer:Tristan Carter

net: implement fd_iavf_tile.c and integrate the iavf config stage/metrics etc into rest of FD

Commit:f3f3539
Author:Manik Jain
Committer:Manik Jain

backup: add disk read and write latency histograms

Commit:eac13b7
Author:Manik Jain
Committer:Manik Jain

accdb: prefix tile histograms with AccountsDisk

Commit:a5d5472
Author:Manik Jain
Committer:Manik Jain

accdb: add disk read and write latency histograms

Commit:883465a
Author:Manik Jain
Committer:Manik Jain

snapin: account failed flushes, simplify flush timing

Commit:efee3ae
Author:Manik Jain
Committer:Manik Jain

snapin: export pwrite latency and flush phase times

Commit:67fcfb8
Author:Richard Patel

progcache: use accdb fork graph

Commit:c5f1b94
Author:mjain-jump
Committer:GitHub

diag: export accounts disk usage counters (#12547)

Commit:ac50ee5
Author:Riley Spahn
Committer:Riley Spahn

mlx5: Add VLAN Tx support to the mlx5 provider. This is similar to the XDP implementation that will build the packet as usual and then pass the packet buffer from the L3 header on to the send call. Adds several new metrics for VLAN Tx.

Commit:28357f6
Author:Riley Spahn
Committer:Riley Spahn

net: Support VLAN Rx in the XDP and mlx5 providers. Accept VLAN packets on the Rx path. They're combined because mlx5 required few changes beyond the shared parser. The XDP program now redirects frames that carry a single VLAN tag with an IPv4 inner Ethertype. The shared Rx parser in fd_net_rx_pkt strips the tag in software by moving the ethernet header up to the IP header. A new VlanPktRx counter on the net and mlx5 tiles counts these packets. The mlx5 provider creates its Rx work queues with IB_UVERBS_WQ_FLAGS_CVLAN_STRIPPING so the NIC removes the tag before software sees the packet. With XDP, most NICs also strip the tag when rx-vlan-offload is on. The software path covers NICs and configurations that don't. Also regenerates the metrics event schemas and events.proto so the new net and mlx5 metric fields get real field numbers in place of the provisional ones.

Commit:457620f
Author:Yufeng Zhou
Committer:Yufeng Zhou

replay: move lthash off the critical path Also switch to a model of one block per rdisp lane for better performance.

Commit:32aa493
Author:Tom Pointon
Committer:Tom Pointon

pack: only keep the 16 highest-tipping early bundles

Commit:0349a86
Author:Richard Patel
Committer:Ishan Bhatt

runtime: per-tile sysvar cache Remove the sysvar cache from banks and instead have one sysvar cache per exec tile, to reduce memory usage. The sysvar cache is invalidated whenever an exec tile switches banks and is keyed by bank_seq. The existing sched logic is locality-friendly, so invalidations should be relatively infrequent.

Commit:9f9a9f9
Author:Charles Moyes
Committer:Charles Moyes

failover: make set-identity restart failover on the new identity and remove demote

Commit:22bb05f
Author:Charles Moyes
Committer:Charles Moyes

failover: add identity switching and failover commands to the admin bus

Commit:ef1f645
Author:Charles Moyes
Committer:Charles Moyes

failover: boot under [paths.identity_key] and take the target from failover promote

Commit:0015d0a
Author:Riley Spahn
Committer:Riley Spahn

mlx5: Add VLAN Tx support to the mlx5 provider. This is similar to the XDP implementation that will build the packet as usual and then pass the packet buffer from the L3 header on to the send call. Adds several new metrics for VLAN Tx.