-
Notifications
You must be signed in to change notification settings - Fork 840
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Roadmap: Connection Bonding #1120
Comments
Hi, I have one question. How will EDIT: Really great work. Keep it up. |
Hi @Llorx |
You can take a look at my development branch As I know that the method of selecting the link can be based on various parameters, I have provided a framework for adding various possible balancing algorithms. Currently there are two provided:
|
Nice @ethouris. Hm @maxsharabayko, I see a problem with the modular thingy. Most of the users will benefit from SRT by using third-party software that has SRT already implemented, so is impossible to create your own module as you need to compile your own SRT with that module "inserted". One example is vMix. Will be difficult to release it with some cool modules already built-in? so third-party software can benefit from it, as I don't expect them to build some cool modules on their own. Or maybe add some kind of "dll" thingy too. I don't know. Also, there are some MP-TCP congestion control algorithms that maybe you can benefit of. By the way, I know that this is a long-way until we have something cool hehe. Nice work you have there. |
Hi, sorry for bothering. Just to know, are you already working on something regarding EDIT: Oh, I forgot about @ethouris |
Just note that we decided to put it aside because it cannot support redundancy protection. Simply, if you break one link, you'll get packet drops. |
Oh. Just fiddled a bit @ethouris. Copied your code to the latest master and I'm trying to make it work. When a link goes down, is not possible to put its non-acked packets in the queue again (or resend them through the group or whatever)? I have the left arm in a cast so is really hard for me these days to work fluidly, will try my best. |
Excellent feature!
It definitely possible and useful! I have done similar things before that worked well, but details need to be carefully handled to resend in time but not too early. I can't find |
This is the branch on my own clone of the repository, not in the main repository. I don't know how "mergeable" it is now against the current code, I've not been updating it at all since the decision was to put this feature aside. This implementation had a disadvantage that "zipping" was only possible basing on message numbers, so packets lost due to a broken link are lost forever. This part will definitely have to be rewritten in any new implementation. |
Listener Callback: Group Extension (API)
Existing listener callback does not provide fields to pass group-related data.
Another function is needed.
Rejection Reason Enahancements (API)
Make it possible for an application to set a specific reason for rejecting a connection from a listener callback.
PR Added timeout reason. Updated correctly reject reason on timeout #1194 - added rejection reason: timeout. Documentation changes are requested.
PR Customizable reject reason code #1291 - Enhanced and customizable reject reason - Requires an update to latest master
PR Added access control public header file. #1300 Add definitions of predefined HTTP status codes used as rejection reason codes. (Tasks: @maxsharabayko to review)
Group Statistics
Reusing
srt_bistats
function for SRT socket group.srt_bistats
function for groups: Added group support for stats probing. PR Added group support for stats probing #1303.srt_bistats
function for groups: reuse pktSentTotal, pktSndLossTotal etc. as a sum of corresponding values of the individual socket in a group.Decide on
pktRcvDiscardTotal
for groupsGroup Status
PR srt_group_data(..) returns group size even without output array #1222 -
srt_group_data(..)
API function to return group size [ralated to the bonding API.PR Reworked the structures for config and status for groups #1326 - Add link state field to SRT_GROUP_DATA, and retrieve the value via
srt_group_data(..)
. Possible link states: active/unstable/Idle/broken.TODO
Uncategorized
Issue Change the Group Membership extension of the handshake packet #1245 Group Membership Handshake extension - PR Implemented new Group handshake extension format #1285
Set latency per socket in a group (and probably some other options like MTU size).
PR Added unique send/receive stats #1283 [core] Added unique send/receive stats - merged
PR [docs] Introduced pktSentUnique, pktRecvUnique socket statistics #1263 [docs] Added unique send/receive stats - (discussing undecrypted packets)
PR Added balancing group implementation. #1257 Balancing group implementation - extract only API-related changes (?) (extraction already done, PR describes extra changes for balancing groups)
SRT Handshake extension for socket groups - add docs.
PR Added configuration object to group connection structure #1314 - Added a possibility to install a per-connection socket options, mainly required for supporting
SRTO_BINDTODEVICE
optionBalancing
12. Load balancing implementation
13. Load balancing documentation
Completed work
CUDT
class for creation/deletion and hookup2.1. SRT API docs PR Updated documentation for SRT bonding #1123
2.3. Added short doc about bonding PR Added short doc about bonding #1117
3. HANDSHAKE AND MANAGEMENT PR Handshake and internal processing for socket groups #1119
4.1. Changed Socket Group API PR Changed group API: source per site can be specified #1137
5. APPLICATIONS PR Application support for socket groups (testing app only) #1139
6. Added test examples for bonding PR Added test examples for bonding #1143.
7. Redesigned SRTO_GROUPCONNECT option PR Redesigned SRTO_GROUPCONNECT option. #1150
8. Added accept_bond function for blocking-mode multi-listener accept-waiting PR Added accept_bond function for blocking-mode multi-listener accept-waiting #1153
9. Refactoring before Backup groups (PR BACKUP GROUPS: refactoring changes #1167)
10. Main backup implementation BACKUP GROUPS: Implementation #1178
11. Main backup documentation BACKUP GROUPS: Implementation #1168
The text was updated successfully, but these errors were encountered: