{"id":11960,"date":"2021-10-07T08:00:39","date_gmt":"2021-10-07T15:00:39","guid":{"rendered":"https:\/\/softwareengineeringdaily.com\/?p=11960"},"modified":"2021-10-08T09:27:09","modified_gmt":"2021-10-08T16:27:09","slug":"how-your-network-affects-user-interactivity","status":"publish","type":"post","link":"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/","title":{"rendered":"How Your Network Affects User Interactivity"},"content":{"rendered":"<p>The internet was designed to move data worldwide, despite technological advancements, global catastrophes, or your geography.<\/p>\n<p>It\u2019s meant to be reliable, no matter any of those conditions.<\/p>\n<p>But the evolution of the internet has seen an increased pressure to deliver a larger volume of data while maintaining the same level of reliability.<\/p>\n<p>For example, real-time applications have begun to take over the internet. While they don\u2019t necessarily rely on transferring large amounts of data, they do require stable connections and the lowest possible latency to avoid minimal delays or interruptions.\u00a0<i><\/p>\n<p><b>Enter WebRTC.<\/b><\/i><\/p>\n<p><span style=\"font-weight: 400;\">Google first announced WebRTC as an open-source package to facilitate real-time audio and video streaming in a browser-agnostic fashion. Fast forward roughly ten years since the release in 2011, and we have reached a point where we can\u2019t imagine life without using these real-time communication applications.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">While the support of WebRTC is still a work in progress, to say the least (Safari being the most notorious offender of all major browsers), both WebRTC and the applications employing WebRTC have come a long way, to the point where for the most part our online communication feels as good as real-time with a decent frame rate and overall video\/audio quality.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A vast majority of the applications employing WebRTC rely heavily upon an underlying API present in most modern-day browsers called \u201cgetUserMedia.\u201d Here\u2019s where we can draw a correlation-causation analogy. getUserMedia is used to fetch either the audio or video streams from the user\u2019s microphone and camera. Since most WebRTC based applications rely on either voice or video or both, we can make an informed guess that an upward trend in microphone and camera use would imply an increased usage of WebRTC based products, too.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We can glance over the <\/span><a href=\"https:\/\/www.chromestatus.com\/metrics\/feature\/timeline\/popularity\/1402\"><span style=\"font-weight: 400;\">Chrome platform status<\/span><\/a><span style=\"font-weight: 400;\">; for this API (getUserMedia), you can see that the trend keeps going upwards! The slight downward trend can be attributed to the fact that offices started opening up &#8211; this isn\u2019t necessarily indicative of the fact that WebRTC\u2019s usage has gone down &#8211;\u00a0 remember, we are making a correlation-causation analogy here!<\/span><\/p>\n<p><a href=\"https:\/\/www.chromestatus.com\/metrics\/feature\/timeline\/popularity\/1402\"><img fetchpriority=\"high\" decoding=\"async\" data-attachment-id=\"11961\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/howyournetwork_graph\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/HowYourNetwork_Graph.jpg?fit=624%2C332&amp;ssl=1\" data-orig-size=\"624,332\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"HowYourNetwork_Graph\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/HowYourNetwork_Graph.jpg?fit=300%2C160&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/HowYourNetwork_Graph.jpg?fit=624%2C332&amp;ssl=1\" class=\"wp-image-11961 size-full aligncenter\" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/HowYourNetwork_Graph.jpg?resize=624%2C332\" alt=\"\" width=\"624\" height=\"332\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/HowYourNetwork_Graph.jpg?w=624&amp;ssl=1 624w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/HowYourNetwork_Graph.jpg?resize=300%2C160&amp;ssl=1 300w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/HowYourNetwork_Graph.jpg?resize=469%2C250&amp;ssl=1 469w\" sizes=\"(max-width: 624px) 100vw, 624px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">One can quickly realize that this leads to a central point of failure &#8211; if a malicious actor understands how to game the WebRTC protocol, they can essentially apply the same formula to most communication tools to overtake them. Since the pandemic caused in-person meetings to be a thing of the past, all talks, be it random jibber-jabber or highly secretive\/sensitive business topics, happen over these applications.\u00a0 Security needs to be one of the top concerns of a software group deploying WebRTC.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">What exactly would a company that relies heavily on WebRTC in their application want to achieve? Given the current state of WebRTC, there are three things to consider:\u00a0<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Latency<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Security of communications<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Maintenance cost of infrastructure<\/span><\/li>\n<\/ol>\n<h3><b>Latency<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">To understand what affects latency, we need to know how WebRTC functions. The diagram below describes the handshaking and eventual secure communication between Peer A and Peer B.<\/span><\/p>\n<p><img decoding=\"async\" data-attachment-id=\"11962\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/latency_graph\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Latency_Graph.jpg?fit=503%2C438&amp;ssl=1\" data-orig-size=\"503,438\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Latency_Graph\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Latency_Graph.jpg?fit=300%2C261&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Latency_Graph.jpg?fit=503%2C438&amp;ssl=1\" class=\"aligncenter size-full wp-image-11962\" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Latency_Graph.jpg?resize=503%2C438\" alt=\"\" width=\"503\" height=\"438\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Latency_Graph.jpg?w=503&amp;ssl=1 503w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Latency_Graph.jpg?resize=300%2C261&amp;ssl=1 300w\" sizes=\"(max-width: 503px) 100vw, 503px\" data-recalc-dims=\"1\" \/><\/p>\n<p><span style=\"font-weight: 400;\">A quick takeaway from looking at this picture is that Peer A and Peer B cannot somehow magically communicate with each other. WebRTC needs an intermediary infrastructure in place to somehow connect these two peers.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Suppose Peer A wishes to speak with B, then A generates something called an offer, and the task of the WebRTC protocol is to relay the offer to B. Hiding the underlying intricacies, Peer A\u2019s \u201coffer\u201d includes information that can help Peer B link back to Peer A, the protocol facilitating this transfer is called Session Description Protocol &amp; the act of exchanging the offer is managed by signaling methods which can either be SIP (Session Initiation Protocol) over a WebSocket or a JSON over WebSocket. Once this initial offer\/answer combination is exchanged, ICE (Interactive Connectivity Establishment) swoops in and processes the inbound SDP (Session Description Protocol) to then determine the optimal path to connect through &#8211; here\u2019s where STUN, TURN &amp; Signalling servers come into the picture.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A STUN server is required by the party initiating the offer (in our case Peer A) to generate a list of ICE candidates. Once that\u2019s done, using the signaling servers, we transmit the offer to the intended Peer (Peer B in our example).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Skipping a few steps ahead, Peer B would now employ the signaling servers again to send an answer to the offer generated by Peer A.\u00a0 Then, based on the answer, the two peers may begin communicating.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">You might wonder how and why TURN servers never came into the picture in this entire description. And you\u2019re right &#8211; TURN servers are a sort of fallback. In cases where your clients cannot generate a direct Peer-to-Peer connection, TURN (Traversal Using Relay NAT) servers come into the picture and facilitate your peers to connect to each other.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">TURN is a must-have for any application that is heavily reliant on WebRTC since not all clients can have a P2P connection. However, these are notorious for introducing latency into your network.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">An application like Subspace provides a managed solution to this problem. <\/span><a href=\"https:\/\/subspace.com\/product\/globalturn\"><span style=\"font-weight: 400;\">GlobalTURN<\/span><\/a><span style=\"font-weight: 400;\"> is a way to achieve managed TURN servers providing the least latency! The graph below indicates the latency savings achieved when using Subspace instead of normal internet routing.<\/span><\/p>\n<p><a href=\"https:\/\/subspace.com\/resources\/real-time-tcp-udp\"><img decoding=\"async\" data-attachment-id=\"11963\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/latencydistribution_graph\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/LatencyDistribution_Graph.jpg?fit=624%2C327&amp;ssl=1\" data-orig-size=\"624,327\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"LatencyDistribution_Graph\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/LatencyDistribution_Graph.jpg?fit=300%2C157&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/LatencyDistribution_Graph.jpg?fit=624%2C327&amp;ssl=1\" class=\"aligncenter wp-image-11963 size-full\" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/LatencyDistribution_Graph.jpg?resize=624%2C327\" alt=\"\" width=\"624\" height=\"327\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/LatencyDistribution_Graph.jpg?w=624&amp;ssl=1 624w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/LatencyDistribution_Graph.jpg?resize=300%2C157&amp;ssl=1 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Think about it &#8211; you\u2019d ideally have to figure out the best server pairing by investing development time behind this. Even after investing all this time, as your application expands and your user base grows, this data becomes irrelevant since users from different parts of the world start connecting. By eliminating the act of self-managing, you free up time that can be invested behind actual business logic and let a network experienced in managing these to the most optimal degree do it for you &#8211; ensuring your users get the best experience possible. Traffic bottlenecks are one of the significant sources of delay in RTC. GlobalTURN avoids this altogether, making even the TURN-based connections feel as if they were genuinely peer-to-peer.<\/span><\/p>\n<h3><b>Security<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Building on top of what we\u2019ve established so far &#8211; we can realize there are many points of failure in this entire communication channel, leaving the peers and subsequently the whole network-wide open to attacks.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A bunch of possibilities includes:\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Taking over the initial offer to forge the identity of a malicious actor as Peer A<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Taking over the STUN server(s) to make Peer A believe that the malicious actor is in fact Peer B<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Taking over the communication channel to listen to the actual data being transmitted between A and B<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Taking over the TURN servers and listening to the data being relayed via them.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">The worst offender of all would be a Distributed Denial of Service (DDOS) attack on your infrastructure that would overload both the STUN and TURN servers, causing users to not connect in the first place.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"11964\" data-permalink=\"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/security\/\" data-orig-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Security.jpg?fit=624%2C340&amp;ssl=1\" data-orig-size=\"624,340\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Security\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Security.jpg?fit=300%2C163&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Security.jpg?fit=624%2C340&amp;ssl=1\" class=\"aligncenter size-full wp-image-11964\" src=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Security.jpg?resize=624%2C340\" alt=\"\" width=\"624\" height=\"340\" srcset=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Security.jpg?w=624&amp;ssl=1 624w, https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Security.jpg?resize=300%2C163&amp;ssl=1 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" data-recalc-dims=\"1\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Subspace comes to the rescue in this scenario too &#8211; providing solid security in every managed solution it provides (<\/span><a href=\"https:\/\/subspace.com\/product\/packetaccelerator\"><span style=\"font-weight: 400;\">PacketAccelerator<\/span><\/a><span style=\"font-weight: 400;\">, <\/span><a href=\"https:\/\/subspace.com\/product\/globalturn\"><span style=\"font-weight: 400;\">GlobalTURN<\/span><\/a><span style=\"font-weight: 400;\">, or <\/span><a href=\"https:\/\/subspace.com\/product\/sipteleport\"><span style=\"font-weight: 400;\">SIPTeleport<\/span><\/a><span style=\"font-weight: 400;\">). It does so by masking the IP Addresses of the peers involved by passing their messages through a proxy to prevent the malicious actors from tracing back packets to original machines.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Alongside this, it also performs packet analysis using anomaly detection algorithms to get a hold of unusual activity before it causes significant damage. Not to forget, all of this security generally would end up coming at a price &#8211; a price paid by latency, but since Subspace has optimized routing algorithms, the additional security <\/span><a href=\"https:\/\/subspace.com\/resources\/ddos-prevention\"><span style=\"font-weight: 400;\">doesn\u2019t come with a majorly noticeable performance hit<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Subspace achieves this level of latency by providing optimization on all seven layers of the OSI model, i.e. from the physical infrastructure to the application layer.<\/span><\/p>\n<h3><b>Maintenance cost of infrastructure (TURN, STUN, etc)<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">All the servers mentioned above need to be configured during setup and need to be expanded as your organization needs increased capacity. As mentioned previously, figuring out the right balance &amp; placement of these servers is quintessential to having a highly performant application; however, figuring out the balance is not easy.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">With the use of <\/span><a href=\"https:\/\/subspace.com\/product\/packetaccelerator\"><span style=\"font-weight: 400;\">PacketAccelerator<\/span><\/a><span style=\"font-weight: 400;\">, <\/span><a href=\"https:\/\/subspace.com\/product\/globalturn\"><span style=\"font-weight: 400;\">GlobalTURN<\/span><\/a><span style=\"font-weight: 400;\"> &amp; <\/span><a href=\"https:\/\/subspace.com\/product\/sipteleport\"><span style=\"font-weight: 400;\">SIPTeleport<\/span><\/a><span style=\"font-weight: 400;\"> you offload the work of upkeep away from your team and get the peace of mind that your application is running in the most optimized fashion possible.<\/span><\/p>\n<p><a href=\"https:\/\/subspace.com\/product\/sipteleport\"><span style=\"font-weight: 400;\">SIPTeleport<\/span><\/a><span style=\"font-weight: 400;\"> comes packed with proprietary algorithms to ensure the least packet drops, reducing the jittery\/laggy feeling we often associate with low-quality RTCApplications. It helps in establishing the connections much faster, providing customers with instant access\/responses.\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/subspace.com\/product\/packetaccelerator\"><span style=\"font-weight: 400;\">PacketAccelerator<\/span><\/a><span style=\"font-weight: 400;\"> provides enhancements in layers 3 and 4 of the TCP &amp; UDP packet delivery phase, providing improvements of <\/span><a href=\"https:\/\/subspacepowered.medium.com\/sds-4ab772cf81da\"><span style=\"font-weight: 400;\">up to 80% reduced jitter &amp; 99% reduced packet loss<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><a href=\"https:\/\/subspace.com\/product\/globalturn\"><span style=\"font-weight: 400;\">GlobalTURN<\/span><\/a><span style=\"font-weight: 400;\">, as described previously, provides a managed TURN solution without having to deal with the hassle of maintenance and acquiring personnel with the required networking knowledge. Global TURN essentially allows connecting to a single TURN IP address &#8211; simplifying and accelerating your ICE negotiations.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Subspace provides a managed solution for handling pretty much every communication need for a product that relies on real-time communications &#8211; be it scaling up in real-time or maintaining low latency while providing excellent security. A solution like Subspace alleviates the stress of managing these services, allowing your team to focus on your business logic!<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Go to <\/span><a href=\"http:\/\/softwareengineeringdaily.com\/subspace\"><span style=\"font-weight: 400;\">softwareengineeringdaily.com\/subspace<\/span><\/a><span style=\"font-weight: 400;\"> to learn more.<\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The internet was designed to move data worldwide, despite technological advancements, global catastrophes, or your geography. It\u2019s meant to be reliable, no matter any of those conditions. But the evolution of the internet has seen an increased pressure to deliver a larger volume of data while maintaining the same level of reliability. For example, real-time<\/p>\n","protected":false},"author":75,"featured_media":11968,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"How Your Network Affects User Interactivity by Viral Tagdiwala @viraltagdiwala @subspacepowered","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[1363,83,2143],"tags":[5093,5090,5091,5092,5098,4901,392],"class_list":["post-11960","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-all-episodes","category-articles","category-exclusive-content","tag-getusermedia","tag-globalturn","tag-packetaccelerator","tag-sipteleport","tag-subspace","tag-viral-tagdiwala","tag-webrtc"],"jetpack_publicize_connections":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How Your Network Affects User Interactivity - Software Engineering Daily<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How Your Network Affects User Interactivity - Software Engineering Daily\" \/>\n<meta property=\"og:description\" content=\"The internet was designed to move data worldwide, despite technological advancements, global catastrophes, or your geography. It\u2019s meant to be reliable, no matter any of those conditions. But the evolution of the internet has seen an increased pressure to deliver a larger volume of data while maintaining the same level of reliability. For example, real-time\" \/>\n<meta property=\"og:url\" content=\"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/\" \/>\n<meta property=\"og:site_name\" content=\"Software Engineering Daily\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-07T15:00:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-10-08T16:27:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Subspace_Featured.jpg?fit=859%2C482&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"859\" \/>\n\t<meta property=\"og:image:height\" content=\"482\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Viral Tagdiwala\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@viraltagdiwala\" \/>\n<meta name=\"twitter:site\" content=\"@software_daily\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Viral Tagdiwala\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/\"},\"author\":{\"name\":\"Viral Tagdiwala\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/c1a99cb178c898894e41d2d200f341d4\"},\"headline\":\"How Your Network Affects User Interactivity\",\"datePublished\":\"2021-10-07T15:00:39+00:00\",\"dateModified\":\"2021-10-08T16:27:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/\"},\"wordCount\":1555,\"publisher\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Subspace_Featured.jpg?fit=859%2C482&ssl=1\",\"keywords\":[\"getUserMedia\",\"GlobalTurn\",\"PacketAccelerator\",\"SIPTeleport\",\"Subspace\",\"Viral Tagdiwala\",\"WebRTC\"],\"articleSection\":[\"All Content\",\"Exclusive Articles\",\"Exclusive Content\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/\",\"url\":\"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/\",\"name\":\"How Your Network Affects User Interactivity - Software Engineering Daily\",\"isPartOf\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Subspace_Featured.jpg?fit=859%2C482&ssl=1\",\"datePublished\":\"2021-10-07T15:00:39+00:00\",\"dateModified\":\"2021-10-08T16:27:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Subspace_Featured.jpg?fit=859%2C482&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Subspace_Featured.jpg?fit=859%2C482&ssl=1\",\"width\":859,\"height\":482},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/softwareengineeringdaily.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How Your Network Affects User Interactivity\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#website\",\"url\":\"https:\/\/softwareengineeringdaily.com\/\",\"name\":\"Software Engineering Daily\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/softwareengineeringdaily.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#organization\",\"name\":\"Software Engineering Daily\",\"url\":\"https:\/\/softwareengineeringdaily.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2024\/01\/cropped-sed_website_banner.png?fit=549%2C169&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2024\/01\/cropped-sed_website_banner.png?fit=549%2C169&ssl=1\",\"width\":549,\"height\":169,\"caption\":\"Software Engineering Daily\"},\"image\":{\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/software_daily\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/c1a99cb178c898894e41d2d200f341d4\",\"name\":\"Viral Tagdiwala\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2f77f34ae93c0a8097b150d0990027e2?s=96&d=retro&r=pg\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2f77f34ae93c0a8097b150d0990027e2?s=96&d=retro&r=pg\",\"caption\":\"Viral Tagdiwala\"},\"description\":\"Viral is a grad student at Northeastern University, Vancouver. He loves reading papers on exercise science when he\u2019s not coding!\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/viraltagdiwala\",\"https:\/\/x.com\/@viraltagdiwala\"],\"url\":\"https:\/\/softwareengineeringdaily.com\/author\/viral\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How Your Network Affects User Interactivity - Software Engineering Daily","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/","og_locale":"en_US","og_type":"article","og_title":"How Your Network Affects User Interactivity - Software Engineering Daily","og_description":"The internet was designed to move data worldwide, despite technological advancements, global catastrophes, or your geography. It\u2019s meant to be reliable, no matter any of those conditions. But the evolution of the internet has seen an increased pressure to deliver a larger volume of data while maintaining the same level of reliability. For example, real-time","og_url":"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/","og_site_name":"Software Engineering Daily","article_published_time":"2021-10-07T15:00:39+00:00","article_modified_time":"2021-10-08T16:27:09+00:00","og_image":[{"width":859,"height":482,"url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Subspace_Featured.jpg?fit=859%2C482&ssl=1","type":"image\/jpeg"}],"author":"Viral Tagdiwala","twitter_card":"summary_large_image","twitter_creator":"@viraltagdiwala","twitter_site":"@software_daily","twitter_misc":{"Written by":"Viral Tagdiwala","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/#article","isPartOf":{"@id":"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/"},"author":{"name":"Viral Tagdiwala","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/c1a99cb178c898894e41d2d200f341d4"},"headline":"How Your Network Affects User Interactivity","datePublished":"2021-10-07T15:00:39+00:00","dateModified":"2021-10-08T16:27:09+00:00","mainEntityOfPage":{"@id":"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/"},"wordCount":1555,"publisher":{"@id":"https:\/\/softwareengineeringdaily.com\/#organization"},"image":{"@id":"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Subspace_Featured.jpg?fit=859%2C482&ssl=1","keywords":["getUserMedia","GlobalTurn","PacketAccelerator","SIPTeleport","Subspace","Viral Tagdiwala","WebRTC"],"articleSection":["All Content","Exclusive Articles","Exclusive Content"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/","url":"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/","name":"How Your Network Affects User Interactivity - Software Engineering Daily","isPartOf":{"@id":"https:\/\/softwareengineeringdaily.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/#primaryimage"},"image":{"@id":"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Subspace_Featured.jpg?fit=859%2C482&ssl=1","datePublished":"2021-10-07T15:00:39+00:00","dateModified":"2021-10-08T16:27:09+00:00","breadcrumb":{"@id":"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/#primaryimage","url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Subspace_Featured.jpg?fit=859%2C482&ssl=1","contentUrl":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Subspace_Featured.jpg?fit=859%2C482&ssl=1","width":859,"height":482},{"@type":"BreadcrumbList","@id":"https:\/\/softwareengineeringdaily.com\/2021\/10\/07\/how-your-network-affects-user-interactivity\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/softwareengineeringdaily.com\/"},{"@type":"ListItem","position":2,"name":"How Your Network Affects User Interactivity"}]},{"@type":"WebSite","@id":"https:\/\/softwareengineeringdaily.com\/#website","url":"https:\/\/softwareengineeringdaily.com\/","name":"Software Engineering Daily","description":"","publisher":{"@id":"https:\/\/softwareengineeringdaily.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/softwareengineeringdaily.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/softwareengineeringdaily.com\/#organization","name":"Software Engineering Daily","url":"https:\/\/softwareengineeringdaily.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2024\/01\/cropped-sed_website_banner.png?fit=549%2C169&ssl=1","contentUrl":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2024\/01\/cropped-sed_website_banner.png?fit=549%2C169&ssl=1","width":549,"height":169,"caption":"Software Engineering Daily"},"image":{"@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/software_daily"]},{"@type":"Person","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/c1a99cb178c898894e41d2d200f341d4","name":"Viral Tagdiwala","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/softwareengineeringdaily.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2f77f34ae93c0a8097b150d0990027e2?s=96&d=retro&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2f77f34ae93c0a8097b150d0990027e2?s=96&d=retro&r=pg","caption":"Viral Tagdiwala"},"description":"Viral is a grad student at Northeastern University, Vancouver. He loves reading papers on exercise science when he\u2019s not coding!","sameAs":["https:\/\/www.linkedin.com\/in\/viraltagdiwala","https:\/\/x.com\/@viraltagdiwala"],"url":"https:\/\/softwareengineeringdaily.com\/author\/viral\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/softwareengineeringdaily.com\/wp-content\/uploads\/2021\/10\/Subspace_Featured.jpg?fit=859%2C482&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p7GuoD-36U","_links":{"self":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/posts\/11960"}],"collection":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/users\/75"}],"replies":[{"embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/comments?post=11960"}],"version-history":[{"count":0,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/posts\/11960\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/media\/11968"}],"wp:attachment":[{"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/media?parent=11960"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/categories?post=11960"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/softwareengineeringdaily.com\/wp-json\/wp\/v2\/tags?post=11960"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}