This page describes the methodology used when running the benchmarks.

Rationale

The benchmark was performed using a real Sh Cache Microservice, and simulated network functions. The simulated network functions were run on separate hosts from the Sh Cache Microservice. The network functions (HSS, VoLTE, IP-SM-GW) were simulated to abstract away performance considerations for these functions. A real replicated Cassandra database was used, as simulating this effectively is impractical.

The benchmark was run at the maximum sustainable load level for the SH Cache Microservice node. In this configuration there is no tolerance for node failure, any additional incoming messages will be dropped. To allow for node failure, additional nodes need to be added to provide an acceptable margin (an N+K configuration).

Test setup

20 minutes of ramp up allows for the cache to reach a steady state. At this point data is expiring from the cache as fast as it is being replaced, due to a custom cache retention period. Additionally, this allows the majority of JIT compilation to occur before full load is reached. The JIT compiler compiles Java bytecode to machinecode, and recompiles code on the fly to take advantage of optimizations not otherwise possible. This dynamic compilation and optimization process takes some time to complete. During the early stages of JIT compilation/optimization, the node cannot process full load. At this point, the node is ready to enter full service.

The tests are run for two hours after reaching full load. Load is not stopped between ramp up and starting the test timer.

Scenarios

For the benchmark we used 5 scenarios representing common requests made to the SH Cache Microservice. The SH Cache Microservice implements a REST API for interaction with VoLTE and IP-SM-GW. All scenarios are written assuming no errors occur, and every request recieves a 200 response. Each of the 5 scenarios were assigned a data pool of 200,000 unique subscribers to ensure that there is a meaningful amount of data to cache.

GET MMTel-Services

The client-ShCM scenario makes two GET requests for the MMTEL-Services transparent data XML document. Two requests are made to guarantee that there will be a cache hit on the second request. The first request may or may not be a cache hit.

In the case of a cache miss, the SH Cache Microservice will send a User Data Request to the HSS to populate the cache.

GET MSISDN

The client-ShCM scenario makes two GET requests for the MSISDN. Two requests are made to guarantee that there will be a cache hit on the second request. The first request may or may not be a cache hit.

In the case of a cache miss, the SH Cache Microservice will send a User Data Request to the HSS to populate the cache.

PUT MMTel-Services

The client-ShCM scenario makes a PUT request, with a new MMTEL-Services transparent data XML document, and a GET request for the same information.

The SH Cache Microservice will send a Profile Update Request to the HSS for every PUT request.

PUT STN-SR

The client-ShCM scenario makes a PUT request, with a new Sh-IMS-Data document containing a new STN-SR, and a GET request for the same information.

The SH Cache Microservice will send a Profile Update Request to the HSS for every PUT request.

Ue-Reachability Subscribe

The client-ShCM scenario makes a POST request, subscribing to an IMPU for UE IP reachability updates. This triggers a Subscribe Notifications Request to the HSS for every POST.

Previous page Next page