[kamailio/kamailio] tls: Create one shared context and reuse it. (PR #3972)
<!-- Kamailio Pull Request Template --> <!-- IMPORTANT: - for detailed contributing guidelines, read: https://github.com/kamailio/kamailio/blob/master/.github/CONTRIBUTING.md - pull requests must be done to master branch, unless they are backports of fixes from master branch to a stable branch - backports to stable branches must be done with 'git cherry-pick -x ...' - code is contributed under BSD for core and main components (tm, sl, auth, tls) - code is contributed GPLv2 or a compatible license for the other components - GPL code is contributed with OpenSSL licensing exception --> #### Pre-Submission Checklist <!-- Go over all points below, and after creating the PR, tick all the checkboxes that apply --> <!-- All points should be verified, otherwise, read the CONTRIBUTING guidelines from above--> <!-- If you're unsure about any of these, don't hesitate to ask on sr-dev mailing list --> - [x] Commit message has the format required by CONTRIBUTING guide - [x] Commits are split per component (core, individual modules, libs, utils, ...) - [x] Each component has a single commit (if not, squash them into one commit) - [x] No commits to README files for modules (changes must be done to docbook files in `doc/` subfolder, the README file is autogenerated) #### Type Of Change - [ ] Small bug fix (non-breaking change which fixes an issue) - [x] New feature (non-breaking change which adds new functionality) - [ ] Breaking change (fix or feature that would change existing functionality) #### Checklist: <!-- Go over all points below, and after creating the PR, tick the checkboxes that apply --> - [ ] PR should be backported to stable branches - [x] Tested changes locally - [x] Related to issue #3823 #### Description <!-- Describe your changes in detail --> This PR aims to implement what was discussed in [mailing list](https://lists.kamailio.org/mailman3/hyperkitty/list/sr-dev@lists.kamailio.or...) regarding some `tls.reload` and increasing memory usage. It adds a new parameter `enable_shared_ctx` in `tls` module that if set to 0, preserves the old behavior and if set to 1 (other than 0 tbh), it creates a single SSL context that is being shared. This have the effect of using way less memory when initialized as well, but also minimizes (can't say it fixes the problem) the `tls.reload` memory increase. I have also added a small markdown (comparison.md) file, where some comparisons where made between enabled/disabled shared context and with/without CA file (where the initial problem was occurring by the reporter). Feedback would be necessary to verify whether this patch, acts as expected and kamailio works as intented. You can view, comment on, or merge this pull request online at: https://github.com/kamailio/kamailio/pull/3972 -- Commit Summary -- * tls: Add parameter for shared contexts * tls: Comparison for enable_shared_ctx -- File Changes -- A comparison.md (15) M src/modules/tls/tls_domain.c (172) M src/modules/tls/tls_mod.c (11) M src/modules/tls/tls_mod.h (1) -- Patch Links -- https://github.com/kamailio/kamailio/pull/3972.patch https://github.com/kamailio/kamailio/pull/3972.diff -- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/pull/3972 You are receiving this because you are subscribed to this thread. Message ID: <kamailio/kamailio/pull/3972@github.com>
I don't think that the comparison file needs to be added in the git repository, it is specific to current version, and anyhow definitely not in the root folder of the source code. Its content can be added in the comments/description of this PR. Otherwise, no time yet to review the changes to C code. -- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/pull/3972#issuecomment-2338436171 You are receiving this because you are subscribed to this thread. Message ID: <kamailio/kamailio/pull/3972/c2338436171@github.com>
yes i agree! i upload it for ease of comparison in the PR. it will be removed before and if merged -- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/pull/3972#issuecomment-2338494020 You are receiving this because you are subscribed to this thread. Message ID: <kamailio/kamailio/pull/3972/c2338494020@github.com>
@xkaraman : in the unshared case `load_private_key()` goes through each `SSL_CTX` (per proc) to add the private key. In the shared case is this unnecessary work? IOW, add the private key for `d->ctx[i], i = 0`; no need to call `SSL_CTX_use_PrivateKey` on `d->ctx[i], i > 0` since they are all the same ? -- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/pull/3972#issuecomment-2342687231 You are receiving this because you are subscribed to this thread. Message ID: <kamailio/kamailio/pull/3972/c2342687231@github.com>
Hey @space88man, Yeah, you are probably right and it holds true for other cases like `load_crl`, `load_ca` etc, that also use a for loop to handle contexts, i guess? Ok i'll have the RSA keys in mind when figuring this out. -- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/pull/3972#issuecomment-2345682756 You are receiving this because you are subscribed to this thread. Message ID: <kamailio/kamailio/pull/3972/c2345682756@github.com>
This PR is stale because it has been open 6 weeks with no activity. Remove stale label or comment or this will be closed in 2 weeks. -- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/pull/3972#issuecomment-2436714485 You are receiving this because you are subscribed to this thread. Message ID: <kamailio/kamailio/pull/3972/c2436714485@github.com>
This PR is stale because it has been open 6 weeks with no activity. Remove stale label or comment or this will be closed in 2 weeks. -- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/pull/3972#issuecomment-2628726754 You are receiving this because you are subscribed to this thread. Message ID: <kamailio/kamailio/pull/3972/c2628726754@github.com>
Closed #3972. -- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/pull/3972#event-16323150973 You are receiving this because you are subscribed to this thread. Message ID: <kamailio/kamailio/pull/3972/issue_event/16323150973@github.com>
Reopened #3972. -- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/pull/3972#event-16331398470 You are receiving this because you are subscribed to this thread. Message ID: <kamailio/kamailio/pull/3972/issue_event/16331398470@github.com>
github-actions[bot] left a comment (kamailio/kamailio#3972) This PR is stale because it has been open 6 weeks with no activity. Remove stale label or comment or this will be closed in 2 weeks. -- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/pull/3972#issuecomment-2767983389 You are receiving this because you are subscribed to this thread. Message ID: <kamailio/kamailio/pull/3972/c2767983389@github.com>
github-actions[bot] left a comment (kamailio/kamailio#3972) This PR is stale because it has been open 6 weeks with no activity. Remove stale label or comment or this will be closed in 2 weeks. -- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/pull/3972#issuecomment-2878523904 You are receiving this because you are subscribed to this thread. Message ID: <kamailio/kamailio/pull/3972/c2878523904@github.com>
Closed #3972. -- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/pull/3972#event-17842276691 You are receiving this because you are subscribed to this thread. Message ID: <kamailio/kamailio/pull/3972/issue_event/17842276691@github.com>
Reopened #3972. -- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/pull/3972#event-17847355331 You are receiving this because you are subscribed to this thread. Message ID: <kamailio/kamailio/pull/3972/issue_event/17847355331@github.com>
github-actions[bot] left a comment (kamailio/kamailio#3972) This PR is stale because it has been open 6 weeks with no activity. Remove stale label or comment or this will be closed in 2 weeks. -- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/pull/3972#issuecomment-3055237262 You are receiving this because you are subscribed to this thread. Message ID: <kamailio/kamailio/pull/3972/c3055237262@github.com>
@xkaraman pushed 3 commits. e7190da958bc75177e66dbfc6a1058ad5ad8d605 tls: Add parameter for shared contexts c77237827e2bfddfc49997a4947961c08deaa6b7 tls: Comparison for enable_shared_ctx 94ba4c9ac614ea67513f82fd10146726bcbdbefd revert me -- View it on GitHub: https://github.com/kamailio/kamailio/pull/3972/files/8ee12d1ee75c09073a08745... You are receiving this because you are subscribed to this thread. Message ID: <kamailio/kamailio/pull/3972/before/8ee12d1ee75c09073a08745875d6e761798a7a0b/after/94ba4c9ac614ea67513f82fd10146726bcbdbefd@github.com>
@xkaraman pushed 0 commits. -- View it on GitHub: https://github.com/kamailio/kamailio/pull/3972/files/94ba4c9ac614ea67513f82f... You are receiving this because you are subscribed to this thread. Message ID: <kamailio/kamailio/pull/3972/before/94ba4c9ac614ea67513f82fd10146726bcbdbefd/after/c77237827e2bfddfc49997a4947961c08deaa6b7@github.com>
github-actions[bot] left a comment (kamailio/kamailio#3972) This PR is stale because it has been open 6 weeks with no activity. Remove stale label or comment or this will be closed in 2 weeks. -- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/pull/3972#issuecomment-3388123873 You are receiving this because you are subscribed to this thread. Message ID: <kamailio/kamailio/pull/3972/c3388123873@github.com>
Closed #3972. -- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/pull/3972#event-20471478935 You are receiving this because you are subscribed to this thread. Message ID: <kamailio/kamailio/pull/3972/issue_event/20471478935@github.com>
participants (4)
-
Daniel-Constantin Mierla -
github-actions[bot] -
space88man -
Xenofon Karamanos