osmo-ggsn: implement echo request against osmo-sgsn
osmo-ggsn is missing a timer (+ vty cmd) to configure sending GTP EchoRequet against each osmo-sgsn.
The idea is to have pdp contexts grouped by peer (S)GSN (in a linked list), and when a restart ctr greater than the last one we had recorded is received, then drop all contexts of that (S)GSN.
This should help avoiding pdp contexts being kept forever if an sgsn dies or restarts.
3GPP TS 29.060 sec 7.2.2 "Echo Response" https://www.etsi.org/deliver/etsi_ts/129000_129099/129060/12.06.00_60/ts_129060v120600p.pdf
3GPP TS 23.007 sec 18 "GTP-C based restart procedures" https://www.etsi.org/deliver/etsi_ts/123000_123099/123007/12.06.00_60/ts_123007v120600p.pdf
See similar work done in osmo-sgsn.git fa1201004f85b6e44d746d6044d5a43d04634fa4.
Working fine with manual testing (against osmo-sgsn). I still need to add some TTCN3 cases before merging it, so setting it as WIP.
TTCN3 test cases already exist in ttcn3-sgsn suite, so it's mostly about replicating similar tests in ttcn3-ggsn.BTW, while looking at osmo-sgsn related patches, some stuff which should be fixed/improved there:
Allow echo-interval 0 to disable echo request/response (and add APIs to start/stop timers if 0->!0 or !0->0)(done with "no echo-interval")
- Drop GTP pdp contexts if echo request times out (and add a count reference similar to what I did in osmo-ggsn to make sure we don't delete context too quickly?) <-- This one still needs to be implemented.
- Status changed from In Progress to Feedback
- % Done changed from 0 to 90
related osmo-sgsn patches explained in last comment are available here:
https://gerrit.osmocom.org/c/osmo-sgsn/+/15308 sgsn: gtp: Drop related pdp contexts on echo timeout against GGSN
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15306 sgsn: Introduce test TC_attach_echo_timeout
Once all related patches are merged, we can close this ticket.