Ouroboros Frequently Asked Questions: Difference between revisions

From Ouroboros
Jump to navigation Jump to search
Line 13: Line 13:
=== Ouroboros claims Unicast and Multicast must be distinct mechanisms. However, these mechanisms interact seamlessly for existing protocols such as IP/ARP and IPv6 (where, in particular, IPv6 packets are transmitted as Ethernet multicast until MAC learning occurs). Isn't this contradictory? ===
=== Ouroboros claims Unicast and Multicast must be distinct mechanisms. However, these mechanisms interact seamlessly for existing protocols such as IP/ARP and IPv6 (where, in particular, IPv6 packets are transmitted as Ethernet multicast until MAC learning occurs). Isn't this contradictory? ===


It's not because they are distinct mechanisms, that they can't interact seamlessly. In the case of Ethernet MAC learning, IPv6 doesn't expose this multicast operation to the application. Ethernet itself doesn't even reveal this to IPv6. On the one hand, as far as IPv6 is concerned, Ethernet is always sending that packet in unicast, but before MAC learning, Ethernet is doing it in a very inefficient way (sending to all, and dropping at all but one). This is just a hidden implementation aspect of IP and has nothing to do with our claim. On the other hand, some parts of IPv6 multicast will leverage Ethernet broadcast, but that is a known intentional optimization of which the IPv6 implementation is aware.
It's not because they are distinct mechanisms, that they can't interact seamlessly. In the case of Ethernet MAC learning, IPv6 doesn't expose this multicast operation to the application. Ethernet itself doesn't even reveal this to IPv6. On the one hand, as far as IPv6 is concerned, Ethernet is always sending that packet in unicast, but before MAC learning, Ethernet is doing it in a very inefficient way (sending to all, and dropping at all but one). This is just a hidden implementation aspect of IPv6/Ethernet. On the other hand, some parts of IPv6 multicast will leverage Ethernet broadcast, but that is a known intentional optimization of which the IPv6 implementation is aware.


The claim which we are making is that there is no single abstraction that unifies multicast with unicast. These methods are not transparently interchangeable. Taking an arbitrary unicast program and swapping out unicast for multicast or vice-versa will in almost all cases break that program. It should not be a controversial statement: the proof is pretty straightforward: try to run TCP on top of IP multicast: it won't work because its acknowledgement mechanism depends on one-to-one communication.
The claim which we are making is that there is no single abstraction that unifies multicast with unicast from the point of view of the process that sends the packets. Multicast and unicast are not transparently interchangeable. Taking an arbitrary unicast program and swapping out unicast for multicast or vice-versa will in almost all cases break that program. It should not be a controversial statement: the proof is pretty straightforward: try to run TCP on top of IP multicast: it won't work because its acknowledgement mechanism depends on one-to-one communication.


Giving things with very different semantics (unicast and multicast) a similar syntax, like Ethernet and IP multicast try to do with a "broadcast address", is just a bad idea that causes more problems (and confusion) than it solves. Our claim is that a broadcast address is equivalent to a "layer name", and the construction of "multicast groups" is equivalent to adding nodes to a layer and should be governed by the layer management API, which is common to both unicast and broadcast layers.
Giving things with very different semantics (unicast and multicast) a similar syntax, like Ethernet and IP multicast try to do with a "broadcast address", is just a bad idea that causes more problems (and confusion) than it solves. Ouroboros states that a broadcast address is equivalent to a "layer name", and the construction of "multicast groups" is equivalent to adding nodes to a layer and is governed by the layer management primitives, which are common to both unicast and broadcast layers.


=== Ouroboros seems to ignore how names are used to distinguish multicast/unicast without applications ever knowing (sometimes via name aliases, e.g., DNS) ===
=== Ouroboros seems to ignore how names are used to distinguish multicast/unicast without applications ever knowing (sometimes via name aliases, e.g., DNS) ===

Revision as of 11:49, 12 November 2022

General Remarks

A new model should demonstrate new capabilities instead of just existing ones.

Of course, we understand the sentiment, and we are convinced the Ouroboros prototype will prove to have some exciting capabilities, such as hot-swapping a complete underlying network without breaking an end-to-end application connection. But that is not our primary objective -- yet. As of now, we don't have enough critical components fully implemented to demonstrate such advanced features, let alone evaluate them copared to currrnt technology.

At this point, we are more concerned with building a solid basic understanding of the fundamental principles underlying networks. Finding the minimal conditions that make or break certain network functionalities. The current model (OSI / TCP layering) has little predictive value about what the consequences are going against the 5/7 layers, and the current Internet does not neatly consist of 5 or 7 layers.

The model we are developing should first explain _why_ the networks that we already have actually work. The Ouroboros model has a different conceptual view, different basic building blocks, put together in a conceptually different way. This is a bit orthogonal to the work carried out by engineers building features. Erwin Schrodinger put it as follows: The task is ... not so much to see what no one has yet seen; but to think what nobody has yet thought, about that which everybody sees.

Paper Remarks

Ouroboros claims Unicast and Multicast must be distinct mechanisms. However, these mechanisms interact seamlessly for existing protocols such as IP/ARP and IPv6 (where, in particular, IPv6 packets are transmitted as Ethernet multicast until MAC learning occurs). Isn't this contradictory?

It's not because they are distinct mechanisms, that they can't interact seamlessly. In the case of Ethernet MAC learning, IPv6 doesn't expose this multicast operation to the application. Ethernet itself doesn't even reveal this to IPv6. On the one hand, as far as IPv6 is concerned, Ethernet is always sending that packet in unicast, but before MAC learning, Ethernet is doing it in a very inefficient way (sending to all, and dropping at all but one). This is just a hidden implementation aspect of IPv6/Ethernet. On the other hand, some parts of IPv6 multicast will leverage Ethernet broadcast, but that is a known intentional optimization of which the IPv6 implementation is aware.

The claim which we are making is that there is no single abstraction that unifies multicast with unicast from the point of view of the process that sends the packets. Multicast and unicast are not transparently interchangeable. Taking an arbitrary unicast program and swapping out unicast for multicast or vice-versa will in almost all cases break that program. It should not be a controversial statement: the proof is pretty straightforward: try to run TCP on top of IP multicast: it won't work because its acknowledgement mechanism depends on one-to-one communication.

Giving things with very different semantics (unicast and multicast) a similar syntax, like Ethernet and IP multicast try to do with a "broadcast address", is just a bad idea that causes more problems (and confusion) than it solves. Ouroboros states that a broadcast address is equivalent to a "layer name", and the construction of "multicast groups" is equivalent to adding nodes to a layer and is governed by the layer management primitives, which are common to both unicast and broadcast layers.

Ouroboros seems to ignore how names are used to distinguish multicast/unicast without applications ever knowing (sometimes via name aliases, e.g., DNS)

Some physical layers natively support multicast and some protocols rely on that very feature, how is this accounted for in Ouroboros?

The definitions in the paper only mention link weights, what about node weights and weights that are not just a scalar value?

The authors seem to claim that forwarding is a single hop in a routing table, but it’s the *process* of relaying packets to the next hop that involves selecting ONE of those hops; it isn’t just the set of possible hops

The authors seem to claim that the opposite of flat names are hierarchical names. Non-flat names can have many structures, only one of which is hierarchical, e.g., hypercube names are not hierarchical but are structured and routable based on name content. How do you account for this?

Can the “forwarding layer” can manage congestion control (instead of the protocol performing flow control)?

TCP over TCP is known to perform very badly unless the impact of operating retransmission, reordering, flow control, and congestion control at different layers on top of each other is carefully managed. How will Ouroboros overcome this?