[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [manet] Three issues with PacketBB



Dearlove, Christopher (UK) wrote:
So two IPv4 addresses differing at the seventh most significant bit
will have to be encoded without a common head part - right?

Right.

In this case, the spec doesn't seem to say whether a head-length is absent or present but equal to 0:
<head-length> if present is an 8 bit field, which contains the
total
length (in octets) of the head of all of the addresses.

That "if present" is a pretty good hint that it doesn't have to be present.
>
But more importantly you missed

      bit 0 (nohead):  if cleared ('0'), then <head-length> is included
         in <address-block>, and <head> may be included in <address-
         block>.  If set ('1'), then <head-length> and <head> are not
         included in <address-block>.

As for including a <head-length> equal to zero, it's legal.
Not efficient, but legal.

Right... I've missed that semantics part, simply because I've never seen a protocol header having a 'address semantics' field. Semantics is to me something to be specified in node behaviour, like when node receives this bit does that, but not to encode in messages...


YEs, but this doesn't show the necessity of the third 'mid' part.
There are only two parts: head and tail ('head' is first 64bits and 'tail'
is the Interface ID or EUI-64).

No, what I'm saying is that a node may use (using upper case letters for 64 bits and a / to join them) A/Z and B/Z as two addresses of the same interface, where Z is its EUI-64. Of course A and B may also have some head bits in common, or may not.

Right, that Z is the tail part.

And 'mid'?

mid is the uncompressed bit. Always is. Sometimes you have a common head. Sometimes you have a common tail. Sometimes you have both. Sometimes you have neither. mid is the bit in the middle that is different. It can have zero length but that will be (I expect) uncommon.

'mid' is one bit only? It seems to me it can have a length too: mid-length = address-length - head-length - tail-length.


Anyways, would you agree a simple way to encode a NEMO Mobile Network Prefix with PacketBB would look like this (ignoring head:mid:tail features)(would you confirm the values of question marks?):


+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | <num-addr> |<addr-semantic>| <tlv-length> | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | <tlv-type> |<tlv-semantics>| <length> | Pad '0' | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +- -+ | | +- IPv6 Address -+ | | +- -+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | <tlv-type2> |<tlv-semantics2| <length2> | PrefixLen | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


num-addr: '1'

     addr-semantics:
              bit 0 (nohead):   '1'
              bit 1 (notail):   '0'
              bit 2 (zerotail): '0'
              bits 3-7:         '0'

     tlv-length: ?

     tlv-type:   ?

     tlv-semantics:
              bit 0 (extended):    '0'
              bit 1 (novalue):     '0'
              bit 2 (noindex):     '1'
              bit 3 (singleindex): '0'
              bit 4 (multivalue):  '?'
              bits 5-7:            '0'

     length: 0x10 ('16' decimal)

     IPv6 address: the IPv6 address that is the Mobile Network Prefix.

     tlv-type2: '0'

     tlv-semantics2: '?'

     length2: '?'

     PrefixLen: Eight-bit unsigned integer indicating the prefix length
                of the IPv6 Address.

I will post this separately as well.


YEs, I agree, but there is much more here than just IPv6 address architecture once you say PacketBB packets are transported in UDP over IPv6...

But invisibly to IPv6. packetbb is just carrying the addresses. It's up to a protocol that does know something about addresses - maybe DYMO, maybe an autoconf mechanism that uses packetbb to interpret those addresses. packetbb is NOT a protocol.

Well I agree PacketBB is not a protocol.

However, and this is something I've already remarked to DYMO, ignoring some fields present in the IPv6 base header (ie rfc2460) is not good either. Also ignoring how other protocols encode addresses (and subsequently specifying new means) is too much programming effort when reuse could be more efficient. Just IMHO.

Alex


______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email ______________________________________________________________________



_______________________________________________ manet mailing list manet at ietf.org https://www1.ietf.org/mailman/listinfo/manet