From 618326993faba46512f4aa7924d0c70cdc711288 Mon Sep 17 00:00:00 2001 From: victor Date: Mon, 26 Oct 2009 15:27:30 +0000 Subject: [PATCH] barely works git-svn-id: https://ttuki.vtt.fi/svn/p2p-next/TUD/p2tp/trunk@478 e16421f0-f15b-0410-abcd-98678b794739 --- SConstruct | 6 +- bins.cpp | 21 +- bins.h | 6 +- compat/hirestimeofday.cpp | 2 +- compat/unixio.cpp | 7 +- compat/unixio.h | 3 + datagram.cpp | 42 ++-- datagram.h | 23 ++- doc/cc-states.png | Bin 0 -> 124774 bytes doc/sofi.jpg | Bin 0 -> 65449 bytes doc/state-diagram.pdf | Bin 0 -> 56302 bytes ext/ledbat_controller.cpp | 10 +- ext/seq_picker.cpp | 31 +-- ext/simple_selector.cpp | 1 - p2tp.cpp | 47 ++++- p2tp.h | 121 +++++++---- sendrecv.cpp | 413 +++++++++++++++++++++++++------------- tests/SConscript | 8 + tests/binstest2.cpp | 31 ++- tests/connecttest.cpp | 31 +-- tests/ledbattest.cpp | 1 + tests/transfertest.cpp | 5 +- transfer.cpp | 69 +++++-- 23 files changed, 619 insertions(+), 259 deletions(-) create mode 100644 doc/cc-states.png create mode 100644 doc/sofi.jpg create mode 100644 doc/state-diagram.pdf diff --git a/SConstruct b/SConstruct index 33970ee..c28c801 100644 --- a/SConstruct +++ b/SConstruct @@ -26,7 +26,9 @@ DEBUG = True TestDir='tests' target = 'p2tp' -source = [ 'bin64.cpp','hashtree.cpp','datagram.cpp','bins.cpp', 'transfer.cpp', 'compat/hirestimeofday.cpp', 'compat/util.cpp'] +source = [ 'bin64.cpp','hashtree.cpp','datagram.cpp','bins.cpp', + 'transfer.cpp', 'p2tp.cpp', 'sendrecv.cpp', + 'compat/hirestimeofday.cpp', 'compat/util.cpp'] env = Environment() if sys.platform == "win32": @@ -83,7 +85,7 @@ else: cpppath = "" print "To use external libs, set CPPPATH environment variable to list of colon-separated include dirs" env.Append(CPPPATH=".:"+cpppath) - env.Append(LINKFLAGS="--static") + #env.Append(LINKFLAGS="--static") #if DEBUG: # env.Append(CXXFLAGS="-g") diff --git a/bins.cpp b/bins.cpp index f5a32b6..68dca27 100644 --- a/bins.cpp +++ b/bins.cpp @@ -317,13 +317,25 @@ void bins::remove (bins& b) { } +bin64_t bins::cover(bin64_t val) { + iterator i(this,val,false); + while (i.pos!=val && !i.solid()) + i.towards(val); + //if (!i.half && !halves[0]) + // return bin64_t::ALL; + return i.pos; +} + + bin64_t bins::find_filtered - (bins& filter, const bin64_t range, const uint8_t layer, fill_t seek) + (bins& filter, bin64_t range, const uint8_t layer, fill_t seek) { + if (range==bin64_t::ALL) + range = bin64_t ( height>filter.height ? height : filter.height, 0 ); iterator i(this,range,true), j(&filter,range,true); fill_t stop = seek==EMPTY ? FILLED : EMPTY; while (true) { - while ( i.bin().layer()>layer && (i.deep() || *i!=stop || j.deep() || *j!=EMPTY) ) + while ( i.bin().layer()>layer && (i.deep() || *i!=stop || j.deep() || *j!=FILLED) ) i.left(), j.left(); // TODO may optimize a lot here if (i.bin().layer()==layer && !i.deep() && *i==seek && *j==EMPTY) return i.bin(); @@ -337,7 +349,10 @@ bin64_t bins::find_filtered return bin64_t::NONE; } -void bins::set_range (bins& origin, bin64_t range) { // FIXME unite with remove(); do bitwise() +// FIXME unite with remove(); do bitwise() +void bins::copy_range (bins& origin, bin64_t range) { + if (range==bin64_t::ALL) + range = bin64_t ( height>origin.height ? height : origin.height, 0 ); iterator zis(this,range,true), zat(&origin,range,true); while (zis.pos.within(range)) { while (zis.deep() || zat.deep()) { diff --git a/bins.h b/bins.h index 86b5d04..919f893 100644 --- a/bins.h +++ b/bins.h @@ -26,12 +26,12 @@ public: void set (bin64_t bin, fill_t val=FILLED); - void set_range (bins& origin, bin64_t range); + void copy_range (bins& origin, bin64_t range); bin64_t find (const bin64_t range, const uint8_t layer, fill_t seek=EMPTY) ; bin64_t find_filtered - (bins& filter, const bin64_t range, const uint8_t layer, fill_t seek=EMPTY) ; + (bins& filter, bin64_t range, const uint8_t layer, fill_t seek=EMPTY) ; void remove (bins& b); @@ -41,6 +41,8 @@ public: uint32_t size() { return cells_allocated; } + bin64_t cover(bin64_t val); + bool empty () const { return !deep(0) && !halves[0]; } static bool is_mixed (uint16_t val) { return val!=EMPTY && val!=FILLED; } diff --git a/compat/hirestimeofday.cpp b/compat/hirestimeofday.cpp index 6a03c00..f5aad7c 100644 --- a/compat/hirestimeofday.cpp +++ b/compat/hirestimeofday.cpp @@ -5,7 +5,7 @@ */ #include -#include "compat/hirestimeofday.h" +#include "hirestimeofday.h" #ifndef _WIN32 #include diff --git a/compat/unixio.cpp b/compat/unixio.cpp index 1c369a6..01b08ea 100644 --- a/compat/unixio.cpp +++ b/compat/unixio.cpp @@ -2,10 +2,11 @@ * Written by Arno Bakker * see LICENSE.txt for license information */ +#ifdef _WIN32 -#include "compat/unixio.h" -#include +#include "unixio.h" #include +#include #include size_t pread(int fildes, void *buf, size_t nbyte, long offset) @@ -26,3 +27,5 @@ int inet_aton(const char *cp, struct in_addr *inp) inp->S_un.S_addr = inet_addr(cp); return 1; } + +#endif diff --git a/compat/unixio.h b/compat/unixio.h index e36a1f1..94255c1 100644 --- a/compat/unixio.h +++ b/compat/unixio.h @@ -4,6 +4,7 @@ * * Defines UNIX like I/O calls and parameters for Win32 */ +#ifdef _WIN32 #ifndef UNIXIO_H_ #define UNIXIO_H_ @@ -23,3 +24,5 @@ size_t pwrite(int fildes, const void *buf, size_t nbyte, long offset); int inet_aton(const char *cp, struct in_addr *inp); #endif /* UNIXIO_H_ */ + +#endif // WIN32 \ No newline at end of file diff --git a/datagram.cpp b/datagram.cpp index 5edadd7..ea6e60f 100644 --- a/datagram.cpp +++ b/datagram.cpp @@ -20,14 +20,33 @@ namespace p2tp { tint Datagram::now = Datagram::Time(); +tint Datagram::epoch = now; uint32_t Datagram::Address::LOCALHOST = INADDR_LOOPBACK; +char* Datagram::TimeStr (tint time) { + static char ret_str[128]; + if (time==0) + time = now; + time -= epoch; + int hours = time/TINT_HOUR; + time %= TINT_HOUR; + int mins = time/TINT_MIN; + time %= TINT_MIN; + int secs = time/TINT_SEC; + time %= TINT_SEC; + int msecs = time/TINT_MSEC; + time %= TINT_MSEC; + int usecs = time/TINT_uSEC; + sprintf(ret_str,"%i_%02i_%02i_%03i_%03i",hours,mins,secs,msecs,usecs); + return ret_str; +} + int Datagram::Send () { int r = sendto(sock,(const char *)buf+offset,length-offset,0, (struct sockaddr*)&(addr.addr),sizeof(struct sockaddr_in)); - offset=0; - length=0; - now = Time(); + //offset=0; + //length=0; + Time(); return r; } @@ -36,22 +55,19 @@ int Datagram::Recv () { offset = 0; length = recvfrom (sock, (char *)buf, MAXDGRAMSZ, 0, (struct sockaddr*)&(addr), &addrlen); - if (length<0) + if (length<0) // FIXME FIXME FIXME #ifdef _WIN32 PLOG(ERROR)<<"on recv" << WSAGetLastError() << "\n"; #else PLOG(ERROR)<<"on recv"; #endif - now = Time(); + Time(); return length; } SOCKET Datagram::Wait (int sockcnt, SOCKET* sockets, tint usec) { - // ARNOTODO: LOG commented out, it causes a crash on win32 (in a strlen() - // done as part of a std::local::name() ?? - // - //LOG(INFO)<<"waiting for "<0) { for (int i=0; i<=sockcnt; i++) if (FD_ISSET(sockets[i],&bases)) return sockets[i]; - } else if (sel<0) + } else if (sel<0) { #ifdef _WIN32 PLOG(ERROR)<<"select fails" << WSAGetLastError() << "\n"; #else PLOG(ERROR)<<"select fails"; #endif - - // Arno: may return 0 when timeout expired - return sel; + } + return -1; } tint Datagram::Time () { diff --git a/datagram.h b/datagram.h index 45099e2..48d09ee 100644 --- a/datagram.h +++ b/datagram.h @@ -34,6 +34,13 @@ namespace p2tp { +typedef int64_t tint; +#define TINT_HOUR ((tint)1000000*60*60) +#define TINT_MIN ((tint)1000000*60) +#define TINT_SEC ((tint)1000000) +#define TINT_MSEC ((tint)1000) +#define TINT_uSEC ((tint)1) +#define TINT_NEVER ((tint)0x7fffffffffffffffLL) #define MAXDGRAMSZ 1400 #ifndef _WIN32 #define INVALID_SOCKET -1 @@ -62,13 +69,21 @@ struct Datagram { init(ipv4addr,port); } Address(const struct sockaddr_in& address) : addr(address) {} + uint32_t ipv4 () const { return ntohl(addr.sin_addr.s_addr); } + uint16_t port () const { return ntohs(addr.sin_port); } operator sockaddr_in () const {return addr;} - bool operator == (const Address& b) { + bool operator == (const Address& b) const { return addr.sin_family==b.addr.sin_family && addr.sin_port==b.addr.sin_port && addr.sin_addr.s_addr==b.addr.sin_addr.s_addr; } - bool operator != (const Address& b) { return !(*this==b); } + std::string str () const { + char s[32]; + sprintf(s,"%i.%i.%i.%i:%i",ipv4()>>24,(ipv4()>>16)&0xff, + (ipv4()>>8)&0xff,ipv4()&0xff,port()); + return std::string(s); + } + bool operator != (const Address& b) const { return !(*this==b); } }; Address addr; @@ -79,8 +94,9 @@ struct Datagram { static SOCKET Bind(Address address); static void Close(int port); static tint Time(); + static char* TimeStr(tint time=0); static SOCKET Wait (int sockcnt, SOCKET* sockets, tint usec=0); - static tint now; + static tint now, epoch; Datagram (SOCKET socket, const Address addr_) : addr(addr_), offset(0), length(0), sock(socket) {} @@ -167,6 +183,7 @@ struct Datagram { }; std::string sock2str (struct sockaddr_in addr); +#define dprintf(...) printf(__VA_ARGS__) } diff --git a/doc/cc-states.png b/doc/cc-states.png new file mode 100644 index 0000000000000000000000000000000000000000..57b5d499cbe08ec87c34f77f588e91f1f96c634f GIT binary patch literal 124774 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

&&WbY_hYfUV_S2jZj|(}7M-|_ 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 z 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

qYZHW%!uu~SD;^i!#4gS?kzGNz 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%0A=OTav)nZwp(}8+W`o2cF~^>Dv&4 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 OFqaBMQ?XJW7WO|`hje!U literal 0 HcmV?d00001 diff --git a/doc/sofi.jpg b/doc/sofi.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fe34680559c1a926f6e5aba3057038d684bb3a23 GIT binary patch literal 65449 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 z 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 literal 0 HcmV?d00001 diff --git a/ext/ledbat_controller.cpp b/ext/ledbat_controller.cpp index 007a799..8febc9c 100644 --- a/ext/ledbat_controller.cpp +++ b/ext/ledbat_controller.cpp @@ -18,8 +18,8 @@ public: int cwnd_, peer_cwnd_, in_flight_; bin64_t last_bin_sent_; public: - LedbatController () : dev_avg_(0), rtt_avg_(TINT_SEC), last_send_time_(0), - last_recv_time_(0), cwnd_(1), peer_cwnd_(1), in_flight_(0) { + LedbatController (int chid) : dev_avg_(0), rtt_avg_(TINT_SEC), last_send_time_(0), + last_recv_time_(0), cwnd_(1), peer_cwnd_(1), in_flight_(0), CongestionController(chid) { } tint rtt_avg () { @@ -31,6 +31,7 @@ public: } int cwnd () { + // check for timeouts return cwnd_; } @@ -39,7 +40,7 @@ public: } int free_cwnd ( ){ - return cwnd_ - in_flight_; + return cwnd() - in_flight_; } tint next_send_time ( ){ @@ -63,7 +64,8 @@ public: void OnAckRcvd(bin64_t b, tint peer_stamp) { if (last_bin_sent_!=b) return; - rtt_avg_ = (rtt_avg_*7 + (Datagram::now-last_send_time_)) >> 3; // van Jac + if (peer_stamp!=TINT_NEVER) + rtt_avg_ = (rtt_avg_*7 + (Datagram::now-last_send_time_)) >> 3; // van Jac in_flight_--; } diff --git a/ext/seq_picker.cpp b/ext/seq_picker.cpp index 1001d8e..eae0525 100644 --- a/ext/seq_picker.cpp +++ b/ext/seq_picker.cpp @@ -13,34 +13,41 @@ using namespace p2tp; class SeqPiecePicker : public PiecePicker { - bins hint_out_; - FileTransfer* file_; + bins ack_hint_out_; + FileTransfer* file_; public: - SeqPiecePicker (FileTransfer* file_to_pick_from) : file_(file_to_pick_from), hint_out_() { + SeqPiecePicker (FileTransfer* file_to_pick_from) : file_(file_to_pick_from), ack_hint_out_() { + ack_hint_out_.copy_range(file_->ack_out(),bin64_t::ALL); } - virtual bin64_t Pick (bins& from, uint8_t layer) { - bins may_pick = from; - may_pick.remove (file_->ack_out()); - may_pick.remove (hint_out_); - for (int l=layer; l>=0; l--) { + virtual bin64_t Pick (bins& offer, uint8_t layer) { + + bin64_t hint = offer.find_filtered + (ack_hint_out_,bin64_t::ALL,layer,bins::FILLED); + if (hint==bin64_t::NONE) + return hint; // TODO: end-game mode + while (hint.layer()>layer) + hint = hint.left(); + ack_hint_out_.set(hint); + return hint; + /*for (int l=layer; l>=0; l--) { for(int i=0; ipeak_count(); i++) { bin64_t pick = may_pick.find(file_->peak(i),l,bins::FILLED); if (pick!=bin64_t::NONE) return pick; } } - return bin64_t::NONE; + return bin64_t::NONE;*/ } virtual void Received (bin64_t b) { - hint_out_.set(b,bins::EMPTY); + ack_hint_out_.set(b,bins::FILLED); } - virtual void Snubbed (bin64_t b) { - hint_out_.set(b,bins::EMPTY); + virtual void Expired (bin64_t b) { + ack_hint_out_.copy_range(file_->ack_out(),b); } }; \ No newline at end of file diff --git a/ext/simple_selector.cpp b/ext/simple_selector.cpp index 2f165fa..790a205 100644 --- a/ext/simple_selector.cpp +++ b/ext/simple_selector.cpp @@ -36,4 +36,3 @@ public: } }; -PeerSelector* Channel::peer_selector = new SimpleSelector(); \ No newline at end of file diff --git a/p2tp.cpp b/p2tp.cpp index bbc7aa7..fedd68f 100644 --- a/p2tp.cpp +++ b/p2tp.cpp @@ -29,14 +29,23 @@ p2tp::tint Channel::TIMEOUT = TINT_SEC*60; std::vector Channel::channels(1); int Channel::sockets[8] = {0,0,0,0,0,0,0,0}; int Channel::socket_count = 0; - - -Channel::Channel (FileTransfer* file, int socket, struct sockaddr_in peer_addr) : - file_(file), peer(peer_addr), peer_channel_id(0), - socket_(socket) // FIXME +Address Channel::tracker; +tbqueue Channel::send_queue; +#include "ext/dummy_controller.cpp" +#include "ext/simple_selector.cpp" +PeerSelector* Channel::peer_selector = new SimpleSelector(); + +Channel::Channel (FileTransfer* file, int socket, Address peer_addr) : + file_(file), peer_(peer_addr), peer_channel_id_(0), pex_out_(0), + socket_(socket==-1?sockets[0]:socket), // FIXME + own_id_mentioned_(false), next_send_time_(0) { + if (peer_==Address()) + peer_ = tracker; this->id = channels.size(); channels.push_back(this); + cc_ = new BasicController(); + RequeueSend(Datagram::now); } @@ -45,6 +54,9 @@ Channel::~Channel () { } +void p2tp::SetTracker(const Address& tracker) { + Channel::tracker = tracker; +} int Channel::DecodeID(int scrambled) { @@ -76,6 +88,27 @@ void p2tp::Loop (tint till) { } +int p2tp::Open (const char* filename, const Sha1Hash& hash) { + FileTransfer* ft = new FileTransfer(filename, hash); + int fdes = ft->file_descriptor(); + if (fdes>0) { + + /*if (FileTransfer::files.size()FileTransfer::files.size() && FileTransfer::files[fd]) @@ -111,6 +144,10 @@ size_t p2tp::SeqComplete (int fdes) { return 0; } + + + + /**

P2TP handshake

Basic rules:
    diff --git a/p2tp.h b/p2tp.h index 6b50663..9b4ecb2 100644 --- a/p2tp.h +++ b/p2tp.h @@ -70,11 +70,13 @@ namespace p2tp { tintbin(const tintbin& b) : time(b.time), bin(b.bin) {} tintbin() : time(0), bin(bin64_t::NONE) {} tintbin(tint time_, bin64_t bin_) : time(time_), bin(bin_) {} + tintbin(bin64_t bin_) : time(Datagram::now), bin(bin_) {} }; + typedef std::deque tbqueue; typedef std::deque binqueue; - typedef Datagram::Address Address; + typedef Datagram::Address Address; typedef enum { P2TP_HANDSHAKE = 0, @@ -111,6 +113,13 @@ namespace p2tp { accept or remember or drop. Returns true => ACK is sent. */ bool OfferData (bin64_t bin, const uint8_t* data, size_t length); + /** While we need to feed ACKs to every peer, we try (1) avoid + unnecessary duplication and (2) keep minimum state. Thus, + we use a rotating queue of bin completion events. */ + //bin64_t RevealAck (uint64_t& offset); + /** Rotating queue read for channels of this transmission. */ + uint32_t RevealChannel (int& i); + static FileTransfer* Find (const Sha1Hash& hash); static FileTransfer* file (int fd) { return fd handshake_in_; + std::deque
    pex_in_; + /** Messages we are accepting. */ + uint64_t cap_out_; + protected: void SetSize(size_t bytes); void Submit(); @@ -183,6 +199,8 @@ namespace p2tp { Sha1Hash DeriveRoot(); void SavePeaks(); void LoadPeaks(); + void OnDataIn (bin64_t pos); + void OnPexIn (const Address& addr); friend class Channel; friend size_t Size (int fdes); @@ -192,25 +210,24 @@ namespace p2tp { friend void Close (int fd) ; }; - class CongestionController { - public: - virtual tint rtt_avg() = 0; - virtual tint dev_avg() = 0; - virtual tint next_send_time() = 0; - virtual int cwnd() = 0; - virtual int peer_cwnd() = 0; + struct CongestionController { + CongestionController () {} virtual int free_cwnd() = 0; - virtual void OnDataSent(bin64_t b) = 0; - virtual void OnDataRecvd(bin64_t b) = 0; - virtual void OnAckRcvd(const tintbin& tsack) = 0; - virtual ~CongestionController() = 0; + virtual tint RoundTripTime() = 0; + virtual tint RoundTripTimeoutTime() = 0; + virtual int PeerBPS() = 0; + virtual float PeerCWindow() = 0; + virtual tint OnDataSent(bin64_t b) = 0; + virtual tint OnDataRecvd(bin64_t b) = 0; + virtual tint OnAckRcvd(bin64_t ackd, tint peer_time=0) = 0; + virtual ~CongestionController() {} }; class PiecePicker { public: - virtual bin64_t Pick (bins& from, uint8_t layer) = 0; + virtual bin64_t Pick (bins& offered, uint8_t layer) = 0; + virtual void Expired (bin64_t b) = 0; virtual void Received (bin64_t b) = 0; - virtual void Snubbed (bin64_t b) = 0; }; class PeerSelector { @@ -235,18 +252,18 @@ namespace p2tp { hash or a fragment of it into every datagram.) */ class Channel { public: - Channel (FileTransfer* file, int socket, struct sockaddr_in peer); + Channel (FileTransfer* file, int socket=-1, Address peer=Address()); ~Channel(); static void Recv (int socket); static void Loop (tint till); void Recv (Datagram& dgram); - tint Send (); + void Send (); void OnAck (Datagram& dgram); void OnAckTs (Datagram& dgram); - void OnData (Datagram& dgram); + bin64_t OnData (Datagram& dgram); void OnHint (Datagram& dgram); void OnHash (Datagram& dgram); void OnPex (Datagram& dgram); @@ -257,10 +274,13 @@ namespace p2tp { void AddHint (Datagram& dgram); void AddUncleHashes (Datagram& dgram, bin64_t pos); void AddPeakHashes (Datagram& dgram); + void AddPex (Datagram& dgram); const std::string id_string () const; /** A channel is "established" if had already sent and received packets. */ - bool is_established () { return peer_channel_id && own_id_mentioned; } + bool is_established () { return peer_channel_id_ && own_id_mentioned_; } + FileTransfer& file() { return *file_; } + const Address& peer() const { return peer_; } static int DecodeID(int scrambled); static int EncodeID(int unscrambled); @@ -268,52 +288,64 @@ namespace p2tp { return i channels; static int sockets[8]; static int socket_count; static tint last_tick; - friend int Listen (Datagram::Address addr); - friend void Shutdown (int sock_des); - friend void AddPeer (Datagram::Address address, const Sha1Hash& root); + static Address tracker; + static std::vector channels; + + friend int Listen (Datagram::Address addr); + friend void Shutdown (int sock_des); + friend void AddPeer (Datagram::Address address, const Sha1Hash& root); + friend void SetTracker(const Address& tracker); + friend int Open (const char*, const Sha1Hash&) ; // FIXME + + friend class FileTransfer; // FIXME!!! }; @@ -335,7 +367,9 @@ namespace p2tp { root hash is zero, the peer might be talked to regarding any transmission (likely, a tracker, cache or an archive). */ void AddPeer (Datagram::Address address, const Sha1Hash& root=Sha1Hash::ZERO); - + + void SetTracker(const Address& tracker); + /** Returns size of the file in bytes, 0 if unknown. Might be rounded up to a kilobyte before the transmission is complete. */ size_t Size (int fdes); @@ -349,12 +383,15 @@ namespace p2tp { //uint32_t Width (const tbinvec& v); - void LibraryInit(void); + +// FIXME kill this macro +#define RETLOG(str) { fprintf(stderr,"%s\n",str); return; } + /** Must be called by any client using the library */ + void LibraryInit(void); } // namespace end -#define RETLOG(str) { LOG(WARNING)<rtt_avg()*8; + tint timed_out = Datagram::now - cc_->RoundTripTime()*8; while ( !hint_out.empty() && hint_out.front().time < timed_out ) { file().picker()->Snubbed(hint_out.front().bin); hint_out.pop_front(); } -} +}*/ void Channel::AddHandshake (Datagram& dgram) { - dgram.Push8(P2TP_HANDSHAKE); - dgram.Push32(EncodeID(id)); - if (!peer_channel_id) { // initiating + if (!peer_channel_id_) { // initiating dgram.Push8(P2TP_HASH); dgram.Push32(bin64_t::ALL32); dgram.PushHash(file().root_hash()); + dprintf("%s #%i +hash ALL %s\n", + Datagram::TimeStr(),id,file().root_hash().hex().c_str()); } + dgram.Push8(P2TP_HANDSHAKE); + dgram.Push32(EncodeID(id)); + dprintf("%s #%i +hs\n",Datagram::TimeStr(),id); AddAck(dgram); - //DLOG(INFO)<<"#"<id_string(); } -tint Channel::Send () { - Datagram dgram(socket_,peer); - dgram.Push32(peer_channel_id); +void Channel::Send () { + Datagram dgram(socket_,peer()); + dgram.Push32(peer_channel_id_); + bin64_t data = bin64_t::NONE; if ( is_established() ) { AddAck(dgram); AddHint(dgram); - if (cc->free_cwnd() && Datagram::now>=cc->next_send_time()) { - bin64_t data = AddData(dgram); - cc->OnDataSent(data); - } + if (cc_->free_cwnd()) + data = AddData(dgram); } else { AddHandshake(dgram); + AddAck(dgram); } - DLOG(INFO)<<"#"<next_send_time(); + if (dgram.size()==4) // only the channel id; bare keep-alive + data = bin64_t::ALL; + RequeueSend(cc_->OnDataSent(data)); } void Channel::AddHint (Datagram& dgram) { - CleanStaleHints(); - uint64_t outstanding = 0; - for(tbqueue::iterator i=hint_out.begin(); i!=hint_out.end(); i++) - outstanding += i->bin.width(); - uint64_t kbps = TINT_SEC * cc->peer_cwnd() / cc->rtt_avg(); - if (outstanding>kbps) // have enough - return; - uint8_t layer = 0; - while( (1<Pick(ack_in,layer); - if (hint==bin64_t::NONE) - return; - dgram.Push8(P2TP_HINT); - dgram.Push32(hint); - hint_out.push_back(tintbin(Datagram::now,hint)); - DLOG(INFO)<<"#"<bin.width(); + + float peer_cwnd = cc_->PeerBPS() * cc_->RoundTripTime() / TINT_SEC; + + if ( hinted*1024 < peer_cwnd*4 ) { + + uint8_t layer = 0; + bin64_t hint = file().picker().Pick(ack_in_,layer); + + if (hint!=bin64_t::NONE) { + this->hint_out_.push_back(tintbin(hint)); + dgram.Push8(P2TP_HINT); + dgram.Push32(hint); + dprintf("%s #%i +hint (%i,%lli)\n",Datagram::TimeStr(),id,hint.layer(),hint.offset()); + } + + } } @@ -128,54 +165,60 @@ bin64_t Channel::AddData (Datagram& dgram) { if (!file().size()) // know nothing return bin64_t::NONE; bin64_t tosend = DequeueHint(); - if (tosend==bin64_t::NONE) { - //LOG(WARNING)<id_string()<<" no idea what to send"; - cc->OnDataSent(bin64_t::NONE); - return bin64_t::NONE; - } - if (ack_in.empty() && file().size()) - AddPeakHashes(dgram); - AddUncleHashes(dgram,tosend); - uint8_t buf[1024]; - size_t r = pread(file().file_descriptor(),buf,1024,tosend.base_offset()<<10); // TODO: ??? corrupted data, retries - if (r<0) { - PLOG(ERROR)<<"error on reading"; - return 0; - } - assert(dgram.space()>=r+4+1); - dgram.Push8(P2TP_DATA); - dgram.Push32(tosend); - dgram.Push(buf,r); - DLOG(INFO)<<"#"<=r+4+1); + dgram.Push8(P2TP_DATA); + dgram.Push32(tosend); + dgram.Push(buf,r); + dprintf("%s #%i +data (%lli)\n",Datagram::TimeStr(),id,tosend.base_offset()); return tosend; } void Channel::AddAck (Datagram& dgram) { - if (data_in_.time) { + if (data_in_.bin!=bin64_t::NONE) { + bin64_t pos = data_in_.bin; dgram.Push8(P2TP_ACK_TS); - dgram.Push32(data_in_.bin); + dgram.Push32(pos); dgram.Push64(data_in_.time); - data_in_.time = 0; - DLOG(INFO)<<"#"<OnDataRecvd(data)); } @@ -193,54 +237,88 @@ void Channel::OnHash (Datagram& dgram) { bin64_t pos = dgram.Pull32(); Sha1Hash hash = dgram.PullHash(); file().OfferHash(pos,hash); - DLOG(INFO)<<"#"<OnDataRecvd(pos); - CleanStaleHints(); + uint8_t *data; + int length = dgram.Pull(&data,1024); + bool ok = file().OfferData(pos, data, length) ; + dprintf("%s #%i %cdata (%lli)\n",Datagram::TimeStr(),id,ok?'-':'!',pos.offset()); + data_in_ = tintbin(Datagram::now,pos); + return ok ? pos : bin64_t::none(); } void Channel::OnAck (Datagram& dgram) { // note: no bound checking bin64_t pos = dgram.Pull32(); - DLOG(INFO)<<"#"<OnAckRcvd(pos,0)); } void Channel::OnAckTs (Datagram& dgram) { bin64_t pos = dgram.Pull32(); tint ts = dgram.Pull64(); - DLOG(INFO)<<"#"<OnAckRcvd(tintbin(ts,pos)); + // TODO sanity check + dprintf("%s #%i -ackts (%i,%lli) %s\n", + Datagram::TimeStr(),id,pos.layer(),pos.offset(),Datagram::TimeStr(ts)); + ack_in_.set(pos); + RequeueSend(cc_->OnAckRcvd(pos,ts)); } void Channel::OnHint (Datagram& dgram) { bin64_t hint = dgram.Pull32(); - hint_in.push_back(hint); + hint_in_.push_back(hint); + dprintf("%s #%i -hint (%i,%lli)\n",Datagram::TimeStr(),id,hint.layer(),hint.offset()); } void Channel::OnHandshake (Datagram& dgram) { - peer_channel_id = dgram.Pull32(); + if (!peer_channel_id_) + cc_->OnAckRcvd(bin64_t::ALL); + peer_channel_id_ = dgram.Pull32(); + dprintf("%s #%i -hs %i\n",Datagram::TimeStr(),id,peer_channel_id_); // FUTURE: channel forking } void Channel::OnPex (Datagram& dgram) { - uint32_t addr = dgram.Pull32(); + uint32_t ipv4 = dgram.Pull32(); uint16_t port = dgram.Pull16(); - if (peer_selector) - peer_selector->AddPeer(Datagram::Address(addr,port),file().root_hash()); + Address addr(ipv4,port); + //if (peer_selector) + // peer_selector->AddPeer(Datagram::Address(addr,port),file().root_hash()); + file_->pex_in_.push_back(addr); + if (file_->pex_in_.size()>1000) + file_->pex_in_.pop_front(); + static int ENOUGH_PEERS_THRESHOLD = 20; + if (file_->channel_count()RevealChannel(i)) != -1 ) { + if (channels[i]->peer()==addr) + break; + } + if (chno==-1) + new Channel(file_,socket_,addr); + } +} + + +void Channel::AddPex (Datagram& dgram) { + int ch = file().RevealChannel(this->pex_out_); + if (ch==-1) + return; + Address a = channels[ch]->peer(); + dgram.Push8(P2TP_PEX_ADD); + dgram.Push32(a.ipv4()); + dgram.Push16(a.port()); } @@ -265,6 +343,7 @@ void Channel::Recv (int socket) { FileTransfer* file = FileTransfer::Find(hash); if (!file) RETLOG ("hash unknown, no such file"); + dprintf("%s #0 -hash ALL %s\n",Datagram::TimeStr(),hash.hex().c_str()); channel = new Channel(file, socket, data.address()); } else { mych = DecodeID(mych); @@ -273,11 +352,11 @@ void Channel::Recv (int socket) { channel = channels[mych]; if (!channel) RETLOG ("channel is closed"); - if (channel->peer != data.address()) + if (channel->peer() != data.address()) RETLOG ("invalid peer address"); - channel->Recv(data); + channel->own_id_mentioned_ = true; } - channel->Send(); + channel->Recv(data); } @@ -286,39 +365,97 @@ bool tblater (const tintbin& a, const tintbin& b) { } -void Channel::Loop (tint time) { - - tint untiltime = Datagram::Time()+time; - tbqueue send_queue; - for(int i=0; iSend(); - if (next_time!=TINT_NEVER) { - send_queue.push_back(tintbin(next_time,chid)); - push_heap(send_queue.begin(),send_queue.end(),tblater); - } else { - delete sender; - channels[chid] = NULL; - } + tint limit = Datagram::Time() + howlong; + + do { + + tint send_time(TINT_NEVER); + Channel* sender(NULL); + while (!send_queue.empty()) { + send_time = send_queue.front().time; + sender = channel((int)send_queue.front().bin); + if (sender && sender->next_send_time_==send_time) + break; + sender = NULL; // it was a stale entry + pop_heap(send_queue.begin(), send_queue.end(), tblater); + send_queue.pop_back(); } - - } - + if (send_time>limit) + send_time = limit; + if (sender && send_time<=Datagram::now) { + dprintf("%s #%i sch_send %s\n",Datagram::TimeStr(),sender->id, + Datagram::TimeStr(send_time)); + sender->Send(); + pop_heap(send_queue.begin(), send_queue.end(), tblater); + send_queue.pop_back(); + } else { + tint towait = send_time - Datagram::now; + dprintf("%s waiting %lliusec\n",Datagram::TimeStr(),towait); + int rd = Datagram::Wait(socket_count,sockets,towait); + if (rd!=-1) + Recv(rd); + } + + } while (Datagram::Time() just listen + + tintbin next_send = send_queue.front(); + tint wake_on = next_send.time; + Channel* sender = channel(next_send.bin); + + // BUG BUG BUG filter stale timeouts here + + //if (wake_on<=untiltime) { + pop_heap(send_queue.begin(), send_queue.end(), tblater); + send_queue.pop_back(); + //}// else + //sender = 0; // BUG will never wake up + + if (sender->next_send_time_!=next_send.time) + continue; + + if (wake_onuntiltime) + wake_on = untiltime; + tint towait = min(wake_on-Datagram::now,TINT_SEC); + dprintf("%s waiting %lliusec\n",Datagram::TimeStr(),towait); + int rd = Datagram::Wait(socket_count,sockets,towait); + if (rd!=-1) + Recv(rd); + // BUG WRONG BUG WRONG another may need to send + if (sender) { + dprintf("%s #%i sch_send %s\n",Datagram::TimeStr(),sender->id, + Datagram::TimeStr(next_send.time)); + sender->Send(); + // if (sender->cc_->next_send_time==TINT_NEVER) + } + + } + + */ \ No newline at end of file diff --git a/tests/SConscript b/tests/SConscript index f7f8d0f..9ff2066 100644 --- a/tests/SConscript +++ b/tests/SConscript @@ -79,3 +79,11 @@ env.Program( CPPPATH=cpppath, LIBS=libs, LIBPATH=libpath ) + +env.Program( + target='connecttest', + source=['connecttest.cpp'], + CPPPATH=cpppath, + LIBS=libs, + LIBPATH=libpath ) + diff --git a/tests/binstest2.cpp b/tests/binstest2.cpp index bbe7796..225f985 100755 --- a/tests/binstest2.cpp +++ b/tests/binstest2.cpp @@ -227,7 +227,34 @@ TEST(BinsTest,FindFiltered) { } -TEST(BinsTest,SetRange) { + +TEST(BinsTest, Cover) { + + bins b; + b.set(bin64_t(2,0)); + b.set(bin64_t(4,1)); + EXPECT_EQ(bin64_t(4,1),b.cover(bin64_t(0,30))); + //bins c; + //EXPECT_EQ(bin64_t::ALL,b.cover(bin64_t(0,30))); + +} + + +TEST(BinsTest,FindFiltered2) { + + bins data, filter; + for(int i=0; i<1024; i+=2) + data.set(bin64_t(0,i)); + for(int j=1; j<1024; j+=2) + filter.set(bin64_t(0,j)); + filter.set(bin64_t(0,501),bins::EMPTY); + EXPECT_EQ(bin64_t(0,501),data.find_filtered(filter,bin64_t(10,0),0)); + data.set(bin64_t(0,501)); + EXPECT_EQ(bin64_t::NONE,data.find_filtered(filter,bin64_t(10,0),0)); + +} + +TEST(BinsTest,CopyRange) { bins data, add; data.set(bin64_t(2,0)); data.set(bin64_t(2,2)); @@ -236,7 +263,7 @@ TEST(BinsTest,SetRange) { add.set(bin64_t(1,4)); add.set(bin64_t(0,13)); add.set(bin64_t(5,118)); - data.set_range(add, bin64_t(3,0)); + data.copy_range(add, bin64_t(3,0)); EXPECT_TRUE(bins::is_mixed(data.get(bin64_t(3,0)))); EXPECT_EQ(bins::EMPTY,data.get(bin64_t(2,0))); EXPECT_EQ(bins::FILLED,data.get(bin64_t(2,1))); diff --git a/tests/connecttest.cpp b/tests/connecttest.cpp index 258ccd2..b0bd23e 100644 --- a/tests/connecttest.cpp +++ b/tests/connecttest.cpp @@ -49,15 +49,21 @@ using namespace p2tp; TEST(P2TP,CwndTest) { - int f = open("big_test_file",O_RDWR|O_CREAT|O_TRUNC,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); - int size = rand()%(1<<19) + (1<<19); + + unlink("doc/sofi-copy.jpg"); + struct stat st; + ASSERT_EQ(0,stat("doc/sofi.jpg", &st)); + int size = st.st_size, sizek = (st.st_size>>10) + (st.st_size%1024?1:0) ; + + /*int f = open("big_test_file",O_RDWR|O_CREAT|O_TRUNC,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); + int size = 60<<10; //rand()%(1<<19) + (1<<19); int sizek = (size>>10) + ((size&1023)?1:0); char* b = (char*)malloc(size); for(int i=0; i=0); //ASSERT_TRUE(sock2>=0); - p2tp::AddPeer(Datagram::Address("127.0.0.1",7001)); - - int file = p2tp::Open("big_test_file"); + int file = p2tp::Open("doc/sofi.jpg"); FileTransfer* fileobj = FileTransfer::file(file); + FileTransfer::instance++; + + p2tp::SetTracker(Datagram::Address("127.0.0.1",7001)); - int copy = p2tp::Open("big_test_file_copy",fileobj->root_hash()); + int copy = p2tp::Open("doc/sofi-copy.jpg",fileobj->root_hash()); - p2tp::Loop(TINT_MSEC); + p2tp::Loop(TINT_SEC); - ASSERT_EQ(sizek<<10,p2tp::Size(copy)); - int count = 0; - while (p2tp::SeqComplete(copy)!=size && count++<(1<<14)) - p2tp::Loop(TINT_MSEC); + while (p2tp::SeqComplete(copy)!=size && count++<20) + p2tp::Loop(TINT_SEC); ASSERT_EQ(size,p2tp::SeqComplete(copy)); p2tp::Close(file); diff --git a/tests/ledbattest.cpp b/tests/ledbattest.cpp index ee6302f..21818ea 100644 --- a/tests/ledbattest.cpp +++ b/tests/ledbattest.cpp @@ -65,6 +65,7 @@ TEST(Datagram,LedbatTest) { if (4+8!=ack.Send()) fprintf(stderr,"short write\n"); fprintf(stderr,"%lli rcvd%i\n",now/TINT_SEC,seq); + //cc->OnDataRecv(bin64_t(0,seq)); // TODO: peer cwnd !!! continue; } diff --git a/tests/transfertest.cpp b/tests/transfertest.cpp index e4c4b1b..095d38b 100644 --- a/tests/transfertest.cpp +++ b/tests/transfertest.cpp @@ -72,10 +72,11 @@ TEST(TransferTest,TransferFile) { leech = new FileTransfer("copy",seed->root_hash()); EXPECT_EQ(2,leech->complete_kilo()); } - bin64_t next = leech->picker()->Pick(seed->ack_out(),0); + bin64_t next = leech->picker().Pick(seed->ack_out(),0); ASSERT_NE(bin64_t::NONE,next); + ASSERT_TRUE(next.base_offset()<5); uint8_t buf[1024]; //size_t len = seed->storer->ReadData(next,&buf); - size_t len = pread(seed->file_descriptor(),buf,1024,next.base_offset()<<10); // FIXME TEST FOR ERROR + size_t len = pread(seed->file_descriptor(),buf,1024,next.base_offset()<<10); bin64_t sibling = next.sibling(); if (sibling.base_offset()size_kilo()) leech->OfferHash(sibling, seed->hash(sibling)); diff --git a/transfer.cpp b/transfer.cpp index 7928303..059dc96 100644 --- a/transfer.cpp +++ b/transfer.cpp @@ -31,7 +31,7 @@ int FileTransfer::instance = 0; FileTransfer::FileTransfer (const char* filename, const Sha1Hash& _root_hash) : root_hash_(_root_hash), fd_(0), hashfd_(0), dry_run_(false), peak_count_(0), hashes_(NULL), error_(NULL), size_(0), sizek_(0), - complete_(0), completek_(0), seq_complete_(0) + complete_(0), completek_(0), seq_complete_(0) //, data_in_off_(0) { fd_ = open(filename,O_RDWR|O_CREAT,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); if (fd_<0) @@ -163,7 +163,8 @@ void FileTransfer::Submit () { } else hashes_[b] = Sha1Hash(hashes_[b.left()],hashes_[b.right()]); peak_hashes_[p] = hashes_[peaks_[p]]; - ack_out_.set(peaks_[p],bins::FILLED); + //ack_out_.set(peaks_[p],bins::FILLED); + OnDataIn(peaks_[p]); } root_hash_ = DeriveRoot(); Sha1Hash *hash_tmp = hashes_; @@ -200,13 +201,6 @@ void FileTransfer::OfferHash (bin64_t pos, const Sha1Hash& hash) { } -bin64_t FileTransfer::data_in (int offset) { - if (offset>data_in_.size()) - return bin64_t::NONE; - return data_in_[offset]; -} - - bool FileTransfer::OfferData (bin64_t pos, const uint8_t* data, size_t length) { if (!pos.is_base()) return false; @@ -230,7 +224,7 @@ bool FileTransfer::OfferData (bin64_t pos, const uint8_t* data, size_ //printf("g %lli %s\n",(uint64_t)pos,hash.hex().c_str()); // walk to the nearest proven hash FIXME 0-layer peak - ack_out_.set(pos,bins::FILLED); + OnDataIn(pos); pwrite(fd_,data,length,pos.base_offset()<<10); complete_ += length; completek_++; @@ -242,11 +236,45 @@ bool FileTransfer::OfferData (bin64_t pos, const uint8_t* data, size_ seq_complete_+=1024; if (seq_complete_>size_) seq_complete_ = size_; - data_in_.push_back(pos); return true; } +/*bin64_t FileTransfer::RevealAck (uint64_t& offset) { + if (offsetroot_hash_==root_hash) + if (files[i] && files[i]->root_hash()==root_hash) return files[i]; return NULL; } +void FileTransfer::OnPexIn (const Address& addr) { + pex_in_.push_back(addr); + if (pex_in_.size()>1000) + pex_in_.pop_front(); +} + std::string FileTransfer::GetTempFilename(Sha1Hash& root_hash, int instance, std::string postfix) { @@ -322,8 +356,7 @@ std::string FileTransfer::GetTempFilename(Sha1Hash& root_hash, int instance, std } - -int p2tp::Open (const char* filename, const Sha1Hash& hash) { +/*int p2tp::Open (const char* filename, const Sha1Hash& hash) { FileTransfer* ft = new FileTransfer(filename, hash); int fdes = ft->file_descriptor(); if (fdes>0) { @@ -335,6 +368,14 @@ int p2tp::Open (const char* filename, const Sha1Hash& hash) { delete ft; return -1; } +}*/ + + +uint32_t FileTransfer::RevealChannel (int& offset) { + while (offsetfile_!=this) ) + offset++; + return offset < Channel::channels.size() ? offset : -1; } -- 2.20.1