diff --git a/protocol-3.md b/protocol-3.md index 0dc5b63..2f674c5 100644 --- a/protocol-3.md +++ b/protocol-3.md @@ -36,19 +36,6 @@ When sending a message, check the cache for the given destination. If there is a ### Optional: Broadcast address Packets addressed to the broadcast address, an address beginning with the tilde character, `~`, ASCII 126, can optionally be received by all nodes of the same layer 2 network. While a node MAY forward a broadcast packet to other nodes, it SHOULD NOT, unless both sides of the forward are prepared to handle such a packet, to avoid it going around the entire layer 3 network. -### Optional: Multicast -A multicast packet has a specially formatted address part. -The address must be a list of valid addresses, beginning with `~` seperated by the tilde character, `~`, ASCII 126. -For example, to send to nodes `a` and `b`, the address in the packet would be `~a~b`. - -Each node should send multicasts as layer 2 broadcasts, unless it is known (using the address cache) that all layer 3 destination addresses have to be sent to or forwarded by one layer 2 address. - -When a multicast packet is forwarded, the addresses already seen SHOULD be removed from the packet when possible, using the address cache as a guide. - -The same address MUST NOT be repeated in a multicast destination, but the duplicate MAY be ignored and just considered one, but also MAY br dropped as an invalid packet. A duplicate address MUST NOT be considered as two packets with the same contents to the same address. - -A multicast packet SHOULD also be able to be broken up into multiple packets with the same contents (but they need different packet IDs!) with different addresses. - ### WIP, Optional: Network status packets Currently undecided on specifics and taking input. diff --git a/protocol-ext-multicast.md b/protocol-ext-multicast.md new file mode 100644 index 0000000..e042c5c --- /dev/null +++ b/protocol-ext-multicast.md @@ -0,0 +1,13 @@ +### Optional: Multicast +A multicast packet has a specially formatted address part. +The address must be a list of valid addresses, beginning with `~` seperated by the tilde character, `~`, ASCII 126. +For example, to send to nodes `a` and `b`, the address in the packet would be `~a~b`. + +Each node should send multicasts as layer 2 broadcasts, unless it is known (using the address cache) that all layer 3 destination addresses have to be sent to or forwarded by one layer 2 address. + +When a multicast packet is forwarded, the addresses already seen SHOULD be removed from the packet when possible, using the address cache as a guide. + +The same address MUST NOT be repeated in a multicast destination, but the duplicate MAY be ignored and just considered one, but also MAY br dropped as an invalid packet. A duplicate address MUST NOT be considered as two packets with the same contents to the same address. + +A multicast packet SHOULD also be able to be broken up into multiple packets with the same contents (but they need different packet IDs!) with different addresses. +