mirror of
https://github.com/vacp2p/research.logos.co.git
synced 2026-04-03 03:01:03 -04:00
1 line
70 KiB
JavaScript
1 line
70 KiB
JavaScript
"use strict";(self.webpackChunkresearch_logos_co=self.webpackChunkresearch_logos_co||[]).push([[3880],{3623:e=>{e.exports=JSON.parse('{"permalink":"/rlog/GossipSub Improvements","source":"@site/rlog/2023-09-27-gossipimprovements.mdx","title":"GossipSub Improvements: Evolution of Overlay Design and Message Dissemination in Unstructured P2P Networks","description":"GossipSub Improvements: Evolution of Overlay Design and Message Dissemination in Unstructured P2P Networks","date":"2023-11-06T12:00:00.000Z","tags":[],"readingTime":13.825,"hasTruncateMarker":true,"authors":[{"name":"Umar Farooq","github":"ufarooqstatus","key":"farooq","page":null}],"frontMatter":{"title":"GossipSub Improvements: Evolution of Overlay Design and Message Dissemination in Unstructured P2P Networks","date":"2023-11-06T12:00:00.000Z","authors":"farooq","published":true,"slug":"GossipSub Improvements","categories":"research","toc_min_heading_level":2,"toc_max_heading_level":5},"unlisted":false,"prevItem":{"title":"Strengthening Anonymous DoS Prevention with Rate Limiting Nullifiers in Waku","permalink":"/rlog/rln-anonymous-dos-prevention"},"nextItem":{"title":"Nescience - A zkVM leveraging hiding properties","permalink":"/rlog/Nescience-A-zkVM-leveraging-hiding-properties"}}')},28453:(e,s,a)=>{a.d(s,{R:()=>r,x:()=>l});var n=a(96540);const i={},t=n.createContext(i);function r(e){const s=n.useContext(t);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),n.createElement(t.Provider,{value:s},e.children)}},60894:(e,s,a)=>{a.r(s),a.d(s,{assets:()=>m,contentTitle:()=>l,default:()=>o,frontMatter:()=>r,metadata:()=>n,toc:()=>c});var n=a(3623),i=a(74848),t=a(28453);const r={title:"GossipSub Improvements: Evolution of Overlay Design and Message Dissemination in Unstructured P2P Networks",date:new Date("2023-11-06T12:00:00.000Z"),authors:"farooq",published:!0,slug:"GossipSub Improvements",categories:"research",toc_min_heading_level:2,toc_max_heading_level:5},l=void 0,m={authorsImageUrls:[void 0]},c=[{value:"Motivitation",id:"motivitation",level:2},{value:"Introduction",id:"introduction",level:2},{value:"GOAL1: Low Latency Operation",id:"goal1-low-latency-operation",level:2},{value:"GOAL2: Considering Heterogeneity In Overlay Design",id:"goal2-considering-heterogeneity-in-overlay-design",level:2},{value:"GOAL3: Bandwidth Optimization",id:"goal3-bandwidth-optimization",level:2},{value:"GOAL4: Handling Large Messages",id:"goal4-handling-large-messages",level:2},{value:"GOAL5: Scalability",id:"goal5-scalability",level:2},{value:"Summary",id:"summary",level:2}];function h(e){const s={a:"a",annotation:"annotation",h1:"h1",h2:"h2",li:"li",math:"math",mi:"mi",mn:"mn",mo:"mo",mrow:"mrow",msub:"msub",ol:"ol",p:"p",semantics:"semantics",span:"span",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.p,{children:"GossipSub Improvements: Evolution of Overlay Design and Message Dissemination in Unstructured P2P Networks"}),"\n","\n",(0,i.jsx)(s.h2,{id:"motivitation",children:"Motivitation"}),"\n",(0,i.jsxs)(s.p,{children:["We have been recently working on analyzing and improving the performance of the GossipSub protocol for large messages,\r\nas in the case of Ethereum Improvement Proposal ",(0,i.jsx)(s.a,{href:"https://eips.ethereum.org/EIPS/eip-4844",children:"EIP-4844"}),".\r\nThis work led to a comprehensive study of unstructured P2P networks.\r\nThe intention was to identify the best practices that can serve as guidelines for performance improvement and scalability of P2P networks."]}),"\n",(0,i.jsx)(s.h2,{id:"introduction",children:"Introduction"}),"\n",(0,i.jsx)(s.p,{children:"Nodes in an unstructured p2p network form self-organizing overlay(s) on top of the IP infrastructure to facilitate different services like information dissemination,\r\nquery propagation, file sharing, etc. The overlay(s) can be as optimal as a tree-like structure or as enforcing as a fully connected mesh."}),"\n",(0,i.jsx)(s.p,{children:"Due to peer autonomy and a trustless computing environment, some peers may deviate from the expected operation or even leave the network.\r\nAt the same time, the underlying IP layer is unreliable."}),"\n",(0,i.jsx)(s.p,{children:"Therefore, tree-like overlays are not best suited for reliable information propagation.\r\nMoreover, tree-based solutions usually result in significantly higher message dissemination latency due to suboptimal branches."}),"\n",(0,i.jsx)(s.p,{children:"Flooding-based solutions, on the other hand, result in maximum resilience against adversaries and achieve minimal message dissemination latency because the message propagates through all (including the optimal) paths.\r\nRedundant transmissions help maintain the integrity and security of the network in the presence of adversaries and high node failure but significantly increase network-wide bandwidth utilization, cramming the bottleneck links."}),"\n",(0,i.jsxs)(s.p,{children:["An efficient alternative is to lower the number of redundant transmissions by D-regular broadcasting, where a peer will likely receive (or relay) a message from up to ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsx)(s.mrow,{children:(0,i.jsx)(s.mi,{children:"D"})}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"D"})]})})}),(0,i.jsx)(s.span,{className:"katex-html","aria-hidden":"true",children:(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"})]})})]})," random peers.\r\nPublishing through a D-regular overlay triggers approximately ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsxs)(s.mrow,{children:[(0,i.jsx)(s.mi,{children:"N"}),(0,i.jsx)(s.mo,{children:"\xd7"}),(0,i.jsx)(s.mi,{children:"D"})]}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"N \\times D"})]})})}),(0,i.jsxs)(s.span,{className:"katex-html","aria-hidden":"true",children:[(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.7667em",verticalAlign:"-0.0833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.10903em"},children:"N"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,i.jsx)(s.span,{className:"mbin",children:"\xd7"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}})]}),(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"})]})]})]})," transmissions.\r\nReducing ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsx)(s.mrow,{children:(0,i.jsx)(s.mi,{children:"D"})}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"D"})]})})}),(0,i.jsx)(s.span,{className:"katex-html","aria-hidden":"true",children:(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"})]})})]})," reduces the redundant transmissions but compromises reachability and latency.\r\nSharing metadata through a K-regular overlay (where ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsxs)(s.mrow,{children:[(0,i.jsx)(s.mi,{children:"K"}),(0,i.jsx)(s.mo,{children:">"}),(0,i.jsx)(s.mi,{children:"D"})]}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"K > D"})]})})}),(0,i.jsxs)(s.span,{className:"katex-html","aria-hidden":"true",children:[(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.7224em",verticalAlign:"-0.0391em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.07153em"},children:"K"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2778em"}}),(0,i.jsx)(s.span,{className:"mrel",children:">"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2778em"}})]}),(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"})]})]})]}),") allows nodes to pull missing messages."]}),"\n",(0,i.jsxs)(s.p,{children:["GossipSub [",(0,i.jsx)(s.a,{href:"https://arxiv.org/pdf/2007.02754.pdf",children:"1"}),"] benefits from full-message (D-regular) and metadata-only (k-regular) overlays.\r\nAlternatively, a metadata-only overlay can be used, requiring a pull-based operation that significantly minimizes bandwidth utilization at the cost of increased latency."]}),"\n",(0,i.jsxs)(s.p,{children:["Striking the right balance between parameters like ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsxs)(s.mrow,{children:[(0,i.jsx)(s.mi,{children:"D"}),(0,i.jsx)(s.mo,{separator:"true",children:","}),(0,i.jsx)(s.mi,{children:"K"})]}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"D, K"})]})})}),(0,i.jsx)(s.span,{className:"katex-html","aria-hidden":"true",children:(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.8778em",verticalAlign:"-0.1944em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"}),(0,i.jsx)(s.span,{className:"mpunct",children:","}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.1667em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.07153em"},children:"K"})]})})]}),", pull-based operation, etc., can yield application-specific performance tuning, but scalability remains a problem."]}),"\n",(0,i.jsx)(s.p,{children:"At the same time, many other aspects can significantly contribute to the network's performance and scalability.\r\nOne option is to realize peers' suitability and continuously changing capabilities while forming overlays."}),"\n",(0,i.jsx)(s.p,{children:"For instance, a low-bandwidth link near a publisher can significantly demean the entire network's performance.\r\nReshuffling of peering links according to the changing network conditions can lead to superior performance."}),"\n",(0,i.jsx)(s.p,{children:"Laying off additional responsibilities to more capable nodes (super nodes) can alleviate peer cramming, but it makes the network susceptible to adversaries/peer churn.\r\nGrouping multiple super nodes to form virtual node(s) can solve this problem."}),"\n",(0,i.jsx)(s.p,{children:"Similarly, flat (single-tier) overlays cannot address the routing needs in large (geographically dispersed) networks."}),"\n",(0,i.jsx)(s.p,{children:"Hierarchical (Multi-tier) overlays with different intra/inter-overlay routing solutions can better address these needs.\r\nMoreover, using message aggregation schemes for grouping multiple messages can save bandwidth and provide better resilience against adversaries/peer churn."}),"\n",(0,i.jsx)(s.p,{children:"This article's primary objective is to investigate the possible choices that can empower an unstructured P2P network to achieve superior performance for the broadest set of applications.\r\nWe look into different constraints imposed by application-specific needs (performance goals) and investigate various choices that can augment the network's performance.\r\nWe explore overlay designs/freshness, peer selection approaches, message-relaying mechanisms, and resilience against adversaries/peer churn.\r\nWe consider GossipSub a baseline protocol to explore various possibilities and decisively commit to the ones demonstrating superior performance.\r\nWe also discuss the current state and, where applicable, propose a strategic plan for embedding new features to the GossipSub protocol."}),"\n",(0,i.jsx)(s.h2,{id:"goal1-low-latency-operation",children:"GOAL1: Low Latency Operation"}),"\n",(0,i.jsx)(s.p,{children:"Different applications, like blockchain, streaming, etc., impose strict time bounds on network-wide message dissemination latency.\r\nA message delivered after the imposed time bounds is considered as dropped.\r\nAn early message delivery in applications like live streaming can further enhance the viewing quality."}),"\n",(0,i.jsx)(s.p,{children:"The properties and nature of the overlay network topology significantly impact the performance of services and applications executed on top of them.\r\nStudying and devising mechanisms for better overlay design and message dissemination is paramount to achieving superior performance."}),"\n",(0,i.jsx)(s.p,{children:"Interestingly, shortest-path message delivery trees have many limitations:"}),"\n",(0,i.jsxs)(s.ol,{children:["\n",(0,i.jsx)(s.li,{children:"Changing network dynamics requires a quicker and continuous readjustment of the multicast tree."}),"\n",(0,i.jsx)(s.li,{children:"The presence of resource-constrained (bandwidth/compute, etc.) nodes in the overlay can result in congestion."}),"\n",(0,i.jsx)(s.li,{children:"Node failure can result in partitions, making many segments unreachable."}),"\n",(0,i.jsx)(s.li,{children:"Assuring a shortest-path tree-like structure requires a detailed view of the underlying (and continuously changing) network topology."}),"\n"]}),"\n",(0,i.jsxs)(s.p,{children:["Solutions involve creating multiple random trees to add redundancy [",(0,i.jsx)(s.a,{href:"https://ieeexplore.ieee.org/abstract/document/6267905",children:"2"}),"].\r\nAlternatives involve building an overlay mesh and forwarding messages through the multicast delivery tree (eager push)."]}),"\n",(0,i.jsx)(s.p,{children:"Metadata is shared through the overlay links so that the nodes can ask for missing messages (lazy push or pull-based operation) through the overlay links.\r\nNew nodes are added from the overlay on node failure, but it requires non-faulty node selection."}),"\n",(0,i.jsx)(s.p,{children:"GossipSub uses eager push (through overlay mesh) and lazy push (through IWANT messages)."}),"\n",(0,i.jsxs)(s.p,{children:["The mesh degree ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsxs)(s.mrow,{children:[(0,i.jsxs)(s.msub,{children:[(0,i.jsx)(s.mi,{children:"D"}),(0,i.jsxs)(s.mrow,{children:[(0,i.jsx)(s.mi,{children:"L"}),(0,i.jsx)(s.mi,{children:"o"}),(0,i.jsx)(s.mi,{children:"w"})]})]}),(0,i.jsx)(s.mo,{children:"\u2264"}),(0,i.jsx)(s.mi,{children:"D"}),(0,i.jsx)(s.mo,{children:"\u2264"}),(0,i.jsxs)(s.msub,{children:[(0,i.jsx)(s.mi,{children:"D"}),(0,i.jsxs)(s.mrow,{children:[(0,i.jsx)(s.mi,{children:"H"}),(0,i.jsx)(s.mi,{children:"i"}),(0,i.jsx)(s.mi,{children:"g"}),(0,i.jsx)(s.mi,{children:"h"})]})]})]}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"D_{Low} \\leq D \\leq D_{High}"})]})})}),(0,i.jsxs)(s.span,{className:"katex-html","aria-hidden":"true",children:[(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.8333em",verticalAlign:"-0.15em"}}),(0,i.jsxs)(s.span,{className:"mord",children:[(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"}),(0,i.jsx)(s.span,{className:"msupsub",children:(0,i.jsxs)(s.span,{className:"vlist-t vlist-t2",children:[(0,i.jsxs)(s.span,{className:"vlist-r",children:[(0,i.jsx)(s.span,{className:"vlist",style:{height:"0.3283em"},children:(0,i.jsxs)(s.span,{style:{top:"-2.55em",marginLeft:"-0.0278em",marginRight:"0.05em"},children:[(0,i.jsx)(s.span,{className:"pstrut",style:{height:"2.7em"}}),(0,i.jsx)(s.span,{className:"sizing reset-size6 size3 mtight",children:(0,i.jsxs)(s.span,{className:"mord mtight",children:[(0,i.jsx)(s.span,{className:"mord mathnormal mtight",children:"L"}),(0,i.jsx)(s.span,{className:"mord mathnormal mtight",children:"o"}),(0,i.jsx)(s.span,{className:"mord mathnormal mtight",style:{marginRight:"0.02691em"},children:"w"})]})})]})}),(0,i.jsx)(s.span,{className:"vlist-s",children:"\u200b"})]}),(0,i.jsx)(s.span,{className:"vlist-r",children:(0,i.jsx)(s.span,{className:"vlist",style:{height:"0.15em"},children:(0,i.jsx)(s.span,{})})})]})})]}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2778em"}}),(0,i.jsx)(s.span,{className:"mrel",children:"\u2264"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2778em"}})]}),(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.8193em",verticalAlign:"-0.136em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2778em"}}),(0,i.jsx)(s.span,{className:"mrel",children:"\u2264"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2778em"}})]}),(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.9694em",verticalAlign:"-0.2861em"}}),(0,i.jsxs)(s.span,{className:"mord",children:[(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"}),(0,i.jsx)(s.span,{className:"msupsub",children:(0,i.jsxs)(s.span,{className:"vlist-t vlist-t2",children:[(0,i.jsxs)(s.span,{className:"vlist-r",children:[(0,i.jsx)(s.span,{className:"vlist",style:{height:"0.3361em"},children:(0,i.jsxs)(s.span,{style:{top:"-2.55em",marginLeft:"-0.0278em",marginRight:"0.05em"},children:[(0,i.jsx)(s.span,{className:"pstrut",style:{height:"2.7em"}}),(0,i.jsx)(s.span,{className:"sizing reset-size6 size3 mtight",children:(0,i.jsxs)(s.span,{className:"mord mtight",children:[(0,i.jsx)(s.span,{className:"mord mathnormal mtight",style:{marginRight:"0.08125em"},children:"H"}),(0,i.jsx)(s.span,{className:"mord mathnormal mtight",children:"i"}),(0,i.jsx)(s.span,{className:"mord mathnormal mtight",style:{marginRight:"0.03588em"},children:"g"}),(0,i.jsx)(s.span,{className:"mord mathnormal mtight",children:"h"})]})})]})}),(0,i.jsx)(s.span,{className:"vlist-s",children:"\u200b"})]}),(0,i.jsx)(s.span,{className:"vlist-r",children:(0,i.jsx)(s.span,{className:"vlist",style:{height:"0.2861em"},children:(0,i.jsx)(s.span,{})})})]})})]})]})]})]})," is crucial in deciding message dissemination latency.\r\nA smaller value for ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsx)(s.mrow,{children:(0,i.jsx)(s.mi,{children:"D"})}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"D"})]})})}),(0,i.jsx)(s.span,{className:"katex-html","aria-hidden":"true",children:(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"})]})})]})," results in higher latency due to increased rounds, whereas a higher ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsx)(s.mrow,{children:(0,i.jsx)(s.mi,{children:"D"})}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"D"})]})})}),(0,i.jsx)(s.span,{className:"katex-html","aria-hidden":"true",children:(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"})]})})]})," reduces latency on the cost of increased bandwidth.\r\nAt the same time, keeping ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsx)(s.mrow,{children:(0,i.jsx)(s.mi,{children:"D"})}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"D"})]})})}),(0,i.jsx)(s.span,{className:"katex-html","aria-hidden":"true",children:(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"})]})})]})," independent of the growing network size (",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsx)(s.mrow,{children:(0,i.jsx)(s.mi,{children:"N"})}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"N"})]})})}),(0,i.jsx)(s.span,{className:"katex-html","aria-hidden":"true",children:(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.10903em"},children:"N"})]})})]}),") may increase network-wide message dissemination latency.\r\nAdjusting ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsx)(s.mrow,{children:(0,i.jsx)(s.mi,{children:"D"})}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"D"})]})})}),(0,i.jsx)(s.span,{className:"katex-html","aria-hidden":"true",children:(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"})]})})]})," with ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsx)(s.mrow,{children:(0,i.jsx)(s.mi,{children:"N"})}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"N"})]})})}),(0,i.jsx)(s.span,{className:"katex-html","aria-hidden":"true",children:(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.10903em"},children:"N"})]})})]})," maintains similar latency on the cost of increased workload for peers.\r\nAuthors in [",(0,i.jsx)(s.a,{href:"https://infoscience.epfl.ch/record/83478/files/EugGueKerMas04IEEEComp.pdf",children:"3"}),"] suggest only a logarithmic increase in ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsx)(s.mrow,{children:(0,i.jsx)(s.mi,{children:"D"})}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"D"})]})})}),(0,i.jsx)(s.span,{className:"katex-html","aria-hidden":"true",children:(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"})]})})]})," to maintain a manageable workload for peers.\r\nIn [",(0,i.jsx)(s.a,{href:"https://inria.hal.science/tel-02375909/document",children:"4"}),"], it is reported that the average mesh degree should not exceed ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsxs)(s.mrow,{children:[(0,i.jsxs)(s.msub,{children:[(0,i.jsx)(s.mi,{children:"D"}),(0,i.jsxs)(s.mrow,{children:[(0,i.jsx)(s.mi,{children:"a"}),(0,i.jsx)(s.mi,{children:"v"}),(0,i.jsx)(s.mi,{children:"g"})]})]}),(0,i.jsx)(s.mo,{children:"="}),(0,i.jsx)(s.mi,{children:"ln"}),(0,i.jsx)(s.mo,{children:"\u2061"}),(0,i.jsx)(s.mo,{stretchy:"false",children:"("}),(0,i.jsx)(s.mi,{children:"N"}),(0,i.jsx)(s.mo,{stretchy:"false",children:")"}),(0,i.jsx)(s.mo,{children:"+"}),(0,i.jsx)(s.mi,{children:"C"})]}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"D_{avg} = \\ln(N) + C"})]})})}),(0,i.jsxs)(s.span,{className:"katex-html","aria-hidden":"true",children:[(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.9694em",verticalAlign:"-0.2861em"}}),(0,i.jsxs)(s.span,{className:"mord",children:[(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"}),(0,i.jsx)(s.span,{className:"msupsub",children:(0,i.jsxs)(s.span,{className:"vlist-t vlist-t2",children:[(0,i.jsxs)(s.span,{className:"vlist-r",children:[(0,i.jsx)(s.span,{className:"vlist",style:{height:"0.1514em"},children:(0,i.jsxs)(s.span,{style:{top:"-2.55em",marginLeft:"-0.0278em",marginRight:"0.05em"},children:[(0,i.jsx)(s.span,{className:"pstrut",style:{height:"2.7em"}}),(0,i.jsx)(s.span,{className:"sizing reset-size6 size3 mtight",children:(0,i.jsxs)(s.span,{className:"mord mtight",children:[(0,i.jsx)(s.span,{className:"mord mathnormal mtight",children:"a"}),(0,i.jsx)(s.span,{className:"mord mathnormal mtight",style:{marginRight:"0.03588em"},children:"vg"})]})})]})}),(0,i.jsx)(s.span,{className:"vlist-s",children:"\u200b"})]}),(0,i.jsx)(s.span,{className:"vlist-r",children:(0,i.jsx)(s.span,{className:"vlist",style:{height:"0.2861em"},children:(0,i.jsx)(s.span,{})})})]})})]}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2778em"}}),(0,i.jsx)(s.span,{className:"mrel",children:"="}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2778em"}})]}),(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,i.jsx)(s.span,{className:"mop",children:"ln"}),(0,i.jsx)(s.span,{className:"mopen",children:"("}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.10903em"},children:"N"}),(0,i.jsx)(s.span,{className:"mclose",children:")"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,i.jsx)(s.span,{className:"mbin",children:"+"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}})]}),(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.07153em"},children:"C"})]})]})]})," for an optimal operation,\r\nwhere ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsx)(s.mrow,{children:(0,i.jsx)(s.mi,{children:"C"})}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"C"})]})})}),(0,i.jsx)(s.span,{className:"katex-html","aria-hidden":"true",children:(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.07153em"},children:"C"})]})})]})," is a small constant."]}),"\n",(0,i.jsxs)(s.p,{children:["Moreover, quicker shuffling of peers results in better performance in the presence of resource-constrained nodes or node failure [",(0,i.jsx)(s.a,{href:"https://inria.hal.science/tel-02375909/document",children:"4"}),"]."]}),"\n",(0,i.jsx)(s.h2,{id:"goal2-considering-heterogeneity-in-overlay-design",children:"GOAL2: Considering Heterogeneity In Overlay Design"}),"\n",(0,i.jsx)(s.p,{children:"Random peering connections in P2P overlays represent a stochastic process. It is inherently difficult to precisely model the performance of such systems.\r\nMost of the research on P2P networks provides simulation results assuming nodes with similar capabilities.\r\nThe aspect of dissimilar capabilities and resource-constrained nodes is less explored."}),"\n",(0,i.jsxs)(s.p,{children:["It is discussed in GOAL1 that overlay mesh results in better performance if ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsx)(s.mrow,{children:(0,i.jsxs)(s.msub,{children:[(0,i.jsx)(s.mi,{children:"D"}),(0,i.jsxs)(s.mrow,{children:[(0,i.jsx)(s.mi,{children:"a"}),(0,i.jsx)(s.mi,{children:"v"}),(0,i.jsx)(s.mi,{children:"g"})]})]})}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"D_{avg}"})]})})}),(0,i.jsx)(s.span,{className:"katex-html","aria-hidden":"true",children:(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.9694em",verticalAlign:"-0.2861em"}}),(0,i.jsxs)(s.span,{className:"mord",children:[(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"}),(0,i.jsx)(s.span,{className:"msupsub",children:(0,i.jsxs)(s.span,{className:"vlist-t vlist-t2",children:[(0,i.jsxs)(s.span,{className:"vlist-r",children:[(0,i.jsx)(s.span,{className:"vlist",style:{height:"0.1514em"},children:(0,i.jsxs)(s.span,{style:{top:"-2.55em",marginLeft:"-0.0278em",marginRight:"0.05em"},children:[(0,i.jsx)(s.span,{className:"pstrut",style:{height:"2.7em"}}),(0,i.jsx)(s.span,{className:"sizing reset-size6 size3 mtight",children:(0,i.jsxs)(s.span,{className:"mord mtight",children:[(0,i.jsx)(s.span,{className:"mord mathnormal mtight",children:"a"}),(0,i.jsx)(s.span,{className:"mord mathnormal mtight",style:{marginRight:"0.03588em"},children:"vg"})]})})]})}),(0,i.jsx)(s.span,{className:"vlist-s",children:"\u200b"})]}),(0,i.jsx)(s.span,{className:"vlist-r",children:(0,i.jsx)(s.span,{className:"vlist",style:{height:"0.2861em"},children:(0,i.jsx)(s.span,{})})})]})})]})]})})]})," does not exceed ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsxs)(s.mrow,{children:[(0,i.jsx)(s.mi,{children:"ln"}),(0,i.jsx)(s.mo,{children:"\u2061"}),(0,i.jsx)(s.mo,{stretchy:"false",children:"("}),(0,i.jsx)(s.mi,{children:"N"}),(0,i.jsx)(s.mo,{stretchy:"false",children:")"}),(0,i.jsx)(s.mo,{children:"+"}),(0,i.jsx)(s.mi,{children:"C"})]}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"\\ln(N) + C"})]})})}),(0,i.jsxs)(s.span,{className:"katex-html","aria-hidden":"true",children:[(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,i.jsx)(s.span,{className:"mop",children:"ln"}),(0,i.jsx)(s.span,{className:"mopen",children:"("}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.10903em"},children:"N"}),(0,i.jsx)(s.span,{className:"mclose",children:")"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,i.jsx)(s.span,{className:"mbin",children:"+"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}})]}),(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.07153em"},children:"C"})]})]})]}),".\r\nEnforcing all the nodes to have approximately ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsxs)(s.mrow,{children:[(0,i.jsx)(s.mi,{children:"ln"}),(0,i.jsx)(s.mo,{children:"\u2061"}),(0,i.jsx)(s.mo,{stretchy:"false",children:"("}),(0,i.jsx)(s.mi,{children:"N"}),(0,i.jsx)(s.mo,{stretchy:"false",children:")"}),(0,i.jsx)(s.mo,{children:"+"}),(0,i.jsx)(s.mi,{children:"C"})]}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"\\ln(N) + C"})]})})}),(0,i.jsxs)(s.span,{className:"katex-html","aria-hidden":"true",children:[(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,i.jsx)(s.span,{className:"mop",children:"ln"}),(0,i.jsx)(s.span,{className:"mopen",children:"("}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.10903em"},children:"N"}),(0,i.jsx)(s.span,{className:"mclose",children:")"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,i.jsx)(s.span,{className:"mbin",children:"+"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}})]}),(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.07153em"},children:"C"})]})]})]})," peers makes resource-rich nodes under-utilized, while resource-constrained nodes are overloaded.\r\nAt the same time, connecting high-bandwidth nodes through a low-bandwidth node undermines the network's performance.\r\nIdeally, the workload on any node should not exceed its available resources.\r\nA better solution involves a two-phased operation:"]}),"\n",(0,i.jsxs)(s.ol,{children:["\n",(0,i.jsxs)(s.li,{children:["\n",(0,i.jsxs)(s.p,{children:["Every node computes its available bandwidth and selects a node degree ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsx)(s.mrow,{children:(0,i.jsx)(s.mi,{children:"D"})}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"D"})]})})}),(0,i.jsx)(s.span,{className:"katex-html","aria-hidden":"true",children:(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"})]})})]})," proportional to its available bandwidth [",(0,i.jsx)(s.a,{href:"https://inria.hal.science/tel-02375909/document",children:"4"}),"].\r\nDifferent bandwidth estimation approaches are suggested in literature [",(0,i.jsx)(s.a,{href:"https://ieeexplore.ieee.org/abstract/document/1224454",children:"5"}),",",(0,i.jsx)(s.a,{href:"https://ieeexplore.ieee.org/abstract/document/1248658",children:"6"}),"].\r\nSimple bandwidth estimation approaches like variable packet size probing [",(0,i.jsx)(s.a,{href:"https://ieeexplore.ieee.org/abstract/document/1248658",children:"6"}),"] yield similar results with less complexity.\r\nIt is also worth mentioning that many nodes may want to allocate only a capped share of their bandwidth to the network.\r\nLowering ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsx)(s.mrow,{children:(0,i.jsx)(s.mi,{children:"D"})}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"D"})]})})}),(0,i.jsx)(s.span,{className:"katex-html","aria-hidden":"true",children:(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"})]})})]})," according to the available bandwidth can still prove helpful.\r\nAdditionally, bandwidth preservation at the transport layer through approaches like \xb5TP can be useful.\r\nTo further conform to the suggested mesh-degree average ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsx)(s.mrow,{children:(0,i.jsxs)(s.msub,{children:[(0,i.jsx)(s.mi,{children:"D"}),(0,i.jsxs)(s.mrow,{children:[(0,i.jsx)(s.mi,{children:"a"}),(0,i.jsx)(s.mi,{children:"v"}),(0,i.jsx)(s.mi,{children:"g"})]})]})}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"D_{avg}"})]})})}),(0,i.jsx)(s.span,{className:"katex-html","aria-hidden":"true",children:(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.9694em",verticalAlign:"-0.2861em"}}),(0,i.jsxs)(s.span,{className:"mord",children:[(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"}),(0,i.jsx)(s.span,{className:"msupsub",children:(0,i.jsxs)(s.span,{className:"vlist-t vlist-t2",children:[(0,i.jsxs)(s.span,{className:"vlist-r",children:[(0,i.jsx)(s.span,{className:"vlist",style:{height:"0.1514em"},children:(0,i.jsxs)(s.span,{style:{top:"-2.55em",marginLeft:"-0.0278em",marginRight:"0.05em"},children:[(0,i.jsx)(s.span,{className:"pstrut",style:{height:"2.7em"}}),(0,i.jsx)(s.span,{className:"sizing reset-size6 size3 mtight",children:(0,i.jsxs)(s.span,{className:"mord mtight",children:[(0,i.jsx)(s.span,{className:"mord mathnormal mtight",children:"a"}),(0,i.jsx)(s.span,{className:"mord mathnormal mtight",style:{marginRight:"0.03588em"},children:"vg"})]})})]})}),(0,i.jsx)(s.span,{className:"vlist-s",children:"\u200b"})]}),(0,i.jsx)(s.span,{className:"vlist-r",children:(0,i.jsx)(s.span,{className:"vlist",style:{height:"0.2861em"},children:(0,i.jsx)(s.span,{})})})]})})]})]})})]}),", every node tries achieving this average within its neighborhood, resulting in an overall similar ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsx)(s.mrow,{children:(0,i.jsxs)(s.msub,{children:[(0,i.jsx)(s.mi,{children:"D"}),(0,i.jsxs)(s.mrow,{children:[(0,i.jsx)(s.mi,{children:"a"}),(0,i.jsx)(s.mi,{children:"v"}),(0,i.jsx)(s.mi,{children:"g"})]})]})}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"D_{avg}"})]})})}),(0,i.jsx)(s.span,{className:"katex-html","aria-hidden":"true",children:(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.9694em",verticalAlign:"-0.2861em"}}),(0,i.jsxs)(s.span,{className:"mord",children:[(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"}),(0,i.jsx)(s.span,{className:"msupsub",children:(0,i.jsxs)(s.span,{className:"vlist-t vlist-t2",children:[(0,i.jsxs)(s.span,{className:"vlist-r",children:[(0,i.jsx)(s.span,{className:"vlist",style:{height:"0.1514em"},children:(0,i.jsxs)(s.span,{style:{top:"-2.55em",marginLeft:"-0.0278em",marginRight:"0.05em"},children:[(0,i.jsx)(s.span,{className:"pstrut",style:{height:"2.7em"}}),(0,i.jsx)(s.span,{className:"sizing reset-size6 size3 mtight",children:(0,i.jsxs)(s.span,{className:"mord mtight",children:[(0,i.jsx)(s.span,{className:"mord mathnormal mtight",children:"a"}),(0,i.jsx)(s.span,{className:"mord mathnormal mtight",style:{marginRight:"0.03588em"},children:"vg"})]})})]})}),(0,i.jsx)(s.span,{className:"vlist-s",children:"\u200b"})]}),(0,i.jsx)(s.span,{className:"vlist-r",children:(0,i.jsx)(s.span,{className:"vlist",style:{height:"0.2861em"},children:(0,i.jsx)(s.span,{})})})]})})]})]})})]}),"."]}),"\n"]}),"\n",(0,i.jsxs)(s.li,{children:["\n",(0,i.jsxs)(s.p,{children:["From the available local view, every node tries connecting peers with the lowest latency until ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsx)(s.mrow,{children:(0,i.jsx)(s.mi,{children:"D"})}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"D"})]})})}),(0,i.jsx)(s.span,{className:"katex-html","aria-hidden":"true",children:(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"})]})})]})," connections are made.\r\nWe suggest referring to the peering solution discussed in GOAL5 to avoid network partitioning."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(s.p,{children:["The current GossipSub design considers homogeneous peers, and every node tries maintaining ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsxs)(s.mrow,{children:[(0,i.jsxs)(s.msub,{children:[(0,i.jsx)(s.mi,{children:"D"}),(0,i.jsxs)(s.mrow,{children:[(0,i.jsx)(s.mi,{children:"L"}),(0,i.jsx)(s.mi,{children:"o"}),(0,i.jsx)(s.mi,{children:"w"})]})]}),(0,i.jsx)(s.mo,{children:"\u2264"}),(0,i.jsx)(s.mi,{children:"D"}),(0,i.jsx)(s.mo,{children:"\u2264"}),(0,i.jsxs)(s.msub,{children:[(0,i.jsx)(s.mi,{children:"D"}),(0,i.jsxs)(s.mrow,{children:[(0,i.jsx)(s.mi,{children:"H"}),(0,i.jsx)(s.mi,{children:"i"}),(0,i.jsx)(s.mi,{children:"g"}),(0,i.jsx)(s.mi,{children:"h"})]})]})]}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"D_{Low} \\leq D \\leq D_{High}"})]})})}),(0,i.jsxs)(s.span,{className:"katex-html","aria-hidden":"true",children:[(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.8333em",verticalAlign:"-0.15em"}}),(0,i.jsxs)(s.span,{className:"mord",children:[(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"}),(0,i.jsx)(s.span,{className:"msupsub",children:(0,i.jsxs)(s.span,{className:"vlist-t vlist-t2",children:[(0,i.jsxs)(s.span,{className:"vlist-r",children:[(0,i.jsx)(s.span,{className:"vlist",style:{height:"0.3283em"},children:(0,i.jsxs)(s.span,{style:{top:"-2.55em",marginLeft:"-0.0278em",marginRight:"0.05em"},children:[(0,i.jsx)(s.span,{className:"pstrut",style:{height:"2.7em"}}),(0,i.jsx)(s.span,{className:"sizing reset-size6 size3 mtight",children:(0,i.jsxs)(s.span,{className:"mord mtight",children:[(0,i.jsx)(s.span,{className:"mord mathnormal mtight",children:"L"}),(0,i.jsx)(s.span,{className:"mord mathnormal mtight",children:"o"}),(0,i.jsx)(s.span,{className:"mord mathnormal mtight",style:{marginRight:"0.02691em"},children:"w"})]})})]})}),(0,i.jsx)(s.span,{className:"vlist-s",children:"\u200b"})]}),(0,i.jsx)(s.span,{className:"vlist-r",children:(0,i.jsx)(s.span,{className:"vlist",style:{height:"0.15em"},children:(0,i.jsx)(s.span,{})})})]})})]}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2778em"}}),(0,i.jsx)(s.span,{className:"mrel",children:"\u2264"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2778em"}})]}),(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.8193em",verticalAlign:"-0.136em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2778em"}}),(0,i.jsx)(s.span,{className:"mrel",children:"\u2264"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2778em"}})]}),(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.9694em",verticalAlign:"-0.2861em"}}),(0,i.jsxs)(s.span,{className:"mord",children:[(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"}),(0,i.jsx)(s.span,{className:"msupsub",children:(0,i.jsxs)(s.span,{className:"vlist-t vlist-t2",children:[(0,i.jsxs)(s.span,{className:"vlist-r",children:[(0,i.jsx)(s.span,{className:"vlist",style:{height:"0.3361em"},children:(0,i.jsxs)(s.span,{style:{top:"-2.55em",marginLeft:"-0.0278em",marginRight:"0.05em"},children:[(0,i.jsx)(s.span,{className:"pstrut",style:{height:"2.7em"}}),(0,i.jsx)(s.span,{className:"sizing reset-size6 size3 mtight",children:(0,i.jsxs)(s.span,{className:"mord mtight",children:[(0,i.jsx)(s.span,{className:"mord mathnormal mtight",style:{marginRight:"0.08125em"},children:"H"}),(0,i.jsx)(s.span,{className:"mord mathnormal mtight",children:"i"}),(0,i.jsx)(s.span,{className:"mord mathnormal mtight",style:{marginRight:"0.03588em"},children:"g"}),(0,i.jsx)(s.span,{className:"mord mathnormal mtight",children:"h"})]})})]})}),(0,i.jsx)(s.span,{className:"vlist-s",children:"\u200b"})]}),(0,i.jsx)(s.span,{className:"vlist-r",children:(0,i.jsx)(s.span,{className:"vlist",style:{height:"0.2861em"},children:(0,i.jsx)(s.span,{})})})]})})]})]})]})]})," connections."]}),"\n",(0,i.jsx)(s.h2,{id:"goal3-bandwidth-optimization",children:"GOAL3: Bandwidth Optimization"}),"\n",(0,i.jsx)(s.p,{children:"Redundant message transmissions are essential for handling adversaries/node failure. However, these transmissions result in traffic bursts, cramming many overlay links.\r\nThis not only adds to the network-wide message dissemination latency but a significant share of the network's bandwidth is wasted on (usually) unnecessary transmissions.\r\nIt is essential to explore solutions that can minimize the number of redundant transmissions while assuring resilience against node failures."}),"\n",(0,i.jsxs)(s.p,{children:["Many efforts have been made to minimize the impact of redundant transmissions.\r\nThese solutions include multicast delivery trees, metadata sharing to enable pull-based operation, in-network information caching, etc. [",(0,i.jsx)(s.a,{href:"https://dl.acm.org/doi/abs/10.1145/945445.945473",children:"7"}),",",(0,i.jsx)(s.a,{href:"https://link.springer.com/chapter/10.1007/11558989_12",children:"8"}),"].\r\nGossipSub employs a hybrid of eager push (message dissemination through the overlay) and lazy push (a pull-based operation by the nodes requiring information through IWANT messages)."]}),"\n",(0,i.jsxs)(s.p,{children:["A better alternative to simple redundant transmission is to use message aggregation [",(0,i.jsx)(s.a,{href:"https://ieeexplore.ieee.org/abstract/document/8737576",children:"9"}),",",(0,i.jsx)(s.a,{href:"https://dl.acm.org/doi/abs/10.1145/1993636.1993676",children:"10"}),",",(0,i.jsx)(s.a,{href:"https://ieeexplore.ieee.org/abstract/document/4276446",children:"11"}),"] for the GossipSub protocol.\r\nAs a result, redundant message transmissions can serve as a critical advantage of the GossipSub protocol.\r\nSuppose that we have three equal-length messages ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsxs)(s.mrow,{children:[(0,i.jsx)(s.mi,{children:"x"}),(0,i.jsx)(s.mn,{children:"1"}),(0,i.jsx)(s.mo,{separator:"true",children:","}),(0,i.jsx)(s.mi,{children:"x"}),(0,i.jsx)(s.mn,{children:"2"}),(0,i.jsx)(s.mo,{separator:"true",children:","}),(0,i.jsx)(s.mi,{children:"x"}),(0,i.jsx)(s.mn,{children:"3"})]}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"x1, x2, x3"})]})})}),(0,i.jsx)(s.span,{className:"katex-html","aria-hidden":"true",children:(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.8389em",verticalAlign:"-0.1944em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",children:"x"}),(0,i.jsx)(s.span,{className:"mord",children:"1"}),(0,i.jsx)(s.span,{className:"mpunct",children:","}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.1667em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",children:"x"}),(0,i.jsx)(s.span,{className:"mord",children:"2"}),(0,i.jsx)(s.span,{className:"mpunct",children:","}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.1667em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",children:"x"}),(0,i.jsx)(s.span,{className:"mord",children:"3"})]})})]}),". Assuming an XOR coding function,\r\nwe know two trivial properties: ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsxs)(s.mrow,{children:[(0,i.jsx)(s.mi,{children:"x"}),(0,i.jsx)(s.mn,{children:"1"}),(0,i.jsx)(s.mo,{children:"\u2295"}),(0,i.jsx)(s.mi,{children:"x"}),(0,i.jsx)(s.mn,{children:"2"}),(0,i.jsx)(s.mo,{children:"\u2295"}),(0,i.jsx)(s.mi,{children:"x"}),(0,i.jsx)(s.mn,{children:"2"}),(0,i.jsx)(s.mo,{children:"="}),(0,i.jsx)(s.mi,{children:"x"}),(0,i.jsx)(s.mn,{children:"1"})]}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"x1 \\oplus x2 \\oplus x2 = x1"})]})})}),(0,i.jsxs)(s.span,{className:"katex-html","aria-hidden":"true",children:[(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.7278em",verticalAlign:"-0.0833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",children:"x"}),(0,i.jsx)(s.span,{className:"mord",children:"1"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,i.jsx)(s.span,{className:"mbin",children:"\u2295"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}})]}),(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.7278em",verticalAlign:"-0.0833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",children:"x"}),(0,i.jsx)(s.span,{className:"mord",children:"2"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,i.jsx)(s.span,{className:"mbin",children:"\u2295"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}})]}),(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6444em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",children:"x"}),(0,i.jsx)(s.span,{className:"mord",children:"2"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2778em"}}),(0,i.jsx)(s.span,{className:"mrel",children:"="}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2778em"}})]}),(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6444em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",children:"x"}),(0,i.jsx)(s.span,{className:"mord",children:"1"})]})]})]})," and ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsxs)(s.mrow,{children:[(0,i.jsx)(s.mi,{mathvariant:"normal",children:"\u2223"}),(0,i.jsx)(s.mi,{children:"x"}),(0,i.jsx)(s.mn,{children:"1"}),(0,i.jsx)(s.mi,{mathvariant:"normal",children:"\u2223"}),(0,i.jsx)(s.mo,{children:"="}),(0,i.jsx)(s.mi,{mathvariant:"normal",children:"\u2223"}),(0,i.jsx)(s.mi,{children:"x"}),(0,i.jsx)(s.mn,{children:"1"}),(0,i.jsx)(s.mo,{children:"\u2295"}),(0,i.jsx)(s.mi,{children:"x"}),(0,i.jsx)(s.mn,{children:"2"}),(0,i.jsx)(s.mo,{children:"\u2295"}),(0,i.jsx)(s.mi,{children:"x"}),(0,i.jsx)(s.mn,{children:"2"}),(0,i.jsx)(s.mi,{mathvariant:"normal",children:"\u2223"})]}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"\\vert x1 \\vert = \\vert x1 \\oplus x2 \\oplus x2 \\vert"})]})})}),(0,i.jsxs)(s.span,{className:"katex-html","aria-hidden":"true",children:[(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,i.jsx)(s.span,{className:"mord",children:"\u2223"}),(0,i.jsx)(s.span,{className:"mord mathnormal",children:"x"}),(0,i.jsx)(s.span,{className:"mord",children:"1\u2223"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2778em"}}),(0,i.jsx)(s.span,{className:"mrel",children:"="}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2778em"}})]}),(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,i.jsx)(s.span,{className:"mord",children:"\u2223"}),(0,i.jsx)(s.span,{className:"mord mathnormal",children:"x"}),(0,i.jsx)(s.span,{className:"mord",children:"1"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,i.jsx)(s.span,{className:"mbin",children:"\u2295"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}})]}),(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.7278em",verticalAlign:"-0.0833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",children:"x"}),(0,i.jsx)(s.span,{className:"mord",children:"2"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,i.jsx)(s.span,{className:"mbin",children:"\u2295"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}})]}),(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",children:"x"}),(0,i.jsx)(s.span,{className:"mord",children:"2\u2223"})]})]})]}),"."]}),"\n",(0,i.jsx)(s.p,{children:"This implies that instead of sending messages individually, we can encode and transmit composite message(s) to the network.\r\nThe receiver can reconstruct the original message from encoded segments.\r\nAs a result, fewer transmissions are sufficient for sending more messages to the network."}),"\n",(0,i.jsx)(s.p,{children:"However, sharing linear combinations of messages requires organizing messages in intervals,\r\nand devising techniques to identify all messages belonging to each interval.\r\nIn addition, combining messages from different publishers requires more complex arrangements,\r\ninvolving embedding publisher/message IDs, delayed forwarding (to accommodate more messages), and mechanisms to ensure the decoding of messages at all peers.\r\nCareful application-specific need analysis can help decide the benefits against the added complexity."}),"\n",(0,i.jsx)(s.h2,{id:"goal4-handling-large-messages",children:"GOAL4: Handling Large Messages"}),"\n",(0,i.jsxs)(s.p,{children:["Many applications require transferring large messages for their successful operation. For instance, database/blockchain transactions [",(0,i.jsx)(s.a,{href:"https://eips.ethereum.org/EIPS/eip-4844",children:"12"}),"].\r\nThis introduces two challenges:"]}),"\n",(0,i.jsxs)(s.ol,{children:["\n",(0,i.jsx)(s.li,{children:"Redundant large message transmissions result in severe network congestion."}),"\n",(0,i.jsx)(s.li,{children:"Message transmissions follow a store/forward process at all peers, which is inefficient in the case of large messages."}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"The above-mentioned challenges result in a noticeable increase in message dissemination latency and bandwidth wastage.\r\nMost of the work done for handling large messages involves curtailing redundant transmissions using multicast delivery trees,\r\nreducing the number of fanout nodes, employing in-network message caching, pull-based operation, etc."}),"\n",(0,i.jsx)(s.p,{children:"Approaches like message aggregation also prove helpful in minimizing bandwidth wastage."}),"\n",(0,i.jsx)(s.p,{children:"Our recent work on GossipSub improvements (still a work in progress) suggests the following solutions to deal with large message transmissions:"}),"\n",(0,i.jsxs)(s.ol,{children:["\n",(0,i.jsxs)(s.li,{children:["\n",(0,i.jsxs)(s.p,{children:["Using IDontWant message proposal [",(0,i.jsx)(s.a,{href:"https://github.com/libp2p/specs/pull/413",children:"13"}),"] and staggered sending."]}),"\n",(0,i.jsx)(s.p,{children:"IDontWant message helps curtail redundant transmissions by letting other peers know we have already received the message.\r\nStaggered sending enables relaying the message to a short subset of peers in each round.\r\nWe argue that simultaneously relaying a message to all peers hampers the effectiveness of the IDontWant message.\r\nTherefore, using the IDontWant message with staggered sending can yield better results by allowing timely reception and processing of IDontWant messages."}),"\n"]}),"\n",(0,i.jsxs)(s.li,{children:["\n",(0,i.jsx)(s.p,{children:"Message transmissions follow a store/forward process at all peers that is inefficient in the case of large messages.\r\nWe can parallelize message transmission by partitioning large messages into smaller fragments, letting intermediate peers relay these fragments as soon as they receive them."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(s.h2,{id:"goal5-scalability",children:"GOAL5: Scalability"}),"\n",(0,i.jsxs)(s.p,{children:["P2P networks are inherently scalable because every incoming node brings in bandwidth and compute resources.\r\nIn other words, we can keep adding nodes to the network as long as every incoming node brings at-least ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsxs)(s.mrow,{children:[(0,i.jsx)(s.mi,{children:"R"}),(0,i.jsx)(s.mo,{children:"\xd7"}),(0,i.jsx)(s.mi,{children:"D"})]}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"R \\times D"})]})})}),(0,i.jsxs)(s.span,{className:"katex-html","aria-hidden":"true",children:[(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.7667em",verticalAlign:"-0.0833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.00773em"},children:"R"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}}),(0,i.jsx)(s.span,{className:"mbin",children:"\xd7"}),(0,i.jsx)(s.span,{className:"mspace",style:{marginRight:"0.2222em"}})]}),(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"})]})]})]})," bandwidth,\r\nwhere ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsx)(s.mrow,{children:(0,i.jsx)(s.mi,{children:"R"})}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"R"})]})})}),(0,i.jsx)(s.span,{className:"katex-html","aria-hidden":"true",children:(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.00773em"},children:"R"})]})})]})," is average data arrival rate.\r\nIt is worth mentioning that network-wide message dissemination requires at-least ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsxs)(s.mrow,{children:[(0,i.jsx)(s.mo,{stretchy:"false",children:"\u2308"}),(0,i.jsxs)(s.msub,{children:[(0,i.jsxs)(s.mrow,{children:[(0,i.jsx)(s.mi,{children:"log"}),(0,i.jsx)(s.mo,{children:"\u2061"})]}),(0,i.jsx)(s.mi,{children:"D"})]}),(0,i.jsx)(s.mo,{stretchy:"false",children:"("}),(0,i.jsx)(s.mi,{children:"N"}),(0,i.jsx)(s.mo,{stretchy:"false",children:")"}),(0,i.jsx)(s.mo,{stretchy:"false",children:"\u2309"})]}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"\\lceil \\log_D (N) \\rceil"})]})})}),(0,i.jsx)(s.span,{className:"katex-html","aria-hidden":"true",children:(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,i.jsx)(s.span,{className:"mopen",children:"\u2308"}),(0,i.jsxs)(s.span,{className:"mop",children:[(0,i.jsxs)(s.span,{className:"mop",children:["lo",(0,i.jsx)(s.span,{style:{marginRight:"0.01389em"},children:"g"})]}),(0,i.jsx)(s.span,{className:"msupsub",children:(0,i.jsxs)(s.span,{className:"vlist-t vlist-t2",children:[(0,i.jsxs)(s.span,{className:"vlist-r",children:[(0,i.jsx)(s.span,{className:"vlist",style:{height:"0.2342em"},children:(0,i.jsxs)(s.span,{style:{top:"-2.4559em",marginRight:"0.05em"},children:[(0,i.jsx)(s.span,{className:"pstrut",style:{height:"2.7em"}}),(0,i.jsx)(s.span,{className:"sizing reset-size6 size3 mtight",children:(0,i.jsx)(s.span,{className:"mord mathnormal mtight",style:{marginRight:"0.02778em"},children:"D"})})]})}),(0,i.jsx)(s.span,{className:"vlist-s",children:"\u200b"})]}),(0,i.jsx)(s.span,{className:"vlist-r",children:(0,i.jsx)(s.span,{className:"vlist",style:{height:"0.2441em"},children:(0,i.jsx)(s.span,{})})})]})})]}),(0,i.jsx)(s.span,{className:"mopen",children:"("}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.10903em"},children:"N"}),(0,i.jsx)(s.span,{className:"mclose",children:")\u2309"})]})})]})," hops.\r\nTherefore, increasing network size increases message dissemination latency, assuming D is independent of the network size."]}),"\n",(0,i.jsx)(s.p,{children:"Additionally, problems like peer churn, adversaries, heterogeneity, distributed operation, etc., significantly hamper the network's performance.\r\nMost efforts for bringing scalability to the P2P systems have focused on curtailing redundant transmissions and flat overlay adjustments.\r\nHierarchical overlay designs, on the other hand, are less explored."}),"\n",(0,i.jsx)(s.p,{children:"Placing a logical structure in unstructured P2P systems can help scale P2P networks."}),"\n",(0,i.jsxs)(s.p,{children:["One possible solution is to use a hierarchical overlay inspired by the approaches [",(0,i.jsx)(s.a,{href:"https://link.springer.com/article/10.1007/s12083-016-0460-5",children:"14"}),",",(0,i.jsx)(s.a,{href:"https://link.springer.com/chapter/10.1007/978-3-030-19223-5_16",children:"15"}),",",(0,i.jsx)(s.a,{href:"https://ieeexplore.ieee.org/abstract/document/9826458",children:"16"}),"].\r\nAn abstract operation of such overlay design is provided below:"]}),"\n",(0,i.jsxs)(s.ol,{children:["\n",(0,i.jsxs)(s.li,{children:["\n",(0,i.jsxs)(s.p,{children:["Clustering nodes based on locality, assuming that such peers will have relatively lower intra-cluster latency and higher bandwidth.\r\nFor this purpose, every node tries connecting peers with the lowest latency until ",(0,i.jsxs)(s.span,{className:"katex",children:[(0,i.jsx)(s.span,{className:"katex-mathml",children:(0,i.jsx)(s.math,{xmlns:"http://www.w3.org/1998/Math/MathML",children:(0,i.jsxs)(s.semantics,{children:[(0,i.jsx)(s.mrow,{children:(0,i.jsx)(s.mi,{children:"D"})}),(0,i.jsx)(s.annotation,{encoding:"application/x-tex",children:"D"})]})})}),(0,i.jsx)(s.span,{className:"katex-html","aria-hidden":"true",children:(0,i.jsxs)(s.span,{className:"base",children:[(0,i.jsx)(s.span,{className:"strut",style:{height:"0.6833em"}}),(0,i.jsx)(s.span,{className:"mord mathnormal",style:{marginRight:"0.02778em"},children:"D"})]})})]})," connections are made or the cluster limit is reached."]}),"\n"]}),"\n",(0,i.jsxs)(s.li,{children:["\n",(0,i.jsx)(s.p,{children:"A small subset of nodes having the highest bandwidth and compute resources is selected from each cluster.\r\nThese super nodes form a fully connected mesh and jointly act as a virtual node,\r\nmitigating the problem of peer churn among super nodes."}),"\n"]}),"\n",(0,i.jsxs)(s.li,{children:["\n",(0,i.jsx)(s.p,{children:"Virtual nodes form a fully connected mesh to construct a hierarchical overlay.\r\nEach virtual node is essentially a collection of super nodes;\r\na link to any of the constituent super nodes represents a link to the virtual node."}),"\n"]}),"\n",(0,i.jsxs)(s.li,{children:["\n",(0,i.jsx)(s.p,{children:"One possible idea is to use GossipSub for intra-cluster message dissemination and FloodSub for inter-cluster message dissemination."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(s.h2,{id:"summary",children:"Summary"}),"\n",(0,i.jsx)(s.p,{children:"Overlay acts as a virtual backbone for a P2P network. A flat overlay is more straightforward and allows effortless readjustment to application needs.\r\nOn the other hand, a hierarchical overlay can bring scalability at the cost of increased complexity.\r\nRegardless of the overlay design, a continuous readjustment to appropriate peering links is essential for superior performance.\r\nAt the same time, bandwidth preservation (through message aggregation, caching at strategic locations, metadata sharing, pull-based operation, etc.) can help minimize latency.\r\nHowever, problems like peer churn and in-network adversaries can be best alleviated through balanced redundant coverage, and frequent reshuffling of the peering links."}),"\n",(0,i.jsx)(s.h1,{id:"references",children:"References"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:["[1] D. Vyzovitis, Y. Napora, D. McCormick, D. Dias, and Y. Psaras, \u201cGossipsub: Attack-resilient message propagation in the filecoin and eth2. 0 networks,\u201d arXiv preprint arXiv:2007.02754, 2020. Retrieved from ",(0,i.jsx)(s.a,{href:"https://arxiv.org/pdf/2007.02754.pdf",children:"https://arxiv.org/pdf/2007.02754.pdf"})]}),"\n",(0,i.jsxs)(s.li,{children:["[2] M. Matos, V. Schiavoni, P. Felber, R. Oliveira, and E. Riviere, \u201cBrisa: Combining efficiency and reliability in epidemic data dissemination,\u201d in 2012 IEEE 26th International Parallel and Distributed Processing Symposium. IEEE, 2012, pp. 983\u2013994. Retrieved from ",(0,i.jsx)(s.a,{href:"https://ieeexplore.ieee.org/abstract/document/6267905",children:"https://ieeexplore.ieee.org/abstract/document/6267905"})]}),"\n",(0,i.jsxs)(s.li,{children:["[3] P. T. Eugster, R. Guerraoui, A. M. Kermarrec, and L. Massouli, \u201cEpidemic information dissemination in distributed systems,\u201d IEEE Computer, vol. 37, no. 5, 2004. Retrieved from ",(0,i.jsx)(s.a,{href:"https://infoscience.epfl.ch/record/83478/files/EugGueKerMas04IEEEComp.pdf",children:"https://infoscience.epfl.ch/record/83478/files/EugGueKerMas04IEEEComp.pdf"})]}),"\n",(0,i.jsxs)(s.li,{children:["[4] D. Frey, \u201cEpidemic protocols: From large scale to big data,\u201d Ph.D. dissertation, Universite De Rennes 1, 2019. Retrieved from ",(0,i.jsx)(s.a,{href:"https://inria.hal.science/tel-02375909/document",children:"https://inria.hal.science/tel-02375909/document"})]}),"\n",(0,i.jsxs)(s.li,{children:["[5] M. Jain and C. Dovrolis, \u201cEnd-to-end available bandwidth: measurement methodology, dynamics, and relation with tcp throughput,\u201d IEEE/ACM Transactions on networking, vol. 11, no. 4, pp. 537\u2013549, 2003. Retrieved from ",(0,i.jsx)(s.a,{href:"https://ieeexplore.ieee.org/abstract/document/1224454",children:"https://ieeexplore.ieee.org/abstract/document/1224454"})]}),"\n",(0,i.jsxs)(s.li,{children:["[6] R. Prasad, C. Dovrolis, M. Murray, and K. Claffy, \u201cBandwidth estimation: metrics, measurement techniques, and tools,\u201d IEEE network, vol. 17, no. 6, pp. 27\u201335, 2003. Retrieved from ",(0,i.jsx)(s.a,{href:"https://ieeexplore.ieee.org/abstract/document/1248658",children:"https://ieeexplore.ieee.org/abstract/document/1248658"})]}),"\n",(0,i.jsxs)(s.li,{children:["[7] D. Kostic, A. Rodriguez, J. Albrecht, and A. Vahdat, \u201cBullet: High bandwidth data dissemination using an overlay mesh,\u201d in Proceedings of the nineteenth ACM symposium on Operating systems principles, 2003, pp. 282\u2013297. Retrieved from ",(0,i.jsx)(s.a,{href:"https://dl.acm.org/doi/abs/10.1145/945445.945473",children:"https://dl.acm.org/doi/abs/10.1145/945445.945473"})]}),"\n",(0,i.jsxs)(s.li,{children:["[8] V. Pai, K. Kumar, K. Tamilmani, V. Sambamurthy, and A. E. Mohr, \u201cChainsaw: Eliminating trees from overlay multicast,\u201d in Peer-to-Peer Systems IV: 4th International Workshop, IPTPS 2005, Ithaca, NY, USA, February 24-25, 2005. Revised Selected Papers 4. Springer, 2005, pp. 127\u2013140. Retrieved from ",(0,i.jsx)(s.a,{href:"https://link.springer.com/chapter/10.1007/11558989_12",children:"https://link.springer.com/chapter/10.1007/11558989_12"})]}),"\n",(0,i.jsxs)(s.li,{children:["[9] Y.-D. Bromberg, Q. Dufour, and D. Frey, \u201cMultisource rumor spreading with network coding,\u201d in IEEE INFOCOM 2019-IEEE Conference on Computer Communications. IEEE, 2019, pp. 2359\u20132367. Retrieved from ",(0,i.jsx)(s.a,{href:"https://ieeexplore.ieee.org/abstract/document/8737576",children:"https://ieeexplore.ieee.org/abstract/document/8737576"})]}),"\n",(0,i.jsxs)(s.li,{children:["[10] B. Haeupler, \u201cAnalyzing network coding gossip made easy,\u201d in Proceedings of the forty-third annual ACM symposium on Theory of computing, 2011, pp. 293\u2013302. Retrieved from ",(0,i.jsx)(s.a,{href:"https://dl.acm.org/doi/abs/10.1145/1993636.1993676",children:"https://dl.acm.org/doi/abs/10.1145/1993636.1993676"})]}),"\n",(0,i.jsxs)(s.li,{children:["[11] S. Yu and Z. Li, \u201cMassive data delivery in unstructured peer-to-peer networks with network coding,\u201d in 6th IEEE/ACIS International Conference on Computer and Information Science (ICIS 2007). IEEE, 2007, pp. 592\u2013597. Retrieved from ",(0,i.jsx)(s.a,{href:"https://ieeexplore.ieee.org/abstract/document/4276446",children:"https://ieeexplore.ieee.org/abstract/document/4276446"})]}),"\n",(0,i.jsxs)(s.li,{children:["[12] V. Buterin, D. Feist, D. Loerakker, G. Kadianakis, M. Garnett, M. Taiwo, and A. Dietrichs, \u201cEip-4844: Shard blob transactions scale data-availability of ethereum in a simple, forwards-compatible manner,\u201d 2022. Retrieved from ",(0,i.jsx)(s.a,{href:"https://eips.ethereum.org/EIPS/eip-4844",children:"https://eips.ethereum.org/EIPS/eip-4844"})]}),"\n",(0,i.jsxs)(s.li,{children:["[13] A. Manning, \u201cGossipsub extension for epidemic meshes (v1.2.0),\u201d 2022. Retrieved from ",(0,i.jsx)(s.a,{href:"https://github.com/libp2p/specs/pull/413",children:"https://github.com/libp2p/specs/pull/413"})]}),"\n",(0,i.jsxs)(s.li,{children:["[14] Z. Duan, C. Tian, M. Zhou, X. Wang, N. Zhang, H. Du, and L. Wang, \u201cTwo-layer hybrid peer-to-peer networks,\u201d Peer-to-Peer Networking and Applications, vol. 10, pp. 1304\u20131322, 2017. Retrieved from ",(0,i.jsx)(s.a,{href:"https://link.springer.com/article/10.1007/s12083-016-0460-5",children:"https://link.springer.com/article/10.1007/s12083-016-0460-5"})]}),"\n",(0,i.jsxs)(s.li,{children:["[15] W. Hao, J. Zeng, X. Dai, J. Xiao, Q. Hua, H. Chen, K.-C. Li, and H. Jin, \u201cBlockp2p: Enabling fast blockchain broadcast with scalable peer-to-peer network topology,\u201d in Green, Pervasive, and Cloud Computing: 14th International Conference, GPC 2019, Uberlandia, Brazil, May 26\u201328, 2019, Proceedings 14. Springer, 2019, pp. 223\u2013237. Retrieved from ",(0,i.jsx)(s.a,{href:"https://link.springer.com/chapter/10.1007/978-3-030-19223-5_16",children:"https://link.springer.com/chapter/10.1007/978-3-030-19223-5_16"})]}),"\n",(0,i.jsxs)(s.li,{children:["[16] H. Qiu, T. Ji, S. Zhao, X. Chen, J. Qi, H. Cui, and S. Wang, \u201cA geography-based p2p overlay network for fast and robust blockchain systems,\u201d IEEE Transactions on Services Computing, 2022. Retrieved from ",(0,i.jsx)(s.a,{href:"https://ieeexplore.ieee.org/abstract/document/9826458",children:"https://ieeexplore.ieee.org/abstract/document/9826458"})]}),"\n"]})]})}function o(e={}){const{wrapper:s}={...(0,t.R)(),...e.components};return s?(0,i.jsx)(s,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}}}]); |