rsync (Was: Call for Community Feedback: Retiring IETF FTP Service)

Job Snijders <job@ntt.net> Thu, 26 November 2020 17:20 UTC

Return-Path: <job@ntt.net>
X-Original-To: ietf@ietfa.amsl.com
Delivered-To: ietf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 24A083A1518 for <ietf@ietfa.amsl.com>; Thu, 26 Nov 2020 09:20:50 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.101
X-Spam-Level:
X-Spam-Status: No, score=0.101 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, UNPARSEABLE_RELAY=0.001, URIBL_BLOCKED=0.001, URI_DOTEDU=1.999] autolearn=no autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 24e5oR9aTYMk for <ietf@ietfa.amsl.com>; Thu, 26 Nov 2020 09:20:48 -0800 (PST)
Received: from mail4.dllstx09.us.to.gin.ntt.net (mail4.dllstx09.us.to.gin.ntt.net [128.241.192.26]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9DC923A1516 for <ietf@ietf.org>; Thu, 26 Nov 2020 09:20:48 -0800 (PST)
Received: from bench.sobornost.net (mieli.sobornost.net [45.138.228.4]) by mail4.dllstx09.us.to.gin.ntt.net (Postfix) with ESMTPSA id 4968FEE0117; Thu, 26 Nov 2020 17:20:46 +0000 (UTC)
Received: from localhost (bench.sobornost.net [local]) by bench.sobornost.net (OpenSMTPD) with ESMTPA id 754605b8; Thu, 26 Nov 2020 17:20:43 +0000 (UTC)
Date: Thu, 26 Nov 2020 17:20:43 +0000
From: Job Snijders <job@ntt.net>
To: Dave Cridland <dave@cridland.net>
Cc: Lyndon Nerenberg <lyndon@orthanc.ca>, "ietf@ietf.org Discussion" <ietf@ietf.org>
Subject: rsync (Was: Call for Community Feedback: Retiring IETF FTP Service)
Message-ID: <X7/j64GnxKQEAnfa@bench.sobornost.net>
References: <CAKHUCzwYRsNz6qM9kwJZNByqwRCA9r+0Rp4B92-t0t2H499syw@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <CAKHUCzwYRsNz6qM9kwJZNByqwRCA9r+0Rp4B92-t0t2H499syw@mail.gmail.com>
X-Clacks-Overhead: GNU Terry Pratchett
Archived-At: <https://mailarchive.ietf.org/arch/msg/ietf/6iynuDoT5pY5Nznt_4VcudSeVe8>
X-BeenThere: ietf@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: IETF-Discussion <ietf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ietf>, <mailto:ietf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ietf/>
List-Post: <mailto:ietf@ietf.org>
List-Help: <mailto:ietf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ietf>, <mailto:ietf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 26 Nov 2020 17:20:50 -0000

On Thu, Nov 26, 2020 at 04:26:24PM +0000, Dave Cridland wrote:
> On Wed, 25 Nov 2020 at 18:03, Lyndon Nerenberg <lyndon@orthanc.ca> wrote:
> 
> > The cluster I use doesn't support rsync
> 
> I appreciate this is slightly off-topic, but given the consistent
> suggestion that "rsync" should replace FTP, perhaps this is the best place
> to ask - I can find an implementation of rsync easily enough, but I can't
> find the specification published as an open standard anywhere - do you know
> where I can find it?

Fun question!

The RSYNC algorithm is outlined in these (excellent) papers by Andrew
Tridgell: https://rsync.samba.org/~tridge/phd_thesis.pdf and
https://www.andrew.cmu.edu/course/15-749/READINGS/required/cas/tridgell96.pdf

Currently only two interoperable implementations of the RSYNC protocol exist:

GPL rsync, aka 'the original'
    source: https://github.com/WayneD/rsync
    web: https://rsync.samba.org/
    initial release: 1996

openrsync, a clean-room implementation by the OpenBSD project
    source: https://cvsweb.openbsd.org/src/usr.bin/rsync/
    web: https://www.openrsync.org/
    initial release: 2019

To produce openrsync the paper was very helpful, but also some reverse
engineering was required: ktrace, 'rsync -vvvv', and lots of tcpdump. In
hindsight a specification in the form of a IETF RFC would've been very
helpful :-)

Currently the closest thing to a specification about what happens on the
wire probably is the notes compiled during the openrsync development,
the notes can be found here (mandoc format): https://github.com/openbsd/src/blob/master/usr.bin/rsync/rsync.5

For your convenience i put a HTML version up here: http://sobornost.net/~job/rsync.5.html

Kind regards,

Job