Gateway RTP/SRTP bit pattern testing support (SIPP-RTPCHECK-3.6) #481
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
[Detailed feature documentation available upon request]
Hello @wdoekes, @rkday, @orgads:
(I'm still relatively new to GitHub and I'm doing everything from the commandline through SSH so let me know if there are things that I'mnot doing quite right. But I figure that "Pull Request" is how one does code view request prior to a merge.)
Nearly a year ago in September 2019 I had submitted a pull request with my gateway RTP/SRTP bit pattern testing support (codename "RTPCHECK"). I finally got back in good health and found some time to work on fixing most (but not all yet) items that were pointed out. I've been allowed to work on this for 4 weeks straight now but I have to resume normal work so it'll take a little while before I can continue working on this.
As this is quite a big change, I'd prefer (at your discretion of course) if this functionality could be merged sooner than later as it is becoming quite complex to rebase/reintegrate every 6 months. Now at least I've finally started actively using the SIPP 3.6 branch in all my work so I no longer need to put effort into backporting into SIPP 3.5 for my own private use. But still this remains a big change.
So below I'm trying to summarize all the items that you pointed out in 2019 and indicating which ones were addressed and which ones have not (and why). So at your convenience please take time to review and determine if things are "good enough" for merge or if more work is necessary (which I'll try to do once more time becomes available).
I believe my feature would be for the SIPP 3.7 branch, so a new branch would likely need to be created before merging. This is probably not for me to do. Please advise.
.
.
.
(Jeannot) I learned the GitHub workflow some more now and I did create my own repository at https://github.com/jeannotlanglois/sipp -- as of August 25th 2020 the master branch is still up to date and the feature code is in the sipp-36x-rtpcheck branch. So I can take care of the rebases myself now.
(Jeannot) I did a lot of testing with Linux (CentOS 6.9 using devtoolset-7) as well as fixing all the integration issues (CI testcases) for Darwin. I do have a CygWin testing environment but however did not have enough time to try it yet. If you want feel free to give a try at a CygWin build of my sipp-36x-rtpcheck git branch.
(Jeannot): As for openssl I've moved the JLSRTP component to use the proper EVP_xxx() APIs so there should be no issues with that library nymore. Also note that I've put in the extra effort to make SRTP-related code optional as Rob Day had mentioned in case some folks are not allowed to compile with -DUSE_SSL=1 and must use -DUSE_SSL=0 instead (e.g. only RTP, no SRTP).
(Jeannot) I think I had reverted that 3.6 part. But whoops, I did not do anything (yet) for 3.7. Please indicate any details you'd like me to indicate there.
(Jeannot) I'm fairly sure that those warnings have been addressed (when I started using devtoolset-7 with gcc 7.3.1 I had to fix a bunch of these for printfs -- so in all likelihood the windows build should no longer trigger those.
.
.
.
(Jeannot) Yeps -- even before you mentioned this I had already addressed this concern by having two sample text files in the main SIPP working directory list sample command lines ("SET-SIDE" means "UAC" and "ICP-SIDE" means "UAS", I should probably change that though):
For RTP bit pattern testing:
`
SET-SIDE command line:
./sipp 192.168.1.250:5060 -sf sipp_scenarios/pfca_uac_pattern.xml -i 192.168.1.147 -t u1 -p 5060 -mp 4000 -m 1 -s 16002
ICP-SIDE command line:
./sipp -sf sipp_scenarios/pfca_uas.xml -i 192.168.1.250 -t u1 -p 5060 -mp 5000 -m 1 -s 16001 -rtp_echo
`
For SRTP bit pattern testing:
`
SET-SIDE command line:
./sipp 192.168.1.250:5060 -sf sipp_scenarios/pfca_uac_bpattern_crypto_simple.xml -i 192.168.1.147 -t u1 -p 5060 -mp 4000 -m 1 -s 16002 -rtpcheck_debug -srtpcheck_debug
ICP-SIDE command line:
./sipp -sf sipp_scenarios/pfca_uas_both_crypto_simple.xml -i 192.168.1.250 -t u1 -p 5060 -mp 5000 -m 1 -s 16001 -srtpcheck_debug
`
.
.
.
(Jeannot) This explanation is still valid. I have the full documentation available in a PDF document (exported from an internal Confluence page) with a few illustrations showing the signalling/streaming flow directions, as well as examples of every possible syntax. Maybe an ASCII version might need to be drafted however if PDF is not adequate.
(Jeannot) This concern was also brought by Rob Day and I have addressed it -- I have went through the extra effort of splitting RTP + SRTP so that the latter can be built optionally from the former depending on whether -DUSE_SSL=1 or -DUSE_SSL=0 is specified which should take care of concerns about those who are not allowed to use OpenSSL.
(Jeannot) This concern remains valid -- I have not performed any such tests yet. Maybe some extra details would help here as to what could be affected (if anything).
(Jeannot) This explanation remains valid.
(Jeannot) This is also still valid.
(Jeannot) Turns out it took a year but I finally got back to this :)
.
.
.
(Jeannot) As I mentioned above this concerned has now been addressed -- RTPSTREAM can still be built without OpenSSL support and yet still use just the RTP part of RTPCHECK. The SRTP part of RTPCHECK can now be built only when -DUSE_SSL=1 is in use.
.
.
.
Alright -- that completes all the items I had on my list for now.