Project

General

Profile

Bug #5036

ns2: add support for BSS SNS procudures (e.g. adding a bind to a SNS on the BSS)

Added by lynxis 8 months ago. Updated 26 days ago.

Status:
Closed
Priority:
High
Assignee:
Category:
libosmogb
Target version:
-
Start date:
02/19/2021
Due date:
% Done:

100%

Spec Reference:

Description

When adding a new bind to a SNS, the SNS fsm must do procedures to inform the SGSN about the new binds/endpoint.


Subtasks

Bug #5048: ns2: BSS SNS: testcase add bind, update weight before answering the procedureClosedlynxis

Associated revisions

Revision 0a7c5eea (diff)
Added by lynxis 6 months ago

gprs_ns2: SNS: allow transition missing transition GPRS_SNS_ST_UNCONFIGURED

A transistion from GPRS_SNS_ST_UNCONFIGURED -> GPRS_SNS_ST_UNCONFIGURED.

Related: OS#5036
Change-Id: I125e7e5a08ea6aff6e0308a18b5c0a6d0392ad32

Revision 27a55922 (diff)
Added by lynxis 6 months ago

gprs_ns2: add functions for SNS add/del/change-weight messages

Related: OS#5036
Change-Id: Ib9492e213e82c18c7dcce6ba7d64e897b4c74796

Revision a93cc364 (diff)
Added by lynxis 6 months ago

ns: TC_sns_bss_change_weight_timeout: fix expected SNS_SIZE PDU

Allow to work with IPv4 and IPv6 endpoints and only expected known required
fields (e.g. NSEI and rst_flag).

Related: OS#5036
Change-Id: I60f669d7c8838d460a14c6604c4375a8d47f5149

Revision 60548b10 (diff)
Added by lynxis 6 months ago

ns: TC_sns_bss_change_weight_timeout rework TC to use g_handle_rx_alive

With g_handle_rx_alive the test case doesn't need to use alt{}
as f_ns_exp takes care of the NS_ALIVE.

Related: OS#5036
Change-Id: I45f4392b556912bf60859f354a5687a44e6beeb1

Revision 6f17ecc8 (diff)
Added by lynxis 4 months ago

NS_Tests: add testcases for incoming SNS_ADD/DEL procedures

Allow to test add and remove a bind via vty.

Related: OS#5036
Change-Id: I98c04c083521ab38b58e8df9f1aee89445ab536d

Revision 2d10ee65 (diff)
Added by lynxis 4 months ago

RAW_NS: f_incoming_sns_chg_weight() allow to receive/send the chg_weight over a different

The SGSN/PCU will use a different NSVC as the NSVC which will be changed weight'ed.

Related: OS#5036
Change-Id: I5766afaa74db30d94318312ab775e7933b9df783

Revision 7a625027 (diff)
Added by lynxis 4 months ago

NS_Tests: reset the weights of all udp binds

Some test cases change the weight of the binds. Ensure all test cases
starts with the same configuration.

Related: OS#5036
Change-Id: Iae2ba130b2f7d29ec8b417f07d0bef87f74ce5a4

Revision 6608ce95 (diff)
Added by lynxis 4 months ago

gprs_ns2_sns: move selection of the next bind into own function

It will be also used by del_bind() when removing an active bind

Related: OS#5036
Change-Id: Ic39f0e5474ecc055d9a1b6a7b30777574d8b741d

Revision 31d52e15 (diff)
Added by lynxis 4 months ago

gprs_ns2_sns: bss: improve validation of configuration

Some combination of IPv4 and IPv6 result in incomplete
combination.
E.g. IPv6 binds, but only IPv4 endpoints and vice versa.

Related: OS#5036
Change-Id: I2fcf67bc2431ddac23c4ae23cebbb29771e573f1

Revision 71128671 (diff)
Added by lynxis 4 months ago

gprs_ns2_sns: refactor local and remote entries into a struct

The IPv4/IPv6 elemens are the same for local and remote.
Refactor the entries into a struct to use function to manipulate
them with a single function.

Related: OS#5036
Change-Id: I05e053a9eb3328655502dfe2981c8f402104e292

Revision d2c6c497 (diff)
Added by lynxis 4 months ago

gprs_ns2_sns: refactor ns2_clear_ipv46_entries_local to use new elems functions

Related: OS#5036
Change-Id: I7225f7a4215842f0ea601ce6d9d38220f98f808d

Revision c2ba25e4 (diff)
Added by lynxis 4 months ago

gprs_ns2_sns: use struct ns2_sns_elems in add/update/remove remote_elems

Prepare to use the function also with local elems.

Related: OS#5036
Change-Id: I7db43c8dbd5bd7e7b07a7d629d2615bfa18623db

Revision d3507e85 (diff)
Added by lynxis 4 months ago

gprs_ns2_sns: move gss->remote specific check out of add_ip4_elem/add_ip6_elem

Allow to use the add_ip4_elem also with local elemens.

Related: OS#5036
Change-Id: Ib48dfd7567467e60c5af2348924ece5cc6124206

Revision e23387a1 (diff)
Added by lynxis 4 months ago

NS_Tests: add test case TC_sns_bss_add_change_del

1. do SNS configuration
2. add a bind
3. receive the SNS_ADD
4. before answering the SNS_ADD, change the weight via vty and remove the bind

Related: OS#5036
Change-Id: Ibc565bba4c7e0a0b4dd28a48847dbdb998c8528d

Revision cc56ddcd (diff)
Added by lynxis 4 months ago

gprs_ns2_sns: add check for duplicates to add_ip6_elem()

The ip4 version already checks for duplicates.

Related: OS#5036
Change-Id: I4a1528ea3427946ce465085919b2b522d3cedd07

Revision 62310556 (diff)
Added by lynxis 4 months ago

gprs_ns2_sns: refactor ip4_weight_sum/ip6_weight_sum

Use the new introduced struct ns2_sns_elems instead of
the elems seperate.

Related: OS#5036
Change-Id: I0956ab6085554210569188f52cae121e32fca19b

Revision 019da4b0 (diff)
Added by lynxis 4 months ago

gprs_ns2_sns: refactor nss_weight_sum_data -> ip46_weight_sum_data

Allow to use ip46_weight_sum_data for local endpoints as well.

Related: OS#5036
Change-Id: I75d88f3da89ad13e34a3fd5ae72bd967d81f4abc

Revision 077ce5ac (diff)
Added by lynxis 4 months ago

gprs_ns2_sns: replace ns2_sns_type with address family

Reduces the code as the conversion between address family (bind)
and ns2_sns_type is not needed anymore.

Related: OS#5036
Change-Id: I1bcdd43af34c926d4b88491d00669422c299bef7

Revision 68ab9c41 (diff)
Added by lynxis 4 months ago

gprs_ns2_sns: bss: set gss->family

gss->family (and gss->ip) was never set.
So IPv6 should have never worked.

Fixes: e769f5226be6 ("gprs_ns2_sns: rework IP-SNS initial remote")
Related: OS#5036
Change-Id: I4e39dc5c7f766a7040645ceb62afdf6a9cfad00f

Revision bd6e9a1d (diff)
Added by lynxis 4 months ago

RAW_NS/NS_Provider_IPL4: allow to use the new NSVC interface

RAW_NS used previous a single TTCN3 port for a single UDP port
(source/listen side).
This has the limitation that only a single NSVC could be tested for a
local UDP port. However SNS tests require multiple NSVCs over a single UDP port.
NS_Provider_IPL4 already supports multiple NSVCs for the NS_Emulation.
Extend the support in NS_Provider_IPL4 to also allow RAW_NS to use
multiple NSVCs.

Related: OS#5036
Change-Id: Iafd9310e04066958914201da0cbdcd563bd5c976

Revision 5a50a96f (diff)
Added by lynxis 3 months ago

gprs_ns2_sns: implement local change weight procedure

When changing the bind ip-sns weight, initiate a
SNS CHANGE WEIGHT procedure to inform the other side.

Related: OS#5036
Change-Id: Icec4dabb46bc198f68f91bfe09ba279fbe68d454

Revision 7aa7da63 (diff)
Added by lynxis 3 months ago

gprs_ns2_sns: implement outbound SNS ADD procedures

When adding a bind, the remote side needs to be
informed via the SNS ADD procedure.

Related: OS#5036
Change-Id: I71c33200bd1f0307ceb943ee958db5ebe3623d36

Revision dd79258e (diff)
Added by lynxis 3 months ago

gprs_ns2_sns: implement outbound SNS DEL procedures

When removing a bind the remote side needs to be
informed via the SNS DELETE procedure.

Related: OS#5036
Change-Id: I53cd54dfd262c70c425c3f13dad3b29526daa523

Revision 3a7ad146 (diff)
Added by lynxis 2 months ago

gprs_ns2_sns: implement local change weight procedure

When changing the bind ip-sns weight, initiate a
SNS CHANGE WEIGHT procedure to inform the other side.

Related: OS#5036
Change-Id: Icec4dabb46bc198f68f91bfe09ba279fbe68d454

Revision 32f30640 (diff)
Added by lynxis 2 months ago

gprs_ns2_sns: implement outbound SNS ADD procedures

When adding a bind, the remote side needs to be
informed via the SNS ADD procedure.

Related: OS#5036
Change-Id: I71c33200bd1f0307ceb943ee958db5ebe3623d36

Revision 98fb1517 (diff)
Added by lynxis 2 months ago

gprs_ns2_sns: implement outbound SNS DEL procedures

When removing a bind the remote side needs to be
informed via the SNS DELETE procedure.

Related: OS#5036
Change-Id: I53cd54dfd262c70c425c3f13dad3b29526daa523

Revision 1f3193d3 (diff)
Added by lynxis about 2 months ago

gprs_ns2_sns: implement local change weight procedure

When changing the bind ip-sns weight, initiate a
SNS CHANGE WEIGHT procedure to inform the other side.

Related: OS#5036
Change-Id: Icec4dabb46bc198f68f91bfe09ba279fbe68d454

Revision 9cd39ac6 (diff)
Added by lynxis about 2 months ago

gprs_ns2_sns: implement outbound SNS ADD procedures

When adding a bind, the remote side needs to be
informed via the SNS ADD procedure.

Related: OS#5036
Change-Id: I71c33200bd1f0307ceb943ee958db5ebe3623d36

Revision db07a449 (diff)
Added by lynxis about 2 months ago

gprs_ns2_sns: implement outbound SNS DEL procedures

When removing a bind the remote side needs to be
informed via the SNS DELETE procedure.

Related: OS#5036
Change-Id: I53cd54dfd262c70c425c3f13dad3b29526daa523

History

#1 Updated by lynxis 8 months ago

  • Status changed from New to In Progress

#2 Updated by laforge 8 months ago

  • Priority changed from Urgent to High

#3 Updated by laforge 8 months ago

  • Assignee set to lynxis

#4 Updated by lynxis 7 months ago

  • Status changed from In Progress to Stalled
  • % Done changed from 0 to 40

I'm waiting for SNS SGSN patches. I'm also unsure if this is the right way to implement it.

https://gerrit.osmocom.org/q/topic:%22procedure%22+(status:open%20OR%20status:merged)

#5 Updated by laforge 7 months ago

  • Status changed from Stalled to New

lynxis wrote:

I'm waiting for SNS SGSN patches.

merged now., uns-stalling

#6 Updated by lynxis 6 months ago

  • Status changed from New to In Progress

#7 Updated by lynxis 6 months ago

  • % Done changed from 40 to 50

I've reimplemented the change weight procedure with a different approach.
2x ttcn3 test case succeed now.

Next step is the ADD + DEL procedure. I've also a simpler approach for them now.

#8 Updated by lynxis 6 months ago

I've created 2x ttcn cases for sns_add and sns_del.
sns_add succeed, sns del not yet.

also add/del need more testcases and also unitest for the race and corner cases.

#9 Updated by lynxis 4 months ago

I've reconsidered my implementation and did it in a different way.
Also the ttcn3 test cases went some review and there is a new proposal in gerrit.

The last missing part is the SGSN side. The procedure work also for the SGSN side, but there are the following tasks left:

  1. ttcn3 test cases
  2. terminate the SNS connection similiar as of GPRS_SNS_EV_REQ_SELECT_ENDPOINT

#10 Updated by lynxis 4 months ago

  • % Done changed from 50 to 80

#11 Updated by lynxis 4 months ago

  • Status changed from In Progress to Feedback
  • % Done changed from 80 to 90

In review now.

#12 Updated by lynxis 4 months ago

  • Status changed from Feedback to Stalled

until refcount handled. The SNS code has recursion problems.

#13 Updated by lynxis about 2 months ago

waiting for review

#14 Updated by lynxis 26 days ago

  • Status changed from Stalled to Closed
  • % Done changed from 90 to 100

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)