From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=none (p=none dis=none) header.from=gibson.dropbear.id.au Authentication-Results: passt.top; dkim=pass (2048-bit key; secure) header.d=gibson.dropbear.id.au header.i=@gibson.dropbear.id.au header.a=rsa-sha256 header.s=202512 header.b=OGpaLuvA; dkim-atps=neutral Received: from mail.ozlabs.org (gandalf.ozlabs.org [150.107.74.76]) by passt.top (Postfix) with ESMTPS id 1D37E5A0652 for ; Wed, 17 Dec 2025 03:09:55 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gibson.dropbear.id.au; s=202512; t=1765937390; bh=7Isi/G+QB0obpCSBkHVekUeEmfO4y9puvIdsRcxyFiM=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=OGpaLuvAvNnaZ8A0mwAxbXe+tSbRe6oZod9tzGNFhvALDLtaUutad7YAyAZPX208A 4ycIQnU6TaAcc154BokPbP7gCvelD3DmWqjQrYHGS5QdC6KN0iyS7QHV+vVllrx2To q9DmAfUOh4aF4HKQnwD07J547lBqFgCMVZEmVkPzkVVHI/ey3++lDbScDrTNPCJeIq QDpeeeCngoGwZzTlINDt+I4c9qqmg56idIoewVZELX1tAjxJ57zBdTeCwYeZANGKwq l4HzOUdE0/2rAG9udJqAzSd/qfe/tsGenYMNgMPTMOloTWxrAmQZU8fNEqnGPpvJWl I3MjDuveRdZCQ== Received: by gandalf.ozlabs.org (Postfix, from userid 1007) id 4dWHLQ6xWVz4wGT; Wed, 17 Dec 2025 13:09:50 +1100 (AEDT) Date: Wed, 17 Dec 2025 13:01:36 +1100 From: David Gibson To: Stefano Brivio Subject: Re: Thoughts on interface modes / multiple guest addresses Message-ID: References: <20251217012936.5aefec93@elisabeth> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="P2DpS2drSQPMqNJF" Content-Disposition: inline In-Reply-To: <20251217012936.5aefec93@elisabeth> Message-ID-Hash: 65YD7D4Z7N3BNR2JRETVYZGL3IZZ5E4F X-Message-ID-Hash: 65YD7D4Z7N3BNR2JRETVYZGL3IZZ5E4F X-MailFrom: dgibson@gandalf.ozlabs.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Jon Maloy , passt-dev@passt.top X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: --P2DpS2drSQPMqNJF Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Dec 17, 2025 at 01:29:36AM +0100, Stefano Brivio wrote: > On Tue, 16 Dec 2025 16:53:49 +1100 > David Gibson wrote: >=20 > > Hi Jon, > >=20 > > As discussed on the call yesterday, I've written up my thoughts on > > what a bunch of the address semantics should be. Turns out I'd > > already done some of this at: > > https://pad.passt.top/p/InterfaceMode >=20 > Two general comments: >=20 > 1. local mode is already implemented, and some things such as the > interface name ("tap0") are already defined, see man page and > 'pasta -- pasta --config-net ip a' Yes, I'm aware. The two modes have the "normal" and "local" local to indicate the existing modes they're more similar to (neither is identical to current behaviour). Another point I left out is that this is intended as an endpoint to aim at. Getting there I expect to involve extra stuff for compatiblity along the way. > 2. I think it's more relevant to define the basics of how one switches > between the existing local mode and a mode where we copy addresses > and routes (as they become available on the host), rather than > defining every single detail of these modes. Oh.. right. I guess I did't make this clear: these are modes set by the command line (details TBD), we never switch between them at runtime. They kind of have to be, because which mode we're in affects how we respond to runtime changes. > In these terms, I think it would actually be helpful to *avoid* > seeing them as separate modes. If there's no host connectivity, we'll > start in local mode, and switch to the other mode as we get addresses > and routes configured... just to switch back to the previous mode if > we lose them. The whole point of all-interface mode (better name suggestions welcome) is that the guest's routing configuration *doesn't* change, even if the host's does. Advantages: * The host can have whatever source-dependent, multi-path, bizarro routing configuration, changing as often as it likes and we (and the guest) don't care. Guest routes to the host, host routes onward from there. * We have a consistent (link local) way of addressing the host regardless of what changes happen on the host side * We have the freedom to allocate link-local addresses if we want them for any purpose Disadvantages: * No access to external peers via link-local address * Guest's routing setup is visibly different from the host's (so less L3 transparent) I actually think that's a more useful and robust way of operating for most use cases and we should eventually make it the default. One-interface mode is for the use cases where those disadvantages are fatal. There is another possible option here: present multiple interfaces in the guest, one for each host interface. I'm not including it, since it's basically equivalent to having multiple pasta instances in one-interface mode. To implement this, we'd basically have to implement one-interface mode first. > So does it really help to have "modes" instead of just considering > what addresses and routes are we going to delete, and when? Because > that's what we'll need to do anyway (and that's what I think defines > the design). I haven't seen a way to define coherent semantics that cover all the use cases without introducing two modes. The overlapping constraints here are: * With passt or !--config-net, we can't fully control the guest's networking config. We both can't set things with arbitrary precision, and we don't have a way of forcing an update when things change. * If we're dealing with multiple host interfaces - either concurrently or to a lesser extent over time, then there's no way to coherently map host-side link-local addresses to the guest. > I see that this is not an explicit use case in Jon's list (which I > still have to review), but it's one of the most two fundamental ones > I think (that, and Podman Quadlets), also nicely described by a user > at: >=20 > https://github.com/containers/podman/discussions/22737#discussioncom= ment-9478727 Ah, yes, that is another case. I think it would work out equivalent to one-interface mode attached to a dummy0 interface on the host. So, it should be fairly easy to implement in terms of one-interface mode, just pretending a dummy0 existed even if it doesn't. > > I've now updated to cover some more things, and considering the > > possibility of multiple guest addresses.. Turns out etherpad doesn't > > really do tables, so it's two sections for the two suggested modes, > > with matching subheadings. >=20 > It does, but I disabled the plug-in as you reported an issue which > turned out to be https://github.com/bitwarden/clients/issues/17598 > instead, and I was trying to sort out other possible reasons. >=20 > I just re-enabled it, tables are available from the toolbar, there's > an icon just left of "Font Family". Note that it's still beta: >=20 > https://www.npmjs.com/package/ep_data_tables >=20 > and it has a couple of glitches. I just found one (which I didn't debug > or report yet): don't start a page with a table, always write something > before, otherwise it gets duplicated every time you load the document. >=20 > Other than that it looks reasonably robust to me, maybe quickly try with > a test pad first but I think it should be usable. Great, thanks. --=20 David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson --P2DpS2drSQPMqNJF Content-Type: application/pgp-signature; name=signature.asc -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEO+dNsU4E3yXUXRK2zQJF27ox2GcFAmlCDvEACgkQzQJF27ox 2Ge9AhAAjfGlexLykk2ZZHBxNUGPrqqsGCNCB9xMmB3gv1Cix7/y9BEfUCoGAEjG wUj99+sZR6grbiXpUV5vNwYgbyZUo5/6oMXplqNCQ7d9DWdnmIprO8TjfcQPg7gC a94C1x9IakhK2jSzvzONnuZPHxmQns5ypjrYIKcEjHDbLiWm2U6Mgsh8jjZlzfcj JahrrxGgfyi6HhCdRynJThVsA03ghMFtn8pzC+ZrrMzi/DuKg+wYdxFLYbmmHfRZ l54j60IT4KxDUiY3eP2effVydSB72OJUUeyk8hzgBqZgSL06H6Ql7SJqzRtsDyyP NSqA5xTm7F3PEGKpm7JYRk0NUO0mKfsNBdiwwWoV4ovNO0cS0Pk8o2CEbEMNc6u6 RGFXPlNpb6DwlaROWYE7BE4I2CpS+Ru7Zep08UBodA9NqjVkgfj53E+TZYyTXtlT pR66I/OqVcvogxsHQ117EIxnp+qrM0s1iOItvBmE+BbHyxUtZaCAsohru5oEjpou qWuJK26s958mbAcczWyL7YirwHqIeTk54ypZ/nKF2C3UdRKMn1MXkBv44y/Qgkzv H/LeP+JY+tWMzdWuc8EQO0S5L49t6n/VZ9wj4XFTpshgt2jWkYstODiLltRL2Cky DJDdm4w4Z92D4sTTMCA5eVgjd2fo2yXvMeJL2JAZsBmHYgLPMAY= =B4pb -----END PGP SIGNATURE----- --P2DpS2drSQPMqNJF--