{ "type": "excalidraw", "version": 2, "source": "https://excalidraw.com", "elements": [ { "type": "rectangle", "version": 459, "versionNonce": 1303879278, "isDeleted": false, "id": "iBsOeHh_qqZO_mnwZ0Rw9", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 10, "angle": 0, "x": -1518, "y": 21.125, "strokeColor": "#d9480f", "backgroundColor": "#fd7e14", "width": 195, "height": 93.75000000000001, "seed": 116865425, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [] }, { "type": "rectangle", "version": 430, "versionNonce": 1105872754, "isDeleted": false, "id": "bxlduMU9sQoQPQJK0o00c", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 10, "angle": 0, "x": -1661.75, "y": 17.375, "strokeColor": "#d9480f", "backgroundColor": "#fd7e14", "width": 135, "height": 98.75, "seed": 1610760241, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [] }, { "type": "rectangle", "version": 386, "versionNonce": 1582669998, "isDeleted": false, "id": "7sP8ouwk_qO07n-Ra15F_", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 10, "angle": 0, "x": -1663, "y": 128.625, "strokeColor": "#d9480f", "backgroundColor": "#fd7e14", "width": 133.75000000000006, "height": 32.50000000000001, "seed": 1310857759, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [] }, { "type": "rectangle", "version": 359, "versionNonce": 332695858, "isDeleted": false, "id": "QON1YXICAWxI8zSIUwisG", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 30, "angle": 0, "x": 234, "y": 226, "strokeColor": "#000000", "backgroundColor": "#82c91e", "width": 328, "height": 180, "seed": 107680127, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [] }, { "type": "rectangle", "version": 418, "versionNonce": 679041774, "isDeleted": false, "id": "oHLfHQWZbru1hnBA3oVGb", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 30, "angle": 0, "x": 233, "y": -137, "strokeColor": "#000000", "backgroundColor": "#15aabf", "width": 327, "height": 136, "seed": 542852959, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [] }, { "type": "rectangle", "version": 554, "versionNonce": 982553330, "isDeleted": false, "id": "AQNkqmwsJsXbwSLb6KjQG", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 30, "angle": 0, "x": 232, "y": 7.999999999999943, "strokeColor": "#000000", "backgroundColor": "#fab005", "width": 328, "height": 205.00000000000006, "seed": 381258207, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [] }, { "type": "text", "version": 342, "versionNonce": 1655426350, "isDeleted": false, "id": "z5GxS4ZiHT06NRXuK0rN2", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": 154, "y": -169.5, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 73, "height": 32, "seed": 1522021023, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "client A", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "rectangle", "version": 752, "versionNonce": 1218798770, "isDeleted": false, "id": "qmD4baVtl18qfKN7-xEpa", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": 112, "y": -131, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 132, "height": 625, "seed": 412821553, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [ "qx5eSUV_a-Kr2QqaYxh08", "cWncaEPtw9ToDdtqBA_mP", "i7kQVlx6oJJ2N_BhQygit", "j0U-NYoT10Pwnr6RGX8yG", "pt5o-bfysPk1LMAzVnK8m", "TrZe1QdV-QLB2ueucIYIY", "h25jFYabI75XJqi2waRvU", "5MkfzaOeEWPEYTgmQeCY1", "OkxGtdraEKp9uhgPxxA4E", "ypv3pPUp8KLQC1e7hxJqj", "aMZppMCDOLth5BHQF3T1Q", "3XY2tjUiIsFbB0UqkFIdm" ] }, { "type": "text", "version": 207, "versionNonce": 173406062, "isDeleted": false, "id": "UIJmNrmhshUCw_6MyOZTs", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": 583, "y": -164.5, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 74, "height": 32, "seed": 1004723665, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "client B", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "rectangle", "version": 447, "versionNonce": 1740242546, "isDeleted": false, "id": "kpX3LbcK5WMV9WpB9yzf7", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": 551, "y": -133, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 152, "height": 628, "seed": 1485260927, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [ "qx5eSUV_a-Kr2QqaYxh08", "cWncaEPtw9ToDdtqBA_mP", "i7kQVlx6oJJ2N_BhQygit", "j0U-NYoT10Pwnr6RGX8yG", "pt5o-bfysPk1LMAzVnK8m", "TrZe1QdV-QLB2ueucIYIY", "h25jFYabI75XJqi2waRvU", "5MkfzaOeEWPEYTgmQeCY1", "OkxGtdraEKp9uhgPxxA4E", "ypv3pPUp8KLQC1e7hxJqj", "aMZppMCDOLth5BHQF3T1Q", "3XY2tjUiIsFbB0UqkFIdm" ] }, { "type": "text", "version": 482, "versionNonce": 130079150, "isDeleted": false, "id": "mmm790EgwKi25IIHUU6Ru", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": 312, "y": -111.5, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 180, "height": 64, "seed": 1589549215, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [ "qx5eSUV_a-Kr2QqaYxh08" ], "fontSize": 20, "fontFamily": 1, "text": "\n{GREET, pubkeyA}", "baseline": 55, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 789, "versionNonce": 1955946546, "isDeleted": false, "id": "U7MyCa2vEM-bZHiyP63g6", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": 289, "y": 15.5, "strokeColor": "#c92a2a", "backgroundColor": "transparent", "width": 216, "height": 64, "seed": 1981825905, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "pubkeyA ENCRYPTED\n{GREET, pubkeyB}", "baseline": 55, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 973, "versionNonce": 1377137646, "isDeleted": false, "id": "MTbO0iAcWmqLEPow0A0Ov", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": 263, "y": 116.5, "strokeColor": "#c92a2a", "backgroundColor": "transparent", "width": 217, "height": 64, "seed": 448400785, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "pubkeyB ENCRYPTED\n{AES token}", "baseline": 55, "textAlign": "left", "verticalAlign": "top" }, { "type": "arrow", "version": 503, "versionNonce": 454986226, "isDeleted": false, "id": "5MkfzaOeEWPEYTgmQeCY1", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": 245, "y": -44, "strokeColor": "#000000", "backgroundColor": "#82c91e", "width": 305, "height": 1, "seed": 188913471, "groupIds": [], "strokeSharpness": "round", "boundElementIds": [], "startBinding": { "elementId": "qmD4baVtl18qfKN7-xEpa", "focus": -0.7203982029493021, "gap": 1 }, "endBinding": { "elementId": "kpX3LbcK5WMV9WpB9yzf7", "focus": 0.7199778811844001, "gap": 1 }, "points": [ [ 0, 0 ], [ 305, -1 ] ], "lastCommittedPoint": null, "startArrowhead": null, "endArrowhead": "arrow" }, { "type": "arrow", "version": 509, "versionNonce": 324847150, "isDeleted": false, "id": "OkxGtdraEKp9uhgPxxA4E", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": 548, "y": 93, "strokeColor": "#c92a2a", "backgroundColor": "#82c91e", "width": 304, "height": 4, "seed": 1280732767, "groupIds": [], "strokeSharpness": "round", "boundElementIds": [], "startBinding": { "elementId": "kpX3LbcK5WMV9WpB9yzf7", "focus": 0.2760651629072681, "gap": 3 }, "endBinding": { "elementId": "qmD4baVtl18qfKN7-xEpa", "focus": -0.2979509573396036, "gap": 1 }, "points": [ [ 0, 0 ], [ -304, -4 ] ], "lastCommittedPoint": null, "startArrowhead": null, "endArrowhead": "arrow" }, { "type": "arrow", "version": 511, "versionNonce": 1918663602, "isDeleted": false, "id": "ypv3pPUp8KLQC1e7hxJqj", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": 246, "y": 185, "strokeColor": "#c92a2a", "backgroundColor": "#82c91e", "width": 305, "height": 1, "seed": 1248580241, "groupIds": [], "strokeSharpness": "round", "boundElementIds": [], "startBinding": { "elementId": "qmD4baVtl18qfKN7-xEpa", "focus": 0.010479300890661944, "gap": 2 }, "endBinding": { "elementId": "kpX3LbcK5WMV9WpB9yzf7", "focus": -0.016703879139452874, "gap": 1 }, "points": [ [ 0, 0 ], [ 305, 1 ] ], "lastCommittedPoint": null, "startArrowhead": null, "endArrowhead": "arrow" }, { "type": "text", "version": 637, "versionNonce": 1283444846, "isDeleted": false, "id": "TYEPsBH8kmagfGmgCTZlz", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": 338, "y": 236.5, "strokeColor": "#364fc7", "backgroundColor": "#82c91e", "width": 102, "height": 32, "seed": 155093713, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "{FRIEND}", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "arrow", "version": 557, "versionNonce": 410400114, "isDeleted": false, "id": "aMZppMCDOLth5BHQF3T1Q", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": 549, "y": 268, "strokeColor": "#364fc7", "backgroundColor": "#82c91e", "width": 304, "height": 1, "seed": 608034193, "groupIds": [], "strokeSharpness": "round", "boundElementIds": [], "startBinding": { "elementId": "kpX3LbcK5WMV9WpB9yzf7", "focus": -0.2776661223464388, "gap": 2 }, "endBinding": { "elementId": "qmD4baVtl18qfKN7-xEpa", "focus": 0.27270527843813774, "gap": 1 }, "points": [ [ 0, 0 ], [ -304, -1 ] ], "lastCommittedPoint": null, "startArrowhead": null, "endArrowhead": "arrow" }, { "type": "text", "version": 361, "versionNonce": 2034733742, "isDeleted": false, "id": "emLFydH8C-yixIWzQMcdC", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": 268, "y": 311.5, "strokeColor": "#364fc7", "backgroundColor": "#82c91e", "width": 102, "height": 32, "seed": 787642737, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "{FRIEND}", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "arrow", "version": 541, "versionNonce": 1320335154, "isDeleted": false, "id": "3XY2tjUiIsFbB0UqkFIdm", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": 247.99999999999997, "y": 353, "strokeColor": "#364fc7", "backgroundColor": "#82c91e", "width": 301, "height": 1, "seed": 2005196497, "groupIds": [], "strokeSharpness": "round", "boundElementIds": [], "startBinding": { "elementId": "qmD4baVtl18qfKN7-xEpa", "focus": 0.5476715341262212, "gap": 3.9999999999999716 }, "endBinding": { "elementId": "kpX3LbcK5WMV9WpB9yzf7", "focus": -0.5513373506713184, "gap": 2 }, "points": [ [ 0, 0 ], [ 301, 1 ] ], "lastCommittedPoint": null, "startArrowhead": null, "endArrowhead": "arrow" }, { "type": "text", "version": 836, "versionNonce": 878513390, "isDeleted": false, "id": "LTAMbpxlNoGXalgDinjnv", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": 564, "y": 75.5, "strokeColor": "#c92a2a", "backgroundColor": "#82c91e", "width": 98, "height": 32, "seed": 1108497266, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "RSA-OAEP", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 453, "versionNonce": 360251634, "isDeleted": false, "id": "m1dHqnEE981sO4lteZH-m", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": 130, "y": -64.5, "strokeColor": "#000000", "backgroundColor": "#82c91e", "width": 92, "height": 32, "seed": 1400971758, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "Plaintext", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 315, "versionNonce": 1531526958, "isDeleted": false, "id": "oHz_bYkqQYD1Cgr_4ImN7", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": 570, "y": 340.5, "strokeColor": "#364fc7", "backgroundColor": "#82c91e", "width": 38, "height": 32, "seed": 282779954, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "AES", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 162, "versionNonce": 1213207218, "isDeleted": false, "id": "TryeMkpCehzAqrNlT9RoN", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": 268, "y": -214.5, "strokeColor": "#000000", "backgroundColor": "#82c91e", "width": 268, "height": 32, "seed": 928852977, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "pubkey->AES token greeting", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 48, "versionNonce": 846539118, "isDeleted": false, "id": "GBupDB8TweNlUSVv5bjWe", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -635, "y": -206.5, "strokeColor": "#000000", "backgroundColor": "#82c91e", "width": 202, "height": 32, "seed": 626925745, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "UDP NAT Traversal", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "rectangle", "version": 321, "versionNonce": 970910834, "isDeleted": false, "id": "ubeGmwQ1srGKZJX-c-MkA", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -778, "y": -152, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 582, "height": 256, "seed": 1131438289, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [] }, { "type": "text", "version": 37, "versionNonce": 153734062, "isDeleted": false, "id": "TooWCMZWcd7PFcv28y3qX", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -736, "y": -120.5, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 63, "height": 32, "seed": 1741275153, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [ "nXu3vfHy0PjxI5zvPEjQR" ], "fontSize": 20, "fontFamily": 1, "text": "clientA", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 133, "versionNonce": 1340902962, "isDeleted": false, "id": "swWXmQ4wJ-CrOXcnVsNgK", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -742, "y": -14.5, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 64, "height": 32, "seed": 1410993873, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [ "vmtcqvAp9iv2l8mJbBfkz" ], "fontSize": 20, "fontFamily": 1, "text": "clientB", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 115, "versionNonce": 1569727982, "isDeleted": false, "id": "oUW3tKOZJbCumt_meec0p", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -404, "y": -53.5, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 83, "height": 32, "seed": 1966543857, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [ "nXu3vfHy0PjxI5zvPEjQR", "vmtcqvAp9iv2l8mJbBfkz" ], "fontSize": 20, "fontFamily": 1, "text": "mediator", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "arrow", "version": 96, "versionNonce": 526383090, "isDeleted": false, "id": "nXu3vfHy0PjxI5zvPEjQR", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -663, "y": -99, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 253, "height": 68, "seed": 1719220671, "groupIds": [], "strokeSharpness": "round", "boundElementIds": [], "startBinding": { "elementId": "TooWCMZWcd7PFcv28y3qX", "focus": -0.23109854604200325, "gap": 10 }, "endBinding": { "elementId": "oUW3tKOZJbCumt_meec0p", "focus": -0.7095342066957788, "gap": 6 }, "points": [ [ 0, 0 ], [ 253, 68 ] ], "lastCommittedPoint": null, "startArrowhead": null, "endArrowhead": "arrow" }, { "type": "arrow", "version": 295, "versionNonce": 11614254, "isDeleted": false, "id": "vmtcqvAp9iv2l8mJbBfkz", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -671, "y": 13.153550321918, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 262, "height": 44.98352286479208, "seed": 2050883761, "groupIds": [], "strokeSharpness": "round", "boundElementIds": [], "startBinding": { "elementId": "swWXmQ4wJ-CrOXcnVsNgK", "focus": 0.8539309954751131, "gap": 7 }, "endBinding": { "elementId": "oUW3tKOZJbCumt_meec0p", "focus": 0.10005033979360684, "gap": 5 }, "points": [ [ 0, 0 ], [ 262, -44.98352286479208 ] ], "lastCommittedPoint": null, "startArrowhead": null, "endArrowhead": "arrow" }, { "type": "text", "version": 346, "versionNonce": 138422706, "isDeleted": false, "id": "Y2J3ZLqvwfp6dzzY10hzX", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -707, "y": 38.5, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 427, "height": 64, "seed": 330499057, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "both clients have a reliable UDP connection\nto the mediator", "baseline": 55, "textAlign": "left", "verticalAlign": "top" }, { "type": "rectangle", "version": 122, "versionNonce": 980812398, "isDeleted": false, "id": "2-chYscD9SQKoLKEayg0U", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -780, "y": 150, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 585, "height": 230, "seed": 702725759, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [] }, { "type": "text", "version": 39, "versionNonce": 1370760050, "isDeleted": false, "id": "WCzp-SCyTsa4SI0A6p8me", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -354, "y": 249.5, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 83, "height": 32, "seed": 1701781937, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [ "Mny3L3VSLeNImwwJm3X80", "rcyyyUKeqcrMZ5irlTfgC", "sdQd-trJBBMK-eLDF-KtC" ], "fontSize": 20, "fontFamily": 1, "text": "mediator", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 332, "versionNonce": 1839695022, "isDeleted": false, "id": "9rx1dVjyqPOn4W4q7VsJY", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -717, "y": 316.5, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 418, "height": 64, "seed": 303842463, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "clientA asks to talk to clientB\n(mediator returns address:port to clientA)", "baseline": 55, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 37, "versionNonce": 1174594866, "isDeleted": false, "id": "Rjicr83PupuPJyLVNOCSX", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -732, "y": 168.5, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 63, "height": 32, "seed": 325174161, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [ "Mny3L3VSLeNImwwJm3X80", "sdQd-trJBBMK-eLDF-KtC" ], "fontSize": 20, "fontFamily": 1, "text": "clientA", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 40, "versionNonce": 1005502190, "isDeleted": false, "id": "ck_DMWYvjFM2UvoCg8v1a", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -731, "y": 276.5, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 64, "height": 32, "seed": 308619633, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [ "rcyyyUKeqcrMZ5irlTfgC" ], "fontSize": 20, "fontFamily": 1, "text": "clientB", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "arrow", "version": 118, "versionNonce": 1318285042, "isDeleted": false, "id": "Mny3L3VSLeNImwwJm3X80", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -658, "y": 170.98655159625656, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 300, "height": 67.01168397748802, "seed": 527808177, "groupIds": [], "strokeSharpness": "round", "boundElementIds": [], "startBinding": { "elementId": "Rjicr83PupuPJyLVNOCSX", "focus": -0.9987212959259695, "gap": 11 }, "endBinding": { "elementId": "WCzp-SCyTsa4SI0A6p8me", "focus": 0.6861242682527529, "gap": 11.50176442625542 }, "points": [ [ 0, 0 ], [ 300, 67.01168397748802 ] ], "lastCommittedPoint": null, "startArrowhead": null, "endArrowhead": "arrow" }, { "type": "rectangle", "version": 206, "versionNonce": 701804846, "isDeleted": false, "id": "Gz9ztk8-GIEpUkrCpbpvQ", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -782, "y": 414, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 585, "height": 243.00000000000006, "seed": 1797994527, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [] }, { "type": "text", "version": 126, "versionNonce": 267174066, "isDeleted": false, "id": "3usLJN7DGoe_oofvgs3-h", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -349, "y": 518.5, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 83, "height": 32, "seed": 1692921087, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [ "Mny3L3VSLeNImwwJm3X80", "rcyyyUKeqcrMZ5irlTfgC" ], "fontSize": 20, "fontFamily": 1, "text": "mediator", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 125, "versionNonce": 1120033646, "isDeleted": false, "id": "ViDZArZJy-ajnS5TFVhZ7", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -727, "y": 437.5, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 63, "height": 32, "seed": 844012447, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [ "Mny3L3VSLeNImwwJm3X80", "-fPSjn_ObFDAWKG_MtRWN" ], "fontSize": 20, "fontFamily": 1, "text": "clientA", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 131, "versionNonce": 95804018, "isDeleted": false, "id": "WhtHrNl-HweG3QLWcuTX4", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -726, "y": 545.5, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 64, "height": 32, "seed": 2113844351, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [ "rcyyyUKeqcrMZ5irlTfgC", "-fPSjn_ObFDAWKG_MtRWN" ], "fontSize": 20, "fontFamily": 1, "text": "clientB", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "arrow", "version": 61, "versionNonce": 1023458734, "isDeleted": false, "id": "-fPSjn_ObFDAWKG_MtRWN", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -695, "y": 479, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 1, "height": 59, "seed": 1111605215, "groupIds": [], "strokeSharpness": "round", "boundElementIds": [], "startBinding": { "elementId": "ViDZArZJy-ajnS5TFVhZ7", "focus": -0.0021339023739663913, "gap": 9.5 }, "endBinding": { "elementId": "WhtHrNl-HweG3QLWcuTX4", "focus": 0.012342436974789917, "gap": 7.5 }, "points": [ [ 0, 0 ], [ 1, 59 ] ], "lastCommittedPoint": null, "startArrowhead": null, "endArrowhead": "arrow" }, { "type": "text", "version": 270, "versionNonce": 515226674, "isDeleted": false, "id": "CKDtHG90-LBcCSlfbLsYX", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -719, "y": 581.5, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 467, "height": 64, "seed": 39767697, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "clientA uses mediator connection to send to\nclientB's address:port as given by the mediator", "baseline": 55, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 169, "versionNonce": 498653166, "isDeleted": false, "id": "Tq8Nzi2ix_Zq0Td2Ndl2U", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0.21018258666216916, "x": -611, "y": 173.5, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 200, "height": 32, "seed": 1873245425, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "do you know clientB?", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "arrow", "version": 181, "versionNonce": 1490249202, "isDeleted": false, "id": "sdQd-trJBBMK-eLDF-KtC", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -367, "y": 295, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 310, "height": 87, "seed": 235260671, "groupIds": [], "strokeSharpness": "round", "boundElementIds": [], "startBinding": { "elementId": "WCzp-SCyTsa4SI0A6p8me", "focus": -1.620267195612858, "gap": 13.5 }, "endBinding": { "elementId": "Rjicr83PupuPJyLVNOCSX", "focus": 0.6805402246607364, "gap": 7.5 }, "points": [ [ 0, 0 ], [ -310, -87 ] ], "lastCommittedPoint": null, "startArrowhead": null, "endArrowhead": "arrow" }, { "type": "text", "version": 371, "versionNonce": 1559472686, "isDeleted": false, "id": "J5v5efJsEwp0i64pTGqnp", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0.27714053574787556, "x": -663.2539286441457, "y": 250.56229654578607, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 282, "height": 32, "seed": 836388625, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "sure, clientB is address:port", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 43, "versionNonce": 1561712562, "isDeleted": false, "id": "JjI_3tJcglu-OavY-1y9A", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -739, "y": -94.5, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 50, "height": 32, "seed": 432711775, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": ":xxxx", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 119, "versionNonce": 161100910, "isDeleted": false, "id": "YOlKa9kd5EVPxWyAPiAct", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -174, "y": -124.5, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 203, "height": 64, "seed": 1802891089, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": ":xxxx\ndenotes random port", "baseline": 55, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 25, "versionNonce": 463737202, "isDeleted": false, "id": "W3Zvi1VkWYoQtL-TZlN33", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -401, "y": -21.5, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 69, "height": 32, "seed": 1986197695, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": ":@@@@", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 53, "versionNonce": 1836414638, "isDeleted": false, "id": "fm3RGJKB9jS11sTXyjoou", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -176, "y": -46.5, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 182, "height": 96, "seed": 319285265, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": ":@@@@\ndenotes known and\nopen port", "baseline": 87, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 25, "versionNonce": 1740968754, "isDeleted": false, "id": "AZNIOMnNmieb2rDlJjzK9", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -742, "y": 8.5, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 50, "height": 32, "seed": 1009326143, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": ":xxxx", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 442, "versionNonce": 825127150, "isDeleted": false, "id": "MJpdCSvAqHeT17Z6EFOyj", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -190, "y": 140, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 284, "height": 250, "seed": 492805375, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 16, "fontFamily": 1, "text": "This should probably have a\ncache for clientA, wherein\nclientA leaves a pending\nmessage of \"I wanna talk to\nclientB\". If clientB is connected\nto the mediator, then clientA\ngets an immediate response. If not,\nthe mediator will remember and\nlet clientA know whenever clientB\nconnects to the mediator.", "baseline": 243, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 191, "versionNonce": 333438194, "isDeleted": false, "id": "WSSVDcv7l4fNsRmW_Zk1C", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1421.75, "y": -344.125, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 193, "height": 32, "seed": 589112593, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "Simple Reliable UDP", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 558, "versionNonce": 5120814, "isDeleted": false, "id": "xZx2NBeeWJgDVwW3pNfeB", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1654.25, "y": -301.625, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 672, "height": 160, "seed": 682218129, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "Designed to provide a bi-directional stream.\n\n * Sequence Number per message, per-side, per-host(address+port)\n * Ack, somehow\n", "baseline": 151, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 203, "versionNonce": 226193074, "isDeleted": false, "id": "4wSGNBH4A3GWQ1mifkfPi", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1655.5, "y": 38.375, "strokeColor": "#e67700", "backgroundColor": "transparent", "width": 118, "height": 32, "seed": 1784949503, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "LSEQUENCE", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 434, "versionNonce": 759008622, "isDeleted": false, "id": "fPQWYSKbG8eZXN0n5AuJD", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1655.5, "y": 128.375, "strokeColor": "#e67700", "backgroundColor": "transparent", "width": 119, "height": 32, "seed": 570737279, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "RSEQUENCE", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 312, "versionNonce": 2034157682, "isDeleted": false, "id": "OqUPnHIb9K6nxPj-VPQZ0", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1510.5, "y": 39.625, "strokeColor": "#e67700", "backgroundColor": "transparent", "width": 181, "height": 32, "seed": 14441759, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "PAYLOAD LENGTH", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 450, "versionNonce": 1430630318, "isDeleted": false, "id": "xNBo0ssjS9C1CJYqP4pci", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 60, "angle": 0, "x": -1296.75, "y": 38.375, "strokeColor": "#862e9c", "backgroundColor": "transparent", "width": 164, "height": 32, "seed": 78086975, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "PAYLOAD CHUNK", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 2923, "versionNonce": 1324411442, "isDeleted": false, "id": "GLmvV33KMl5NZ6uMpyWgz", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1942.2142857142856, "y": 249.66071428571428, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 549, "height": 416, "seed": 570249759, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "LSequence is iterated with each packet sent.\n\nOn receive, send LSequence back as RSequence ACK.\nIf RSequence ACK is not received within 1 second,\nconsider it lost and add original Sequence message into\nthe RESEND QUEUE.\n\nSending can be of arbitrary length, but is sent in\n468 byte chunks. If a message is less than the\nbyte amount, it is sent as a FULLCHUNK. If the\nmessage is more, then a BEGIN type is sent,\nfollowed by 0 or more CHUNK types, and ended\nwith an END type.", "baseline": 407, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 95, "versionNonce": 76515822, "isDeleted": false, "id": "5e4_evfmGxi2x1ghPzrhR", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1406.75, "y": 170.875, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 156, "height": 32, "seed": 1306578559, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "500 bytes max", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 130, "versionNonce": 1970852850, "isDeleted": false, "id": "CDkLKs0FA0iSLe2CtGk-q", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1724.25, "y": -25.375, "strokeColor": "#000000", "backgroundColor": "#fd7e14", "width": 57, "height": 32, "seed": 287083551, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "TYPE", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 105, "versionNonce": 1512315950, "isDeleted": false, "id": "63EU5oolq5tk-ZVgCkcuT", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1731.75, "y": -56.625, "strokeColor": "#c92a2a", "backgroundColor": "#fd7e14", "width": 59, "height": 32, "seed": 955568657, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "8 bits", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 134, "versionNonce": 1591575986, "isDeleted": false, "id": "AS-zRCTxXP7CHXR_RP3yi", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1718, "y": 132.125, "strokeColor": "#e67700", "backgroundColor": "#fd7e14", "width": 43, "height": 32, "seed": 1537755825, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "ACK", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 112, "versionNonce": 736913006, "isDeleted": false, "id": "bMu1sFTptawdoXz2oTMEk", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1735.5, "y": 39.625, "strokeColor": "#e67700", "backgroundColor": "#fd7e14", "width": 66, "height": 32, "seed": 1695826001, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "BEGIN", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 144, "versionNonce": 608567154, "isDeleted": false, "id": "b3x6jzKSyZtlOlyewh_OL", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1736.75, "y": 67.125, "strokeColor": "#e67700", "backgroundColor": "#fd7e14", "width": 65, "height": 32, "seed": 1261805009, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "CHUNK", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 188, "versionNonce": 716269742, "isDeleted": false, "id": "mWJ9N_Ff7VvNfOIBIi57L", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1718, "y": 93.375, "strokeColor": "#e67700", "backgroundColor": "#fd7e14", "width": 45, "height": 32, "seed": 1131979327, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "END", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 203, "versionNonce": 569983282, "isDeleted": false, "id": "q3lSX8-5hZytMWyivwysS", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1645.5, "y": -21.625, "strokeColor": "#000000", "backgroundColor": "#fd7e14", "width": 106, "height": 32, "seed": 1521852159, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "SEQUENCE", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "rectangle", "version": 537, "versionNonce": 102507246, "isDeleted": false, "id": "DnVj-bxL8_mD3uiUsxzTF", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 10, "angle": 0, "x": -1311.75, "y": 21.125, "strokeColor": "#0b7285", "backgroundColor": "#15aabf", "width": 195, "height": 98.75, "seed": 371607345, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [] }, { "type": "text", "version": 31, "versionNonce": 324946674, "isDeleted": false, "id": "Wh8DP8zwnXIDu17DfrkwS", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1644.25, "y": -49.125, "strokeColor": "#c92a2a", "backgroundColor": "#15aabf", "width": 64, "height": 32, "seed": 1879594353, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "15 bits", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 265, "versionNonce": 280335662, "isDeleted": false, "id": "VAl9rhf_PJmGIHsaXs_QE", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1470.5, "y": -20.375, "strokeColor": "#000000", "backgroundColor": "#fd7e14", "width": 61, "height": 32, "seed": 235874545, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "DATA", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 61, "versionNonce": 788274354, "isDeleted": false, "id": "Hdd4g8e0VWUem_NWGF3rU", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1471.75, "y": -49.125, "strokeColor": "#c92a2a", "backgroundColor": "#15aabf", "width": 57, "height": 32, "seed": 700357471, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "9 bits", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 253, "versionNonce": 1676066670, "isDeleted": false, "id": "m-IvWcrMRZNuEUuYCjDQ-", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1778, "y": 13.375, "strokeColor": "#e67700", "backgroundColor": "#fd7e14", "width": 111, "height": 32, "seed": 1371140113, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "FULLCHUNK", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 96, "versionNonce": 1115272818, "isDeleted": false, "id": "U-rcRMhKXjaTEP3w1S4wP", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1688, "y": -94.125, "strokeColor": "#c92a2a", "backgroundColor": "#15aabf", "width": 266, "height": 32, "seed": 822651281, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "4 BYTE PACKET HEADER", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 233, "versionNonce": 66625966, "isDeleted": false, "id": "iz8UJXq339BKE2_T7qkH4", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1318, "y": -86.625, "strokeColor": "#c92a2a", "backgroundColor": "#15aabf", "width": 294, "height": 32, "seed": 1563378353, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "468 BYTE PACKET PAYLOAD", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "rectangle", "version": 512, "versionNonce": 1318983730, "isDeleted": false, "id": "JW8enIwQn1ZJFkV2NCC4-", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 10, "angle": 0, "x": -1515.5, "y": 129.875, "strokeColor": "#d9480f", "backgroundColor": "#fd7e14", "width": 187.50000000000003, "height": 32.50000000000001, "seed": 1514526929, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [] }, { "type": "text", "version": 509, "versionNonce": 68434926, "isDeleted": false, "id": "mfVaYz9NXVOuOMiXSDOt3", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1480.5, "y": 129.625, "strokeColor": "#e67700", "backgroundColor": "transparent", "width": 94, "height": 32, "seed": 1577160977, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "EMPTY :(", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 42, "versionNonce": 592462322, "isDeleted": false, "id": "tYuLW_5hrRh_rclbfGItj", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1303, "y": -22.875, "strokeColor": "#000000", "backgroundColor": "#15aabf", "width": 75, "height": 32, "seed": 1828453375, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "optional", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 3220, "versionNonce": 709004846, "isDeleted": false, "id": "yWPwX5AwLetJInu74djfD", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": -1365.7142857142856, "y": 246.91071428571433, "strokeColor": "#000000", "backgroundColor": "transparent", "width": 528, "height": 832, "seed": 8848287, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "Packets are stored in an OUTBOUND QUEUE,\na PENDING QUEUE and a RESEND QUEUE.\n\nUntil a Message is fully consumed, it continues\nadding to the OUTBOUND QUEUE, providing the\nlength of the PENDING+RESEND does not\nexceed a particular Threshold.\n\nThreshold should likely be determined by some\nsort of metric achieved by total pack send\nrate combined with round-trip-time from the\ntarget. If the RTT is higher, then the packet\nsend rate should be reduced. If the RTT is\nstable, then send rate could be increased up\nto a percentage of decline from its stable value.\n\nProbably assume a 20 packets/second minimum? Then\nthrottle up from there providing the RTT doesn't\nincrease by any great threshold (250ms is probably\nthe upper limit?)\n\nPackets are removed from the PENDING QUEUE\nonce they receive their ACK. Packets are removed\nfrom the RESEND QUEUE once they are sent.\nPackets are moved from the OUTBOUND QUEUE\ninto the PENDING QUEUE once there is room.", "baseline": 823, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 922, "versionNonce": 1465604782, "isDeleted": false, "id": "6HtLHZJxGGcgbZzZqNEbI", "fillStyle": "solid", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": 126, "y": 167.49999999999994, "strokeColor": "#c92a2a", "backgroundColor": "#82c91e", "width": 98, "height": 32, "seed": 1804022719, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "RSA-OAEP", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 518, "versionNonce": 1654615858, "isDeleted": false, "id": "-Uof9BU--dd_YuuVwxN-U", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": 577, "y": -63.5, "strokeColor": "#000000", "backgroundColor": "#82c91e", "width": 92, "height": 32, "seed": 1260128511, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "Plaintext", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "type": "text", "version": 382, "versionNonce": 750245102, "isDeleted": false, "id": "f8s5uR1Pw_U8qDkdyI5xC", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "angle": 0, "x": 177, "y": 253.5, "strokeColor": "#364fc7", "backgroundColor": "#82c91e", "width": 38, "height": 32, "seed": 1050019711, "groupIds": [], "strokeSharpness": "sharp", "boundElementIds": [], "fontSize": 20, "fontFamily": 1, "text": "AES", "baseline": 23, "textAlign": "left", "verticalAlign": "top" }, { "id": "XVkI5j_8PWAYYuXHKASYZ", "type": "text", "x": 166.6666666666656, "y": 540.2499999999998, "width": 545, "height": 160, "angle": 0, "strokeColor": "#000000", "backgroundColor": "#ced4da", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, "groupIds": [], "strokeSharpness": "sharp", "seed": 1488843118, "version": 329, "versionNonce": 594719342, "isDeleted": false, "boundElementIds": null, "text": "Note: It might make more sense to have the GREET\nmessage actually encrypted with client B's hub\npublic key? And client B would probably also already\nknow client A's hub public key from the mediator step...\nHmm", "fontSize": 20, "fontFamily": 1, "textAlign": "left", "verticalAlign": "top", "baseline": 151 } ], "appState": { "gridSize": null, "viewBackgroundColor": "#ffffff" } }