{"id":26397292,"url":"https://github.com/thalesgroup/luna-ha-bench","last_synced_at":"2025-03-17T12:17:19.579Z","repository":{"id":176816133,"uuid":"658717292","full_name":"ThalesGroup/luna-ha-bench","owner":"ThalesGroup","description":"A test bench to perform performance measures on a Luna HSM HA group ","archived":false,"fork":false,"pushed_at":"2025-03-14T19:40:08.000Z","size":57,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-14T20:34:31.802Z","etag":null,"topics":["5g","cryptographic-software","cryptography-tools","hsm","luna","performance-test","performance-testing","thales"],"latest_commit_sha":null,"homepage":"https://thalesdocs.com","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ThalesGroup.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-26T10:55:18.000Z","updated_at":"2025-03-14T19:40:13.000Z","dependencies_parsed_at":"2023-06-28T11:00:13.116Z","dependency_job_id":null,"html_url":"https://github.com/ThalesGroup/luna-ha-bench","commit_stats":null,"previous_names":["thalesgroup/luna-ha-bench"],"tags_count":0,"template":false,"template_full_name":"ThalesGroup/template-project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThalesGroup%2Fluna-ha-bench","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThalesGroup%2Fluna-ha-bench/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThalesGroup%2Fluna-ha-bench/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThalesGroup%2Fluna-ha-bench/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ThalesGroup","download_url":"https://codeload.github.com/ThalesGroup/luna-ha-bench/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244031131,"owners_count":20386534,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["5g","cryptographic-software","cryptography-tools","hsm","luna","performance-test","performance-testing","thales"],"created_at":"2025-03-17T12:17:18.976Z","updated_at":"2025-03-17T12:17:19.569Z","avatar_url":"https://github.com/ThalesGroup.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Luna HA-Bench\n\nThis project is part of the [Luna General Purpose HSMs](https://cpl.thalesgroup.com/encryption/hardware-security-modules/general-purpose-hsms) products suite, and more specifically of the [Luna Network HSM](https://cpl.thalesgroup.com/encryption/hardware-security-modules/network-hsms) product. \n\n## Introduction\n\nLuna HA-Bench allows to\n\n- Run basic cryptographic scenarii (typically: 5G authentication operations) on a [Luna HA-group](https://www.thalesdocs.com/gphsm/luna/7/docs/network/Content/admin_partition/ha/ha.htm),\n\n- Measure performances in terms of transactions per second.\n\nLuna HA-Bench can run several scenarii concurrently within the same process, each of these scenarii running its own set of tests in separate threads (1 thread per test). Typically, Luna HA-Bench can run COMP-128, Milenage and TUAK authentications concurrently in the same process, along with SUCI deconcealment operations.\n\nEach scenario instance can be configured using flags controlling basic behaviors of the scenario. For more information on these flags, see the usage documentation provided by the HA-Bench binary.\n\nHA-Bench can be multi-instanciated on the same machine or on several hosts sharing the same HA-group to simulate more complex configurations, and study possible side effects of resource sharing algorithms.\n\nEach instance of a scenario (COMP-128/Milenage/TUAK authentication, SUCI deconcealment...) can use its own objects (i.e. objects uniquely created for this instance) or share objects with other instances of the same scenario running within the same process or in other processes.\n\nScenario objects can be session objects (non persistent) or token objects (persistent).\n\n## Build\n\nThe HA-Bench binary can be built using the provided Makefile on a Linux machine (typically a CentOS 7.9 one), with a pre-installed Luna Client SDK.\n\nThe provided Makefile use a default configuration that enforces some optimizations at compilation time, as well as the use of typical security measures that are intended to reflect a real operational usage. This configuration can be enhanced with additional features, typically to use sanitization functions or debugging features.\n\nDebugging can be helped using the 'verbose' and 'debug' variables in the main function of Luna HA-Bench.\n\n## Run\n\nRefer to the usage documentation provided by the tool (running it without any parameter).\n\nTypical examples:\n\n| Command  | Description | Typical Results (Mean) |\n| -------- | ----------- | ---------------------- |\n| ha-bench 0 co-password time-limited 20 share Milenagex01011x80 | Run Milenage authentication on slot 0, for 20 seconds, with: \u003cul\u003e \u003cli\u003eA non default RC value (pre-loaded on the HSM as a token object)\u003c/li\u003e \u003cli\u003eAn OP value (pre-loaded on the HSM as a token object)\u003c/li\u003e \u003cli\u003e 80 threads\u003c/li\u003e \u003c/ul\u003e ... and share the pre-loaded objects with other instances of the scenario | \u003cul\u003e \u003cli\u003e With a single HA-Bench instance: \u003cul\u003e \u003cli\u003e ~6200 TpS/appliance with 2xLNHs \u003c/li\u003e \u003cli\u003e ~5700 TpS/appliance with 16xLNHs \u003c/li\u003e \u003c/ul\u003e \u003c/li\u003e \u003cli\u003e With two HA-Bench instances: \u003cul\u003e \u003cli\u003e ~7000 TpS/appliance with 2xLNHs \u003c/li\u003e \u003cli\u003e ~6300 TpS/appliance with 16xLNHs \u003c/li\u003e \u003c/ul\u003e \u003c/li\u003e \u003cli\u003e With six HA-Bench instances: \u003cul\u003e \u003cli\u003e ~7200 TpS/appliance with 2xLNHs \u003c/li\u003e \u003cli\u003e ~6700 TpS/appliance with 16xLNHs \u003c/li\u003e \u003c/ul\u003e \u003c/li\u003e \u003c/ul\u003e |\n| ha-bench 0 co-password time-limited 20 share Milenagex00101x80 | Run Milenage authentication on slot 0, for 10 seconds, with: \u003cul\u003e \u003cli\u003eA non default RC value (pre-loaded on the HSM as a token object)\u003c/li\u003e \u003cli\u003eAn eOPc value (provided with each request)\u003c/li\u003e \u003cli\u003e 80 threads\u003c/li\u003e \u003c/ul\u003e ... and share the pre-loaded objects with other instances of the scenario            | \u003cul\u003e \u003cli\u003e With a single HA-Bench instance: \u003cul\u003e \u003cli\u003e ~6000 TpS/appliance with 2xLNHs \u003c/li\u003e \u003cli\u003e ~5600 TpS/appliance with 16xLNHs \u003c/li\u003e \u003c/ul\u003e \u003c/li\u003e \u003cli\u003e With two HA-Bench instances: \u003cul\u003e \u003cli\u003e ~6800 TpS/appliance with 2xLNHs \u003c/li\u003e \u003cli\u003e ~6100 TpS/appliance with 16xLNHs \u003c/li\u003e \u003c/ul\u003e \u003c/li\u003e \u003cli\u003e With six HA-Bench instances: \u003cul\u003e \u003cli\u003e ~6900 TpS/appliance with 2xLNHs \u003c/li\u003e \u003cli\u003e ~6400 TpS/appliance with 16xLNHs \u003c/li\u003e \u003c/ul\u003e \u003c/li\u003e \u003c/ul\u003e |\n\n## Test\n\nHA-Bench can run:\n\n- Time-limited tests that are executed for a limited period of time,\n\n- Request-limited tests that have to submit a specific number of requests before to stop.\n\nIt is recommended to run time-limited tests to get more accurate and reproducible results.\n\nConcurrent tests can be run using the following kind of command:\n\n```console\nfor client in 1 2 3 4 5 6; do ./ha-bench 0 co-password time-limited 5 share milenagex01011x80 \u0026 done | grep 'Total   Requests Count' | cut -d'=' -f 2 | paste -sd+ - | bc\n```\n\n## Contributing\n\nIf you are interested in contributing to this project, please read the [Contributing guide](CONTRIBUTING.md).\n\n## License\n\nThis software is provided under a [permissive license](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthalesgroup%2Fluna-ha-bench","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthalesgroup%2Fluna-ha-bench","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthalesgroup%2Fluna-ha-bench/lists"}