Skip to content
Success

Changes

Summary

  1. AS loadsharing: Introduce combined_linkset (details)
  2. AS loadsharing: Initial routing implementation based on extended-SLS (details)
  3. AS loadsharing: Implement AS loadshare, skip unavailable AS/lset when (details)
  4. AS loadsharing: Introduce AS rate_ctr rx:msu:sls:* (details)
  5. AS loadsharing: Introduce AS rate_ctr tx:msu:sls:* (details)
  6. ASP loadsharing: Pass ownership of Tx xua_msg down the stack [1/2] (details)
  7. ASP loadsharing: Pass ownership of Rx xua_msg up the stack [2/2] (details)
  8. ASP loadsharing: Pass xua_msg down to xua_as_transmit_msg (details)
  9. ASP loadsharing: Implement based on VTY configuration (details)
  10. sccp: Apply SLS on locally-originated transmitted Connection-Oriented (details)
Commit 544637531ba28153434467bc228f168708e4e813 by Pau Espin Pedrol
AS loadsharing: Introduce combined_linkset

A "Combined linkset" is a set of routes for different AS or linksets
whose destination (DPC & mask) and priority are the same.

An SP is expected to load share traffic among linksets/AS of a given
combined linkset, based on DPC/OPC,SLS. This means certain state or
heuristics need to be stored in the combined linkset in order to keep
forwarding messages of the same transaction (SLS) over the same specific
AS/linkset.

This commit introduces the osmo_ss7_combined_linkset object, which
is roughly a set of osmo_ss7_route sharing DPC+MASK+PRIO key, and
it is placed in between the osmo_ss7_route_table and osmo_ss7_route
entries.
User still operates/manages indiviual routes, but those are grouped
internally inside its corresponding combined linkset.

No routing change is implemented in this commit. Code is only tweaked
minimally so far to retrieve the first route in the combined link.
This will allow future work, i.e to:
- Check if data can be sent over the combined link (at least one
  AS/linkset is ACTIVE), and otherwise try using a combined link with a
  less specific match (shorter prefix mask or/and lower priority).
- Select one of the AS/linksets inserted the combined link, based on
  OPC/DPC/SLS of the message.

Related: SYS#7112
Change-Id: I500ec74ba975e3c93071771027e4e5fe6000e6f3
The file was addedsrc/ss7_combined_linkset.h
The file was modifiedsrc/ss7_route_table.h
The file was addedsrc/osmo_ss7_combined_linkset.c
The file was modifiedsrc/osmo_ss7_route.c
The file was modifiedsrc/ss7_route.h
The file was modifiedsrc/Makefile.am
The file was modifiedsrc/osmo_ss7_route_table.c
The file was modifiedsrc/osmo_ss7_vty.c
Commit fee7fc09c939dce8b5e1b168d33cfa91e471921b by Pau Espin Pedrol
AS loadsharing: Initial routing implementation based on extended-SLS

This commit adds a new set of APIs and structs to support routing based
on OPC,DPC,SLS fields and hence to support AS-loadshare.

The routing decision is still actually left as beforehand, ie. the first
AS/linkset in the combined_linkset is selected.

This will allow future work, i.e to:
    - Check if data can be sent over the combined link (at least one
      AS/linkset is ACTIVE), and otherwise try using a combined link with a
      less specific match (shorter prefix mask or/and lower priority).
    - Select one of the AS/linksets in the combined link based on a
      round robin approach.

Related: SYS#7112
Change-Id: I0fb4ca4959096f748a23082efa0481300de56436
The file was modifiedsrc/osmo_ss7_combined_linkset.c
The file was modifiedsrc/ss7_combined_linkset.h
The file was modifiedsrc/osmo_ss7_hmrt.c
The file was modifiedsrc/xua_rkm.c
The file was modifiedsrc/ss7_route_table.h
The file was modifiedtests/ss7/ss7_test.c
The file was modifiedsrc/osmo_ss7_route.c
The file was modifiedsrc/xua_snm.c
The file was modifiedtests/vty/osmo_stp_test.vty
The file was modifiedinclude/osmocom/sigtran/osmo_ss7.h
The file was modifiedsrc/osmo_ss7_instance.c
The file was modifiedsrc/ss7_instance.h
The file was modifiedsrc/osmo_ss7_route_table.c
The file was modifiedsrc/osmo_ss7_vty.c
The file was modifiedsrc/sccp_scrc.c
Commit ebc633d559467ad0f6f50dce4b6e415b24ac2d16 by Pau Espin Pedrol
AS loadsharing: Implement AS loadshare, skip unavailable AS/lset when choosing

Pick normal route containing destination AS/lset to serve a given
func(<OPC,DPC,SLS>)=eSLS on a round-robin base.
If normal route becomes unavailable, pick an alternative route in a
similar way. This alternative route will be used until itself becomes
unavailable or the normal route becomes available again.

Related: SYS#7112
Change-Id: I928fb1ef5db6922f1386a188e3fbf9e70780f25d
The file was modifiedsrc/osmo_ss7_combined_linkset.c
The file was modifiedtests/ss7/ss7_test.c
The file was modifiedtests/vty/osmo_stp_route_prio.vty
The file was modifiedsrc/osmo_ss7_hmrt.c
The file was modifiedsrc/ss7_combined_linkset.h
The file was modifiedsrc/xua_snm.c
Commit c44a2d080175cc332916ddda365fab54258697f6 by Pau Espin Pedrol
AS loadsharing: Introduce AS rate_ctr rx:msu:sls:*

Related: SYS#7112
Change-Id: I695bd3933a116323db45ab7f45dcf539791139aa
The file was modifiedsrc/m3ua.c
The file was modifiedsrc/sua.c
The file was modifiedsrc/ipa.c
The file was modifiedsrc/osmo_ss7_as.c
The file was modifiedsrc/ss7_as.h
Commit fbed730464592eef7d922114d2fd2cd547c5b52e by Pau Espin Pedrol
AS loadsharing: Introduce AS rate_ctr tx:msu:sls:*

Related: SYS#7112
Change-Id: Ia446e11ea24ecb021a3dddf5547aa2b3cdbbe60b
The file was modifiedsrc/ss7_as.h
The file was modifiedsrc/osmo_ss7_as.c
The file was modifiedsrc/osmo_ss7_hmrt.c
Commit da2d0fe1a206ce808708ad4c2aa582c9711aa0e0 by Pau Espin Pedrol
ASP loadsharing: Pass ownership of Tx xua_msg down the stack [1/2]

This is a first step towards getting MTP OPC & SLS fields down the stack
so that they can be used to implement loadsharing at ASP level.
So far, we always encode the xua_msg (which holds the OPC and SLS info
into xua_msg->mtp) into a msgb before passing it to as->fi through event
XUA_AS_E_TRANSFER_REQ, which in turn calls xua_as_transmit_msg(as, msg).

This patch is part 1 of 2 patches, which only modifies mostly the
Tx path, but still requires modifications on Rx path (done in patch 2/2)
to properly handle the forwarding path from Rx to Tx without double
freeing. It is submitted in 2 parts to ease code reviewing.

Future patches will modify that code to pass a xua_msg and only
encode it into a msgb deeper into the stack after an ASP has been
selected and msg needs to be transmitted.

All previous calls to sua_tx_xua_asp() actually had a memory leak before
this change, hence why no xua_msg_free() is removed from callers in this
patch. Since now ownership is taken by sua_tx_xua_asp() which always
frees the xua msg, the memleak is fixed.

Related: SYS#7112
Change-Id: I49e718e624da08510a9c3d28bdb360c59f9a65d3
The file was modifiedsrc/ipa.c
The file was modifiedsrc/osmo_ss7_hmrt.c
The file was modifiedsrc/sua.c
The file was modifiedsrc/m3ua.c
Commit 82c1d2c8c6699349258869bce690293b590a6b0d by Pau Espin Pedrol
ASP loadsharing: Pass ownership of Rx xua_msg up the stack [2/2]

This is the second step patch where we also pass ownership on Rx path so
that forwarded xua_msgs can be passed back to the Tx path without
freeing them.

For SUA there's no change needed and we keep freeing the rx xua_msg
right at the end of sua_rx_msg() since there's no actual path forwarding
a xua_msg object back into Tx path, it always goes through upper layers
using newly allocated primitives.

Related: SYS#7112
Change-Id: Icf3b4dda550637f722a9fe56d0313f49c8a2964e
The file was modifiedsrc/m3ua.c
The file was modifiedsrc/ipa.c
The file was modifiedsrc/xua_rkm.c
Commit 13fd8c8e5aae1bc19e0012504b48f56252dcdc50 by Pau Espin Pedrol
ASP loadsharing: Pass xua_msg down to xua_as_transmit_msg

This finally allows having access to msg values such as OPC and SLS at
the point in code where decision is taken to route the message to one
ASP inside the AS.
This will be needed to properly implemented ASP loadsharing within an
AS.

Related: SYS#7112
Change-Id: I70e5d33c7537dc0b72b5abced876e69018cc0829
The file was modifiedsrc/m3ua.c
The file was modifiedsrc/xua_as_fsm.h
The file was modifiedsrc/xua_as_fsm.c
The file was modifiedsrc/ipa.c
The file was modifiedsrc/xua_internal.h
The file was modifiedsrc/xua_msg.h
The file was modifiedsrc/sua.c
Commit 91643f2f0449d08a74c6dd1433eb3076754e863e by Pau Espin Pedrol
ASP loadsharing: Implement based on VTY configuration

Calculate AS Extended SLS (7 bit) out of OPC (12 bits) and SLS (4 bits)
based on VTY configuration.
Assign a normal destination ASP for each AS-eSLS and try to use it
whenever possible; fallback to an alternative ASP when normal ASP is not
available.

Related: SYS#7112
Change-Id: I5f47e40b70ed566034cd1533b71e21fc03e94f6c
The file was modifiedsrc/ss7_as.h
The file was modifiedsrc/osmo_ss7_vty.c
The file was modifiedsrc/xua_as_fsm.c
The file was modifiedsrc/osmo_ss7_as.c
The file was modifiedtests/vty/osmo_stp_test.vty
Commit 7781eb275da41a9b6b1ea5d8b0e802e87a8e9d53 by Pau Espin Pedrol
sccp: Apply SLS on locally-originated transmitted Connection-Oriented messages

Change-Id: I1956acf631867b12b647d14c10057ded20d7fa2f
The file was modifiedsrc/sccp_scoc.c