From 2ef3d5b1a96c809ee72e7e89af45788eea25e372 Mon Sep 17 00:00:00 2001 From: KotaHemanthIITD <4825491-KotaHemanthIITD@users.noreply.gitlab.com> Date: Mon, 5 Apr 2021 11:09:34 +0530 Subject: [PATCH 01/14] transport close fix --- .../include/marlin/stream/StreamTransport.hpp | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/stream/include/marlin/stream/StreamTransport.hpp b/stream/include/marlin/stream/StreamTransport.hpp index 24f70639..c011aa38 100644 --- a/stream/include/marlin/stream/StreamTransport.hpp +++ b/stream/include/marlin/stream/StreamTransport.hpp @@ -1416,7 +1416,7 @@ void StreamTransport::did_recv_ACK( ) { uint64_t range = *iter; - uint64_t low = high - range; + int low = high - range; // Short circuit on gap range if(gap) { @@ -1480,6 +1480,10 @@ void StreamTransport::did_recv_ACK( *this, std::move(iter->data) ); + + if(stream.data_queue.size() == 0) + break; + } if(fully_acked) { @@ -1529,6 +1533,10 @@ void StreamTransport::did_recv_ACK( return; } + + if (sent_packets.size() == 0) + break; + } high = low; @@ -2124,6 +2132,9 @@ int StreamTransport::send( template class DatagramTransport> void StreamTransport::close(uint16_t reason) { + if( !is_active() ) + return; + // Preserve conn ids so retries work auto src_conn_id = this->src_conn_id; auto dst_conn_id = this->dst_conn_id; @@ -2142,6 +2153,9 @@ void StreamTransport::close(uint16_t reason) { template class DatagramTransport> void StreamTransport::close_timer_cb() { + if ( !is_active() ) + return; + if(state_timer_interval >= 8000) { // Abort on too many retries SPDLOG_DEBUG( "Stream transport {{ Src: {}, Dst: {} }}: Close timeout", @@ -2175,6 +2189,8 @@ double StreamTransport::get_rtt() { template class DatagramTransport> void StreamTransport::skip_timer_cb(RecvStream& stream) { + if ( !is_active() ) + return; if(stream.state_timer_interval >= 64000) { // Abort on too many retries stream.state_timer_interval = 0; SPDLOG_DEBUG( @@ -2227,6 +2243,8 @@ void StreamTransport::skip_stream( template class DatagramTransport> void StreamTransport::flush_timer_cb(SendStream& stream) { + if ( !is_active() ) + return; if(stream.state_timer_interval >= 64000) { // Abort on too many retries stream.state_timer_interval = 0; SPDLOG_DEBUG( From 146366ce2574c450efbcbc3f486c3737f931750e Mon Sep 17 00:00:00 2001 From: KotaHemanthIITD <4825491-KotaHemanthIITD@users.noreply.gitlab.com> Date: Mon, 5 Apr 2021 11:13:23 +0530 Subject: [PATCH 02/14] transport simulator fix --- .../include/marlin/simulator/transport/SimulatedTransport.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/simulator/include/marlin/simulator/transport/SimulatedTransport.hpp b/simulator/include/marlin/simulator/transport/SimulatedTransport.hpp index 4c3b2c0a..9b2605a8 100644 --- a/simulator/include/marlin/simulator/transport/SimulatedTransport.hpp +++ b/simulator/include/marlin/simulator/transport/SimulatedTransport.hpp @@ -116,7 +116,8 @@ void SimulatedTransport< NetworkInterfaceType, DelegateType >::close(uint16_t reason) { - delegate->did_close(*this, reason); + + delegate->close(reason); transport_manager.erase(dst_addr); } From bbba090ea5b8688a245e32a1781acb07ae661300 Mon Sep 17 00:00:00 2001 From: KotaHemanthIITD <4825491-KotaHemanthIITD@users.noreply.gitlab.com> Date: Mon, 5 Apr 2021 12:17:31 +0530 Subject: [PATCH 03/14] example build fix --- simulator/examples/transport.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/simulator/examples/transport.cpp b/simulator/examples/transport.cpp index d1d4c60f..057bd58b 100644 --- a/simulator/examples/transport.cpp +++ b/simulator/examples/transport.cpp @@ -51,6 +51,10 @@ struct Delegate { SPDLOG_INFO("Did close"); } + void close(uint16_t reason){ + SPDLOG_INFO("Close {}", reason); + } + bool should_accept(SocketAddress const&) { return true; } From caf7c60475a0d9466281a0be9be5c9f63cd4a0b0 Mon Sep 17 00:00:00 2001 From: KotaHemanthIITD <4825491-KotaHemanthIITD@users.noreply.gitlab.com> Date: Wed, 7 Apr 2021 10:41:40 +0530 Subject: [PATCH 04/14] rewrite --- CMakeLists.txt | 1 + simulator/examples/transport.cpp | 14 +-- .../transport/SimulatedTransport.hpp | 3 +- stream/CMakeLists.txt | 3 + stream/examples/.stream_simulated.cpp.swp | Bin 0 -> 20480 bytes stream/examples/stream_simulated.cpp | 25 +++-- stream/include/marlin/stream/Messages.hpp | 2 +- .../include/marlin/stream/StreamTransport.hpp | 23 ++++- .../stream/protocol/.RecvStream.hpp.swp | Bin 0 -> 12288 bytes .../stream/protocol/.SendStream.hpp.swp | Bin 0 -> 12288 bytes utils/CMakeLists.txt | 87 ++++++++++++++++++ utils/include/marlin/utils/logs.hpp | 12 +++ 12 files changed, 144 insertions(+), 26 deletions(-) create mode 100644 stream/examples/.stream_simulated.cpp.swp create mode 100644 stream/include/marlin/stream/protocol/.RecvStream.hpp.swp create mode 100644 stream/include/marlin/stream/protocol/.SendStream.hpp.swp create mode 100644 utils/CMakeLists.txt create mode 100644 utils/include/marlin/utils/logs.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 2abb0192..a66937aa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -48,3 +48,4 @@ add_subdirectory(rlpx) add_subdirectory(integrations/eth) add_subdirectory(integrations/bsc) add_subdirectory(integrations/near) +add_subdirectory(utils) diff --git a/simulator/examples/transport.cpp b/simulator/examples/transport.cpp index 057bd58b..41a17e71 100644 --- a/simulator/examples/transport.cpp +++ b/simulator/examples/transport.cpp @@ -25,7 +25,10 @@ struct Delegate { if(Simulator::default_instance.current_tick() > 10) { transport.close(); } else { - transport.send(Buffer({0,0,0,0,0,0,0,0,0,0}, 10)); + auto buf = Buffer(1350); + std::memset(buf.data(), 0, 1350); + transport.send(std::move(buf)); + //transport.send(Buffer({0,0,0,0,0,0,0,0,0,0}, 10)); } } @@ -44,17 +47,15 @@ struct Delegate { void did_dial(TransportType& transport) { SPDLOG_INFO("Did dial"); - transport.send(Buffer({0,0,0,0,0,0,0,0,0,0}, 10)); + auto buf = Buffer(1350); + std::memset(buf.data(), 0, 1350); + transport.send(std::move(buf)); } void did_close(TransportType&, uint16_t) { SPDLOG_INFO("Did close"); } - void close(uint16_t reason){ - SPDLOG_INFO("Close {}", reason); - } - bool should_accept(SocketAddress const&) { return true; } @@ -65,6 +66,7 @@ struct Delegate { }; int main() { + auto& simulator = Simulator::default_instance; NetworkConditioner nc; Network network(nc); diff --git a/simulator/include/marlin/simulator/transport/SimulatedTransport.hpp b/simulator/include/marlin/simulator/transport/SimulatedTransport.hpp index 9b2605a8..4c3b2c0a 100644 --- a/simulator/include/marlin/simulator/transport/SimulatedTransport.hpp +++ b/simulator/include/marlin/simulator/transport/SimulatedTransport.hpp @@ -116,8 +116,7 @@ void SimulatedTransport< NetworkInterfaceType, DelegateType >::close(uint16_t reason) { - - delegate->close(reason); + delegate->did_close(*this, reason); transport_manager.erase(dst_addr); } diff --git a/stream/CMakeLists.txt b/stream/CMakeLists.txt index 282bca74..7c692321 100644 --- a/stream/CMakeLists.txt +++ b/stream/CMakeLists.txt @@ -32,6 +32,9 @@ target_link_libraries(stream INTERFACE sodium::sodium) # marlin::asyncio target_link_libraries(stream INTERFACE marlin::asyncio) +# marlin::utils +target_link_libraries(stream INTERFACE marlin::utils) + # spdlog target_link_libraries(stream INTERFACE spdlog::spdlog_header_only) diff --git a/stream/examples/.stream_simulated.cpp.swp b/stream/examples/.stream_simulated.cpp.swp new file mode 100644 index 0000000000000000000000000000000000000000..1096c922ae340a724ac50279c41988957348a958 GIT binary patch literal 20480 zcmeI3du$v>9mgjPr8(NB6^M6L4US~3mFqq162jSW8{3!4iepBXB{ER)Qh} z0W(^#Gg`jGcrm`#x!npKLolmg`u@fxP!>voOH_eSG;Y{^H5nN$N00iBfsfJmz4y>1 zDu$}IQa~x76i^B%1(X6x0i}Ra;L=n;_*=Q5)fEq%v#CD&8QaerU<*5o?1 zyQeQaxl{+GfKosypcGIFC)_oZU{yufa3m32--PfPJ6}ZUiIXgW%1pkp}oK_%?VLm_P&9fwNZ; z@;mSh_$BxSxC?v^%z;^O8Q22OTuI1F;Ah}za381x1I&RjFbeYEzwbf1;78yG;9;PH zG4Nrq4QvJf%n|Z;@D_Lkd>zz45nKuW1x?-pzXz{?--0K>gFxza7ia?)w7@}705^bZ zz;+gJJMCKFXX1&w*!w4?Y0i58lLwn>WC#;AwC_umJ-W*bi<3Bj7{e za&QVCi(UjTfNy}i!90+^oLQ*buBFvHv&qC>%L*9hl}aP znmyco2WGjN-C76?m-}8I7TP}RyS2|Sg%`ACNFG6H7JcWn$VVkhCy6u$QDlvB+_xNW zsZtT1zRZqmTo}SOb>2i-($k$I!$a#@`W;KZDJ^C81M~YU^kjwm?&|GsEju4TSZ#i4 zX6_b!sycD#7EQKH(Dspc-8-%~S=%@4AT2{z%DjoPlAI9=Z;;xcm5 zT@&}w?9zS63kEwq1O>}(S1J~37@;FjUo?_yGDJ$-kwXxNtuRMR??hKJPCZ;gw$O;S z4BOR)=t(^Bh>DX{G+Ky|@-AJV;iXrTZd>%|(U#G!Gd*-e&aA~nSY;h4s?eZF`{x>4 zwDpRIG%VZF17@!14JYKwy6L$M+3pu9Q{J?F`G})JeYx(s5mogZOZOTLh_?$5`{uNPsi-}{KW=55X(y<#_WK73txg_h{k=n8ir@zKo8XbA% z6A_tq!ejwylswJ(hMc4d+&;lHIquS~=C-)d4NPAJ44LQ>a^i{x+-@5lnCsXKEM!mX z$&<7em>8s2^K^;}c|uoLD^v>qNR#xulGG!TV~rY{5TnavJuPyZltK<%=a!;(9+SfviYz<#?u|y!xc9BE#`z8x zazIZ9SvkhZj)OA9opcX{mgp&=DQLPtkmG)*q|touH;;Br#Pf$HW~L|iSC32_S*X?) zNBgaLk9Dm&d9b?BWleTqezILgxn7&Tt%}E_l-+7&x3I*@?mFFfWdI2|`Zi5w$mw)i zk9yXgHMhqSyY$#KqmGYb{OC!nH;r>e$zt^OXw1O9OR2F`(7c?RdyHkSpfl{JrX)8L zttZoKG|;r)3z&dq!_3&l*wIjbq?pSoKJ+?n(ugSPr09 zM}6!Z;pzHoeG`MXUDNi~H!!^bb0^thyQULbjE=>tv0|eoig<_6!&Y}p%> zIHboVFZT7rq)iLUzTcf(8Yity(T!K4#iYY+XfM*)qPVs(Hk+r^A&u?@ahBO*e_-#y zndw=5Z|%tJ6!SK8_d{uw{xd48o5gxF8Q_YQ2dMqjo! zx6zvJkmjkC?OynDt53fFKd=q^@7V8_@BdRtE&hS`{l9`gg45tx@Cf)0_%iqsFu*ae z2#TNpwt&B3@Bh!>PvFPkesCYS7X(2130x2U4IhA)!EeCx;QQe7U=bV!w}Mfy9h`v= z!0X^Oa0 0xfff) { + if(count > 10) { + transport.close(); return; } - if((count & 0xff) == 0) { - SPDLOG_INFO("Checkpoint: {}", count); - } ++count; - auto buf = Buffer(m_SIZE); - std::memset(buf.data(), 0, m_SIZE); + auto buf = Buffer(1350); + std::memset(buf.data(), 0, 1350); // SPDLOG_INFO("Did dial"); - transport.send(std::move(buf)); + transport.send(std::move(buf), 1); } void did_close(TransportType &, uint16_t) {} @@ -114,6 +112,7 @@ struct Delegate { }; int main() { + spdlog::set_level(spdlog::level::debug); Simulator& simulator = Simulator::default_instance; NetworkConditioner nc; NetworkType network(nc); diff --git a/stream/include/marlin/stream/Messages.hpp b/stream/include/marlin/stream/Messages.hpp index 9af6eb8d..e9465ece 100644 --- a/stream/include/marlin/stream/Messages.hpp +++ b/stream/include/marlin/stream/Messages.hpp @@ -372,7 +372,7 @@ struct CLOSEWrapper { /// Construct a CLOSE message CLOSEWrapper() : base(12) { - base.set_payload({0, 12}); + base.set_payload({0, 10}); } /// Validate the CLOSE message diff --git a/stream/include/marlin/stream/StreamTransport.hpp b/stream/include/marlin/stream/StreamTransport.hpp index c011aa38..a42f9086 100644 --- a/stream/include/marlin/stream/StreamTransport.hpp +++ b/stream/include/marlin/stream/StreamTransport.hpp @@ -15,6 +15,7 @@ #include #include #include +#include #include "protocol/SendStream.hpp" #include "protocol/RecvStream.hpp" @@ -330,6 +331,7 @@ void StreamTransport::reset() { for(auto& [_, stream] : send_streams) { (void)_; stream.state_timer.stop(); + stream.data_queue.clear(); } send_streams.clear(); for(auto& [_, stream] : recv_streams) { @@ -1481,9 +1483,11 @@ void StreamTransport::did_recv_ACK( std::move(iter->data) ); - if(stream.data_queue.size() == 0) - break; - + if(stream.data_queue.size() == 0){ + break; + } + + MARLIN_LOG_DEBUG("3rd Loop {} {}", stream.data_queue.size(), iter->data.size()); } if(fully_acked) { @@ -1797,6 +1801,7 @@ void StreamTransport::did_recv_FLUSHCONF( template class DatagramTransport> void StreamTransport::send_CLOSE(uint16_t reason) { + MARLIN_LOG_DEBUG_0(); transport.send( CLOSE() .set_src_conn_id(src_conn_id) @@ -1809,6 +1814,8 @@ template class DatagramTransport> void StreamTransport::did_recv_CLOSE( CLOSE &&packet ) { + MARLIN_LOG_DEBUG("{}",this->src_addr.to_string()); + if(!packet.validate()) { return; } @@ -1858,6 +1865,8 @@ void StreamTransport::send_CLOSECONF( uint32_t src_conn_id, uint32_t dst_conn_id ) { + MARLIN_LOG_DEBUG_0(); + transport.send( CLOSECONF() .set_src_conn_id(src_conn_id) @@ -1869,6 +1878,8 @@ template class DatagramTransport> void StreamTransport::did_recv_CLOSECONF( CLOSECONF &&packet ) { + MARLIN_LOG_DEBUG("{}",this->src_addr.to_string()); + if(!packet.validate()) { return; } @@ -1932,6 +1943,7 @@ void StreamTransport::did_close( BaseTransport &, uint16_t reason ) { + this->close(reason); delegate->did_close(*this, reason); transport_manager.erase(dst_addr); } @@ -1989,7 +2001,10 @@ void StreamTransport::did_recv( // FLUSHCONF case 9: did_recv_FLUSHCONF(std::move(packet)); break; - // UNKNOWN + case 10: did_recv_CLOSE(std::move(packet)); + break; + case 11: did_recv_CLOSECONF(std::move(packet)); + break; // UNKNOWN default: SPDLOG_TRACE("UNKNOWN <<< {}", dst_addr.to_string()); break; } diff --git a/stream/include/marlin/stream/protocol/.RecvStream.hpp.swp b/stream/include/marlin/stream/protocol/.RecvStream.hpp.swp new file mode 100644 index 0000000000000000000000000000000000000000..e391426c3d08ce69a845f45283fe5d135a4cec8f GIT binary patch literal 12288 zcmeI2PiP!f9LHbPwr*09;6Vketw+I&7f~;Qg5Te~nc1DRNx(xvI)M+n z^Zx$c_x*mqH%s1h=b@od{%A)h!{42ZZ8DS+I36B z-J(*@ca>|pc5z&o^Almqj;iOaZBf=DQ{YBYU^9DoS63M7tq*SFci(mJMp}Hf)=Ys+ zflPr+flPr+flPr+flPrLUIFE;V=qF5n<6DnM4#)HeMXPjN2WlgK&C*ZK&C*ZK&C*Z zK&C*ZK&C*ZK&C*Z!2eJI!(wa}Klabv4CC?t|M>U+Pj@i(5%>_i0#1OVpbBQdBIB!6aw_zieXcA~*w1gZIE|;4tU`_X7rgXkqLU_zHXuJ_8rPNpK9* zz|&v~41z9D09(Np&;mAqKXaH9oB=1ntKfO?9C#KCgYDqQTN(QpoC0rwvz!quI;M0> zrAb`G@p+&OCCZAvqq2y>bh&c5FO<*&E7Jt|0ykYJP*g<=9-tbIaSYq$ zmZ1#pIxv)OBJrvb@M$3&h+$ZKdXXERXG_yixZMPk5T?FUYT-F!_ww75Bwkfx*{DJR9EzD+_;kv zd1dD|g`5`__B!$-uP4^1ozpV({tY=5w+~u1b^yLZAv7WpPHu&&!hv|SL6IvrC7BL{ zcA4x5gBHFAQB&dD9KGb3aV14YSz7P|9h&%#YO+mV1u7Ha zU4ycqJ1_DQuG*o?!vv?@NM}4W46F4MX`*YBY!KG!r$%k)_H=T^-ID^eA=Mf&!rNS2 zbT!}|z4_%eZ8Ufo_awq7Y~>JH&d_lZuJO8Bx{`UND1!4kA1qfiZGU*0Cee^ya9$s^ z=|bLCfQS@!in1sPL6M5|Xu95_KAn^CC_5(mMxm8U_9=YwDIG=oLIvrmkP?%%ICb0h zl;6%f6Z`jxicz=KHKts)4J-P}YHpI42D6&%XlNQ8WCeW=m^cVarM>k^1?OE`TU3b! zCkaMdL1CH{>G@Md$+Re4rpC3>S87@vGV!L+%aE$#pkBax5Qf#KL^ydE^@%F9g(KnX z1RVpqxG6CvB2l{o`mG4%6BXYOcT7*HmJXkM^b7=v(p88+noTp-3zB=~_Frv;@v|vHCB7R#|b-ZuLh0 E0@x&f4*&oF literal 0 HcmV?d00001 diff --git a/stream/include/marlin/stream/protocol/.SendStream.hpp.swp b/stream/include/marlin/stream/protocol/.SendStream.hpp.swp new file mode 100644 index 0000000000000000000000000000000000000000..caa7b489bb636e794dc10112dc3ef5243d56182a GIT binary patch literal 12288 zcmeI2ONa(|4=^4$dhnnZiIK#_=*5I!qEU>G#EXf>gL+c`Usd&MMeu6qO@4HDb@f;E z{p+i*YC^Rq_cwO(`>K-+e`^?9`}$K){<(Y$n~fPe7)XnXFZSnHJ>mKntHsz6GFaO- z=LY_K7(69x8P$4L=(&DPJlz+e+Y`QQ?d}VIQCNpXSfksA^=%|WVfAXRZ+o#LlFv+O zKMZ7G2VSiye5a{uR=fTF#d}oNC>6Mr6j;UXx^ttN>cbn>^XsqMcPTkv`dTVbDo`p= zDo`p=Do`p=Do`qL$txiHm$B!d!ZM@83+8&+lB;);A|3CTt|Kqic9S5(0S3wNs!EP`GCcrwd3jDB| zvG2iW;1qZtbisbG5!?#CUd7mHa1;c<2akh2pbj|r?i$9v0q4M{;1h5XybK-%+rb#P z5&XK6v9G{Ma11O00UXc-TfsQE3H)_6V?Ti}!CCMwcmo^(0?dI1*a2$b7H~6I3BDa- z>>cn5=zwit1GpXB23CU~u43$C@DVr-J_N_W^WYFT03HJka1R&?U;-=$=MWPgfVaR2a2y;3AvgpmW*VUUBL#+W_QdV*T8;0V*)!MJ z)oSkDvwdb~tGRvGthwDWKhM~+RK>@UnW%5sg6jh?OH1{^7F6EEhOB7d+ip;=@5KR` zkVn#zq9y4bFKaNS%VoerA;ST0KG>Mo4YHxw_2s>Hw`BgS7Rp3;*z))k-#9rrS+J76 z>jWW}U75u&*(@IoN5Pw$DP0ztwXVhag=ERhB}rP3FAQ{Qc_s` zzUSJO#Q7yvom&q1s=J0BlTl^iei%&z;_ZPH5j1agJa?g+@8hnx*T#UNbE*!HaQun4 zW2qEU{Y@12+(>Sog#ryJdeil~ivhGGM#vXW%NCw`^p7esUEYNkoL(5^UAPcHcGXC( zchu&8P)~I&8G?d%sh`U8|6oeh%f_={Oodm`S*5NX7~>l0pmjFB`9e4a_t?<0YzVQM zPLwKwqeb1X$gUfWZi22ubT={mPXRIZ`W4mJ4ObCEmHb!AG%7Z!iF$pHu$%#UXKd=p z+j1S$Nbm7FJDpZZCQbH!oX-kREWqC0L0^n<$2^VldVca&vhrux5XQIf;gii0-%w5| z7@5}TVO!v%7qN|af#0gj+M?03sSeEPA}B|G%+Qp>6+M>Y`s&bCIf@(M$31R)RupLo zIQl}Fs9;J*8Ks8I%VLwR!*tJhCJjuHr5OrT$9!nU*|vOLnhPPFB5Amh{Nm8(>nme4 ze0*w(2Z*f@!=@*AfD?u^XVy$H7%3=RkNaeMd*U$lr?6aRTbl@j#9`Z)oPHdn-)=Z zmE98Or!MCF_RRI7N|jOm48)+ZnH3!?_9V9pfkjH`E+sG@6)Wv>%4OgQ9Tq@H4?CHHuZzQT5znsh(%CAtF?(z7P3^0BlNNyInx7>w!WsWi2i zHiptAI-PIQrPDoCgmj$K0fqceNsyXfnw?XfsQPZbq+tzAtE))DikM`1Wn6@c7WOQnAK2Z|TsFwfPm>X7s)jwi`dV%5HMo|GV;hB;%yJ)_Gr&mml+7rE zk}ws$c?k}SidqXsN5@S-nN_RO(j#pib--t1UVMvau!9iEe{0<7U=<%3QAQCDvnHY{ z{}u^mLq-$aG-cE>BWwZ!i%ckKcaRQuTQ_AQKzDYj_&Q{;@+{d2;Un{TvK5QC<)IJG zK<~zAf#Cg>{IFd{-C z3}a~ZqS0)>VzRv1SYg2Xv8J9JUk z4tjlTQGF;yTl0tZHMVijJ%}F=NX71i5x~WMK+rLIJx>tpA>TJU&uU}q`GJn>iQG!7 Hj>!KFOg^oL literal 0 HcmV?d00001 diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt new file mode 100644 index 00000000..a274491d --- /dev/null +++ b/utils/CMakeLists.txt @@ -0,0 +1,87 @@ +cmake_minimum_required(VERSION 3.11 FATAL_ERROR) +project(utils VERSION 0.0.1 LANGUAGES CXX) + +if("${CMAKE_BUILD_TYPE}" STREQUAL "Release") + add_definitions(-DSPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_INFO) +else() + add_definitions(-DSPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_DEBUG) +endif() + +include(GNUInstallDirs) + +IF(APPLE) + # Fix linking on 10.14+. See https://stackoverflow.com/questions/54068035 + LINK_DIRECTORIES(/usr/local/lib) +ENDIF() + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") + +add_library(utils INTERFACE) +add_library(marlin::utils ALIAS utils) + +target_include_directories(utils + INTERFACE + $ + $ + ) +target_compile_features(utils INTERFACE cxx_std_17) + +# spdlog +target_link_libraries(utils INTERFACE spdlog::spdlog_header_only) + +# abseil +# target_link_libraries(utils INTERFACE absl::flash_hash_map) + +install(TARGETS utils + EXPORT marlin-utils-export + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +) + +install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + +########################################################## +# Export +########################################################## + +install(EXPORT marlin-utils-export + FILE + MarlinUtilsTargets.cmake + NAMESPACE + marlin:: + DESTINATION + ${CMAKE_INSTALL_LIBDIR}/cmake/marlinUtils + ) + +install(FILES + ${CMAKE_CURRENT_LIST_DIR}/cmake/MarlinUtilsConfig.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/marlinUtils + ) + +########################################################## +# Tests +########################################################## + +#enable_testing() + +#set(TEST_SOURCES +# test/testAckRanges.cpp +# test/testCongestion.cpp +# ) + +#add_custom_target(stream_tests) +#foreach(TEST_SOURCE ${TEST_SOURCES}) +# get_filename_component(TEST_NAME ${TEST_SOURCE} NAME_WE) +# add_executable(${TEST_NAME} ${TEST_SOURCE}) +# target_link_libraries(${TEST_NAME} PUBLIC GTest::GTest GTest::Main stream) +# target_compile_options(${TEST_NAME} PRIVATE -Werror -Wall -Wextra -pedantic-errors) +# target_compile_features(${TEST_NAME} PRIVATE cxx_std_17) +# add_test(${TEST_NAME} ${TEST_NAME}) + +# add_dependencies(stream_tests ${TEST_NAME}) +#endforeach(TEST_SOURCE) + +########################################################## +# All +########################################################## + diff --git a/utils/include/marlin/utils/logs.hpp b/utils/include/marlin/utils/logs.hpp new file mode 100644 index 00000000..26bc1abe --- /dev/null +++ b/utils/include/marlin/utils/logs.hpp @@ -0,0 +1,12 @@ +#include + +#define MARLIN_LOG_DEBUG(fmt, ...) SPDLOG_LOGGER_DEBUG(spdlog::default_logger_raw(),"{}:{} {}() ###: " fmt, __FILE__, __LINE__, __FUNCTION__, __VA_ARGS__) +#define MARLIN_LOG_DEBUG_0(fmt) SPDLOG_LOGGER_DEBUG(spdlog::default_logger_raw(),"{}:{} {}() !!!. " fmt, __FILE__, __LINE__, __FUNCTION__) + +#define MARLIN_LOG_TRACE(fmt, ...) SPDLOG_LOGGER_TRACE(spdlog::default_logger_raw(),"{}:{} {}() ###: " fmt, __FILE__, __LINE__, __FUNCTION__, __VA_ARGS__) +#define MARLIN_LOG_TRACE_0(fmt) SPDLOG_LOGGER_TRACE(spdlog::default_logger_raw(),"{}:{} {}() !!!. " fmt, __FILE__, __LINE__, __FUNCTION__) + +#define MARLIN_LOG_INFO(fmt, ...) SPDLOG_LOGGER_INFO(spdlog::default_logger_raw(),"{}:{} {}() ###: " fmt, __FILE__, __LINE__, __FUNCTION__, __VA_ARGS__) +#define MARLIN_LOG_INFO_0(fmt) SPDLOG_LOGGER_INFO(spdlog::default_logger_raw(),"{}:{} {}() !!!. " fmt, __FILE__, __LINE__, __FUNCTION__) + + From e770eb9e5343e040425860988b203e8418c5b527 Mon Sep 17 00:00:00 2001 From: KotaHemanthIITD <4825491-KotaHemanthIITD@users.noreply.gitlab.com> Date: Wed, 7 Apr 2021 10:45:20 +0530 Subject: [PATCH 05/14] rewrite close --- stream/examples/.stream_simulated.cpp.swp | Bin 20480 -> 0 bytes .../marlin/stream/protocol/.RecvStream.hpp.swp | Bin 12288 -> 0 bytes .../marlin/stream/protocol/.SendStream.hpp.swp | Bin 12288 -> 0 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 stream/examples/.stream_simulated.cpp.swp delete mode 100644 stream/include/marlin/stream/protocol/.RecvStream.hpp.swp delete mode 100644 stream/include/marlin/stream/protocol/.SendStream.hpp.swp diff --git a/stream/examples/.stream_simulated.cpp.swp b/stream/examples/.stream_simulated.cpp.swp deleted file mode 100644 index 1096c922ae340a724ac50279c41988957348a958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 E0@x&f4*&oF diff --git a/stream/include/marlin/stream/protocol/.SendStream.hpp.swp b/stream/include/marlin/stream/protocol/.SendStream.hpp.swp deleted file mode 100644 index caa7b489bb636e794dc10112dc3ef5243d56182a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2ONa(|4=^4$dhnnZiIK#_=*5I!qEU>G#EXf>gL+c`Usd&MMeu6qO@4HDb@f;E z{p+i*YC^Rq_cwO(`>K-+e`^?9`}$K){<(Y$n~fPe7)XnXFZSnHJ>mKntHsz6GFaO- z=LY_K7(69x8P$4L=(&DPJlz+e+Y`QQ?d}VIQCNpXSfksA^=%|WVfAXRZ+o#LlFv+O zKMZ7G2VSiye5a{uR=fTF#d}oNC>6Mr6j;UXx^ttN>cbn>^XsqMcPTkv`dTVbDo`p= zDo`p=Do`p=Do`qL$txiHm$B!d!ZM@83+8&+lB;);A|3CTt|Kqic9S5(0S3wNs!EP`GCcrwd3jDB| zvG2iW;1qZtbisbG5!?#CUd7mHa1;c<2akh2pbj|r?i$9v0q4M{;1h5XybK-%+rb#P z5&XK6v9G{Ma11O00UXc-TfsQE3H)_6V?Ti}!CCMwcmo^(0?dI1*a2$b7H~6I3BDa- z>>cn5=zwit1GpXB23CU~u43$C@DVr-J_N_W^WYFT03HJka1R&?U;-=$=MWPgfVaR2a2y;3AvgpmW*VUUBL#+W_QdV*T8;0V*)!MJ z)oSkDvwdb~tGRvGthwDWKhM~+RK>@UnW%5sg6jh?OH1{^7F6EEhOB7d+ip;=@5KR` zkVn#zq9y4bFKaNS%VoerA;ST0KG>Mo4YHxw_2s>Hw`BgS7Rp3;*z))k-#9rrS+J76 z>jWW}U75u&*(@IoN5Pw$DP0ztwXVhag=ERhB}rP3FAQ{Qc_s` zzUSJO#Q7yvom&q1s=J0BlTl^iei%&z;_ZPH5j1agJa?g+@8hnx*T#UNbE*!HaQun4 zW2qEU{Y@12+(>Sog#ryJdeil~ivhGGM#vXW%NCw`^p7esUEYNkoL(5^UAPcHcGXC( zchu&8P)~I&8G?d%sh`U8|6oeh%f_={Oodm`S*5NX7~>l0pmjFB`9e4a_t?<0YzVQM zPLwKwqeb1X$gUfWZi22ubT={mPXRIZ`W4mJ4ObCEmHb!AG%7Z!iF$pHu$%#UXKd=p z+j1S$Nbm7FJDpZZCQbH!oX-kREWqC0L0^n<$2^VldVca&vhrux5XQIf;gii0-%w5| z7@5}TVO!v%7qN|af#0gj+M?03sSeEPA}B|G%+Qp>6+M>Y`s&bCIf@(M$31R)RupLo zIQl}Fs9;J*8Ks8I%VLwR!*tJhCJjuHr5OrT$9!nU*|vOLnhPPFB5Amh{Nm8(>nme4 ze0*w(2Z*f@!=@*AfD?u^XVy$H7%3=RkNaeMd*U$lr?6aRTbl@j#9`Z)oPHdn-)=Z zmE98Or!MCF_RRI7N|jOm48)+ZnH3!?_9V9pfkjH`E+sG@6)Wv>%4OgQ9Tq@H4?CHHuZzQT5znsh(%CAtF?(z7P3^0BlNNyInx7>w!WsWi2i zHiptAI-PIQrPDoCgmj$K0fqceNsyXfnw?XfsQPZbq+tzAtE))DikM`1Wn6@c7WOQnAK2Z|TsFwfPm>X7s)jwi`dV%5HMo|GV;hB;%yJ)_Gr&mml+7rE zk}ws$c?k}SidqXsN5@S-nN_RO(j#pib--t1UVMvau!9iEe{0<7U=<%3QAQCDvnHY{ z{}u^mLq-$aG-cE>BWwZ!i%ckKcaRQuTQ_AQKzDYj_&Q{;@+{d2;Un{TvK5QC<)IJG zK<~zAf#Cg>{IFd{-C z3}a~ZqS0)>VzRv1SYg2Xv8J9JUk z4tjlTQGF;yTl0tZHMVijJ%}F=NX71i5x~WMK+rLIJx>tpA>TJU&uU}q`GJn>iQG!7 Hj>!KFOg^oL From cbdfd6f277b3ac2eaf37f2dd91c23c77a4e4cafb Mon Sep 17 00:00:00 2001 From: KotaHemanthIITD <4825491-KotaHemanthIITD@users.noreply.gitlab.com> Date: Thu, 8 Apr 2021 11:59:53 +0530 Subject: [PATCH 06/14] clean transport close diff --- CMakeLists.txt | 1 - simulator/examples/transport.cpp | 10 +-- stream/CMakeLists.txt | 3 - stream/examples/stream_simulated.cpp | 29 ++++---- stream/include/marlin/stream/Messages.hpp | 2 +- utils/CMakeLists.txt | 87 ----------------------- utils/include/marlin/utils/logs.hpp | 12 ---- 7 files changed, 20 insertions(+), 124 deletions(-) delete mode 100644 utils/CMakeLists.txt delete mode 100644 utils/include/marlin/utils/logs.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index a66937aa..2abb0192 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -48,4 +48,3 @@ add_subdirectory(rlpx) add_subdirectory(integrations/eth) add_subdirectory(integrations/bsc) add_subdirectory(integrations/near) -add_subdirectory(utils) diff --git a/simulator/examples/transport.cpp b/simulator/examples/transport.cpp index 41a17e71..d1d4c60f 100644 --- a/simulator/examples/transport.cpp +++ b/simulator/examples/transport.cpp @@ -25,10 +25,7 @@ struct Delegate { if(Simulator::default_instance.current_tick() > 10) { transport.close(); } else { - auto buf = Buffer(1350); - std::memset(buf.data(), 0, 1350); - transport.send(std::move(buf)); - //transport.send(Buffer({0,0,0,0,0,0,0,0,0,0}, 10)); + transport.send(Buffer({0,0,0,0,0,0,0,0,0,0}, 10)); } } @@ -47,9 +44,7 @@ struct Delegate { void did_dial(TransportType& transport) { SPDLOG_INFO("Did dial"); - auto buf = Buffer(1350); - std::memset(buf.data(), 0, 1350); - transport.send(std::move(buf)); + transport.send(Buffer({0,0,0,0,0,0,0,0,0,0}, 10)); } void did_close(TransportType&, uint16_t) { @@ -66,7 +61,6 @@ struct Delegate { }; int main() { - auto& simulator = Simulator::default_instance; NetworkConditioner nc; Network network(nc); diff --git a/stream/CMakeLists.txt b/stream/CMakeLists.txt index 7c692321..282bca74 100644 --- a/stream/CMakeLists.txt +++ b/stream/CMakeLists.txt @@ -32,9 +32,6 @@ target_link_libraries(stream INTERFACE sodium::sodium) # marlin::asyncio target_link_libraries(stream INTERFACE marlin::asyncio) -# marlin::utils -target_link_libraries(stream INTERFACE marlin::utils) - # spdlog target_link_libraries(stream INTERFACE spdlog::spdlog_header_only) diff --git a/stream/examples/stream_simulated.cpp b/stream/examples/stream_simulated.cpp index fd5fe3ea..ed8e3969 100644 --- a/stream/examples/stream_simulated.cpp +++ b/stream/examples/stream_simulated.cpp @@ -59,31 +59,36 @@ struct Delegate { } void did_send(TransportType &transport, Buffer &&packet [[maybe_unused]]) { - SPDLOG_INFO( - "Transport {{ Src: {}, Dst: {} }}: Did send packet: {} bytes", - transport.src_addr.to_string(), - transport.dst_addr.to_string(), - packet.size() - ); + // SPDLOG_INFO( + // "Transport {{ Src: {}, Dst: {} }}: Did send packet: {} bytes", + // transport.src_addr.to_string(), + // transport.dst_addr.to_string(), + // packet.size() + // ); did_dial(transport); } void did_dial(TransportType &transport) { - if(count > 10) { + if(count > 0xfff) { transport.close(); return; } + if((count & 0xff) == 0) { + SPDLOG_INFO("Checkpoint: {}", count); + } ++count; - auto buf = Buffer(1350); - std::memset(buf.data(), 0, 1350); + auto buf = Buffer(m_SIZE); + std::memset(buf.data(), 0, m_SIZE); // SPDLOG_INFO("Did dial"); - transport.send(std::move(buf), 1); + transport.send(std::move(buf)); } - void did_close(TransportType &, uint16_t) {} + void did_close(TransportType &, uint16_t) { + SPDLOG_INFO("Transport Closed"); + } bool should_accept(SocketAddress const &) { return true; @@ -112,7 +117,7 @@ struct Delegate { }; int main() { - spdlog::set_level(spdlog::level::debug); + Simulator& simulator = Simulator::default_instance; NetworkConditioner nc; NetworkType network(nc); diff --git a/stream/include/marlin/stream/Messages.hpp b/stream/include/marlin/stream/Messages.hpp index e9465ece..9af6eb8d 100644 --- a/stream/include/marlin/stream/Messages.hpp +++ b/stream/include/marlin/stream/Messages.hpp @@ -372,7 +372,7 @@ struct CLOSEWrapper { /// Construct a CLOSE message CLOSEWrapper() : base(12) { - base.set_payload({0, 10}); + base.set_payload({0, 12}); } /// Validate the CLOSE message diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt deleted file mode 100644 index a274491d..00000000 --- a/utils/CMakeLists.txt +++ /dev/null @@ -1,87 +0,0 @@ -cmake_minimum_required(VERSION 3.11 FATAL_ERROR) -project(utils VERSION 0.0.1 LANGUAGES CXX) - -if("${CMAKE_BUILD_TYPE}" STREQUAL "Release") - add_definitions(-DSPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_INFO) -else() - add_definitions(-DSPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_DEBUG) -endif() - -include(GNUInstallDirs) - -IF(APPLE) - # Fix linking on 10.14+. See https://stackoverflow.com/questions/54068035 - LINK_DIRECTORIES(/usr/local/lib) -ENDIF() - -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") - -add_library(utils INTERFACE) -add_library(marlin::utils ALIAS utils) - -target_include_directories(utils - INTERFACE - $ - $ - ) -target_compile_features(utils INTERFACE cxx_std_17) - -# spdlog -target_link_libraries(utils INTERFACE spdlog::spdlog_header_only) - -# abseil -# target_link_libraries(utils INTERFACE absl::flash_hash_map) - -install(TARGETS utils - EXPORT marlin-utils-export - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} -) - -install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - -########################################################## -# Export -########################################################## - -install(EXPORT marlin-utils-export - FILE - MarlinUtilsTargets.cmake - NAMESPACE - marlin:: - DESTINATION - ${CMAKE_INSTALL_LIBDIR}/cmake/marlinUtils - ) - -install(FILES - ${CMAKE_CURRENT_LIST_DIR}/cmake/MarlinUtilsConfig.cmake - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/marlinUtils - ) - -########################################################## -# Tests -########################################################## - -#enable_testing() - -#set(TEST_SOURCES -# test/testAckRanges.cpp -# test/testCongestion.cpp -# ) - -#add_custom_target(stream_tests) -#foreach(TEST_SOURCE ${TEST_SOURCES}) -# get_filename_component(TEST_NAME ${TEST_SOURCE} NAME_WE) -# add_executable(${TEST_NAME} ${TEST_SOURCE}) -# target_link_libraries(${TEST_NAME} PUBLIC GTest::GTest GTest::Main stream) -# target_compile_options(${TEST_NAME} PRIVATE -Werror -Wall -Wextra -pedantic-errors) -# target_compile_features(${TEST_NAME} PRIVATE cxx_std_17) -# add_test(${TEST_NAME} ${TEST_NAME}) - -# add_dependencies(stream_tests ${TEST_NAME}) -#endforeach(TEST_SOURCE) - -########################################################## -# All -########################################################## - diff --git a/utils/include/marlin/utils/logs.hpp b/utils/include/marlin/utils/logs.hpp deleted file mode 100644 index 26bc1abe..00000000 --- a/utils/include/marlin/utils/logs.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#include - -#define MARLIN_LOG_DEBUG(fmt, ...) SPDLOG_LOGGER_DEBUG(spdlog::default_logger_raw(),"{}:{} {}() ###: " fmt, __FILE__, __LINE__, __FUNCTION__, __VA_ARGS__) -#define MARLIN_LOG_DEBUG_0(fmt) SPDLOG_LOGGER_DEBUG(spdlog::default_logger_raw(),"{}:{} {}() !!!. " fmt, __FILE__, __LINE__, __FUNCTION__) - -#define MARLIN_LOG_TRACE(fmt, ...) SPDLOG_LOGGER_TRACE(spdlog::default_logger_raw(),"{}:{} {}() ###: " fmt, __FILE__, __LINE__, __FUNCTION__, __VA_ARGS__) -#define MARLIN_LOG_TRACE_0(fmt) SPDLOG_LOGGER_TRACE(spdlog::default_logger_raw(),"{}:{} {}() !!!. " fmt, __FILE__, __LINE__, __FUNCTION__) - -#define MARLIN_LOG_INFO(fmt, ...) SPDLOG_LOGGER_INFO(spdlog::default_logger_raw(),"{}:{} {}() ###: " fmt, __FILE__, __LINE__, __FUNCTION__, __VA_ARGS__) -#define MARLIN_LOG_INFO_0(fmt) SPDLOG_LOGGER_INFO(spdlog::default_logger_raw(),"{}:{} {}() !!!. " fmt, __FILE__, __LINE__, __FUNCTION__) - - From 813018c2747c52e07e57eb18a1b1f2ff610d30b6 Mon Sep 17 00:00:00 2001 From: KotaHemanthIITD <4825491-KotaHemanthIITD@users.noreply.gitlab.com> Date: Thu, 8 Apr 2021 12:03:21 +0530 Subject: [PATCH 07/14] StreamTransport changes without close message number change --- stream/include/marlin/stream/StreamTransport.hpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/stream/include/marlin/stream/StreamTransport.hpp b/stream/include/marlin/stream/StreamTransport.hpp index a42f9086..76816452 100644 --- a/stream/include/marlin/stream/StreamTransport.hpp +++ b/stream/include/marlin/stream/StreamTransport.hpp @@ -15,7 +15,6 @@ #include #include #include -#include #include "protocol/SendStream.hpp" #include "protocol/RecvStream.hpp" @@ -27,7 +26,6 @@ namespace stream { /// Timeout when no acks are received, used by the TLP timer #define DEFAULT_TLP_INTERVAL 1000 -/// Bytes that can be sent in a given batch, used by the packet pacing mechanism #define DEFAULT_PACING_LIMIT 400000 /// Bytes that can be sent in a single packet to prevent fragmentation, accounts for header overheads #define DEFAULT_FRAGMENT_SIZE 1350 @@ -1487,7 +1485,6 @@ void StreamTransport::did_recv_ACK( break; } - MARLIN_LOG_DEBUG("3rd Loop {} {}", stream.data_queue.size(), iter->data.size()); } if(fully_acked) { @@ -1801,7 +1798,7 @@ void StreamTransport::did_recv_FLUSHCONF( template class DatagramTransport> void StreamTransport::send_CLOSE(uint16_t reason) { - MARLIN_LOG_DEBUG_0(); + SPDLOG_DEBUG("{}", __FUNCTION__); transport.send( CLOSE() .set_src_conn_id(src_conn_id) @@ -1814,7 +1811,7 @@ template class DatagramTransport> void StreamTransport::did_recv_CLOSE( CLOSE &&packet ) { - MARLIN_LOG_DEBUG("{}",this->src_addr.to_string()); + SPDLOG_DEBUG("{} {}", __FUNCTION__,this->src_addr.to_string()); if(!packet.validate()) { return; @@ -1865,7 +1862,7 @@ void StreamTransport::send_CLOSECONF( uint32_t src_conn_id, uint32_t dst_conn_id ) { - MARLIN_LOG_DEBUG_0(); + SPDLOG_DEBUG("{}",__FUNCTION__); transport.send( CLOSECONF() @@ -1878,7 +1875,7 @@ template class DatagramTransport> void StreamTransport::did_recv_CLOSECONF( CLOSECONF &&packet ) { - MARLIN_LOG_DEBUG("{}",this->src_addr.to_string()); + SPDLOG_DEBUG("{} {}", __FUNCTION__, this->src_addr.to_string()); if(!packet.validate()) { return; @@ -2001,7 +1998,7 @@ void StreamTransport::did_recv( // FLUSHCONF case 9: did_recv_FLUSHCONF(std::move(packet)); break; - case 10: did_recv_CLOSE(std::move(packet)); + case 12: did_recv_CLOSE(std::move(packet)); break; case 11: did_recv_CLOSECONF(std::move(packet)); break; // UNKNOWN From 17a7504347946d35bae8d254fb89507f08be8f97 Mon Sep 17 00:00:00 2001 From: KotaHemanthIITD <4825491-KotaHemanthIITD@users.noreply.gitlab.com> Date: Thu, 8 Apr 2021 12:06:32 +0530 Subject: [PATCH 08/14] redo comment deletion --- stream/include/marlin/stream/StreamTransport.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/stream/include/marlin/stream/StreamTransport.hpp b/stream/include/marlin/stream/StreamTransport.hpp index 76816452..1d9959cd 100644 --- a/stream/include/marlin/stream/StreamTransport.hpp +++ b/stream/include/marlin/stream/StreamTransport.hpp @@ -26,6 +26,7 @@ namespace stream { /// Timeout when no acks are received, used by the TLP timer #define DEFAULT_TLP_INTERVAL 1000 +/// Bytes that can be sent in a given batch, used by the packet pacing mechanism #define DEFAULT_PACING_LIMIT 400000 /// Bytes that can be sent in a single packet to prevent fragmentation, accounts for header overheads #define DEFAULT_FRAGMENT_SIZE 1350 From e995462098290be23a8fbff8a3f3e20bbe55e262 Mon Sep 17 00:00:00 2001 From: KotaHemanthIITD <4825491-KotaHemanthIITD@users.noreply.gitlab.com> Date: Thu, 8 Apr 2021 12:21:38 +0530 Subject: [PATCH 09/14] size checks redundant --- stream/include/marlin/stream/StreamTransport.hpp | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/stream/include/marlin/stream/StreamTransport.hpp b/stream/include/marlin/stream/StreamTransport.hpp index 1d9959cd..1f62638a 100644 --- a/stream/include/marlin/stream/StreamTransport.hpp +++ b/stream/include/marlin/stream/StreamTransport.hpp @@ -1476,16 +1476,12 @@ void StreamTransport::did_recv_ACK( fully_acked = false; break; } - + // TODO: Handle delegate->did_send return type for connection continuation delegate->did_send( *this, std::move(iter->data) ); - if(stream.data_queue.size() == 0){ - break; - } - } if(fully_acked) { @@ -1536,9 +1532,6 @@ void StreamTransport::did_recv_ACK( return; } - if (sent_packets.size() == 0) - break; - } high = low; From 99577d355e70d5155e6d87f74ba815ba925e95fc Mon Sep 17 00:00:00 2001 From: KotaHemanthIITD <4825491-KotaHemanthIITD@users.noreply.gitlab.com> Date: Thu, 8 Apr 2021 12:25:09 +0530 Subject: [PATCH 10/14] redundant example changes removed --- stream/examples/stream_simulated.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/stream/examples/stream_simulated.cpp b/stream/examples/stream_simulated.cpp index ed8e3969..b52fa4c6 100644 --- a/stream/examples/stream_simulated.cpp +++ b/stream/examples/stream_simulated.cpp @@ -70,7 +70,6 @@ struct Delegate { void did_dial(TransportType &transport) { if(count > 0xfff) { - transport.close(); return; } if((count & 0xff) == 0) { From 095226f764e36bfe47974ff1bdcf7fc04b61845a Mon Sep 17 00:00:00 2001 From: KotaHemanthIITD <4825491-KotaHemanthIITD@users.noreply.gitlab.com> Date: Thu, 8 Apr 2021 12:27:33 +0530 Subject: [PATCH 11/14] redundant reset changes removed --- stream/include/marlin/stream/StreamTransport.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/stream/include/marlin/stream/StreamTransport.hpp b/stream/include/marlin/stream/StreamTransport.hpp index 1f62638a..94479e2e 100644 --- a/stream/include/marlin/stream/StreamTransport.hpp +++ b/stream/include/marlin/stream/StreamTransport.hpp @@ -330,7 +330,6 @@ void StreamTransport::reset() { for(auto& [_, stream] : send_streams) { (void)_; stream.state_timer.stop(); - stream.data_queue.clear(); } send_streams.clear(); for(auto& [_, stream] : recv_streams) { From f8604226b400a8c34fcdfb2acefbbfbfef225c63 Mon Sep 17 00:00:00 2001 From: KotaHemanthIITD <4825491-KotaHemanthIITD@users.noreply.gitlab.com> Date: Tue, 20 Apr 2021 10:58:08 +0530 Subject: [PATCH 12/14] uint ACK ranges check fix --- stream/include/marlin/stream/StreamTransport.hpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/stream/include/marlin/stream/StreamTransport.hpp b/stream/include/marlin/stream/StreamTransport.hpp index 94479e2e..306e81be 100644 --- a/stream/include/marlin/stream/StreamTransport.hpp +++ b/stream/include/marlin/stream/StreamTransport.hpp @@ -1416,7 +1416,7 @@ void StreamTransport::did_recv_ACK( ) { uint64_t range = *iter; - int low = high - range; + uint64_t low = high - range; // Short circuit on gap range if(gap) { @@ -1424,6 +1424,13 @@ void StreamTransport::did_recv_ACK( continue; } + //TODO: if either of high, low+1 are negative throw encoding error + // https://tools.ietf.org/html/draft-ietf-quic-transport-34#section-19.3.1 + //Tips https://wesmckinney.com/blog/avoid-unsigned-integers/ + if ( low+1 > high){ + break; + } + // Get packets within range [low+1, high] auto low_iter = sent_packets.lower_bound(low + 1); auto high_iter = sent_packets.upper_bound(high); @@ -1933,7 +1940,6 @@ void StreamTransport::did_close( BaseTransport &, uint16_t reason ) { - this->close(reason); delegate->did_close(*this, reason); transport_manager.erase(dst_addr); } From 3eeab6916539bb9b921ffc75ae8d969e7649cf91 Mon Sep 17 00:00:00 2001 From: KotaHemanthIITD <4825491-KotaHemanthIITD@users.noreply.gitlab.com> Date: Wed, 21 Apr 2021 10:52:01 +0530 Subject: [PATCH 13/14] remove debug adds --- stream/include/marlin/stream/StreamTransport.hpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/stream/include/marlin/stream/StreamTransport.hpp b/stream/include/marlin/stream/StreamTransport.hpp index 306e81be..62c07914 100644 --- a/stream/include/marlin/stream/StreamTransport.hpp +++ b/stream/include/marlin/stream/StreamTransport.hpp @@ -1798,7 +1798,6 @@ void StreamTransport::did_recv_FLUSHCONF( template class DatagramTransport> void StreamTransport::send_CLOSE(uint16_t reason) { - SPDLOG_DEBUG("{}", __FUNCTION__); transport.send( CLOSE() .set_src_conn_id(src_conn_id) @@ -1811,8 +1810,6 @@ template class DatagramTransport> void StreamTransport::did_recv_CLOSE( CLOSE &&packet ) { - SPDLOG_DEBUG("{} {}", __FUNCTION__,this->src_addr.to_string()); - if(!packet.validate()) { return; } @@ -1862,8 +1859,6 @@ void StreamTransport::send_CLOSECONF( uint32_t src_conn_id, uint32_t dst_conn_id ) { - SPDLOG_DEBUG("{}",__FUNCTION__); - transport.send( CLOSECONF() .set_src_conn_id(src_conn_id) @@ -1875,8 +1870,6 @@ template class DatagramTransport> void StreamTransport::did_recv_CLOSECONF( CLOSECONF &&packet ) { - SPDLOG_DEBUG("{} {}", __FUNCTION__, this->src_addr.to_string()); - if(!packet.validate()) { return; } From 914bcf0d36e20fcd450bf7aa41e4dde9c1dc4ece Mon Sep 17 00:00:00 2001 From: KotaHemanthIITD <4825491-KotaHemanthIITD@users.noreply.gitlab.com> Date: Wed, 21 Apr 2021 10:58:24 +0530 Subject: [PATCH 14/14] remove unnecessary changes --- stream/examples/stream_simulated.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/stream/examples/stream_simulated.cpp b/stream/examples/stream_simulated.cpp index b52fa4c6..fbaf9e95 100644 --- a/stream/examples/stream_simulated.cpp +++ b/stream/examples/stream_simulated.cpp @@ -85,9 +85,7 @@ struct Delegate { transport.send(std::move(buf)); } - void did_close(TransportType &, uint16_t) { - SPDLOG_INFO("Transport Closed"); - } + void did_close(TransportType &, uint16_t) {} bool should_accept(SocketAddress const &) { return true; @@ -116,7 +114,6 @@ struct Delegate { }; int main() { - Simulator& simulator = Simulator::default_instance; NetworkConditioner nc; NetworkType network(nc);