gbproxy2: Implement processing of BVC-Flow-Control via BVC FSM
This is a FIXME in the new post-rewrite, pool-capable gbproxy code base
bssgp2: Encoding + Decoding functions for BVC and MS flow control
bssgp_bvc_fsm: Add basic BVC flow control rx/tx support
The FSM doesn't actually implement the flow control logic,
it only decodes / dispatches and encodes messages.
gbproxy: Implement handling of BVC Flow Control
We must locally terminate + acknowledge any inbound BSSGP-FC-BVC,
and ourselves trigger the transmission of BSSGP-FC-BVC to each
SGSN in the pool.
Depends: libosmcoore.git Ie59be6761177c43456898be9148727f15861a622
gbproxy: Implement scaling of BVC flow control in SGSN pool
When there are multiple SGSNs inside a pool, we need to decide
how much of the per-BVC capacity advertised by the BSS in its
BVC-FLOW-CONTROL we should announce to each of the pool members.
A conservative approach would be to advertise 1/num_sgsn, but
there may also be use case where over-provisioning (announcing more
than an equal share of the capacity) is useful.
Hence, let's introduce "pool bvc-flow-control-ratio <1-100>" in order
to allow the administrator to decide.
- % Done changed from 30 to 80
We still need to adjust the actual values, i.e. if the BSS advertiseds 1 Mbps overall bucket leak rate, then each SGSN should probably only get part of that, i.e. half in case of 2 SGSN. Possibly with some kind of overcommittment?
splitting / dividing the advertised capacity is implemented in https://gerrit.osmocom.org/c/osmo-sgsn/+/21696
There is no automatic testing yet for this feature, but it has been manually verified, as can be seen in attached pcap file (two SGSN with each 50% of the capacity)