From: John Fellenbaum (john.d.fellenbaum@xxxxxxxx)
Date: Wed Aug 16 2000 - 23:54:07 GMT-3
Aaron,
Hello, allow me to introduce myself. My name is John Fellenbaum and I am still
pursuing my CCIE after a failed first attempt.
Check out page 32 of Radia Perlman's book Interconnections Bridges and Routers.
Below is how I remember the conversion from canonical to non-canonical:
The issue here is the first bit on the wire on a byte by byte basis. In
canonical format (i.e. - 802.3 & 802.4) the first bit to hit the wire is the
least significant bit. You may here the term "Little Endian" referring to the
canonical format. I remember this by the association of the "Little End"
equating to the least significant bit. In non-canonical format (i.e. 802.5 &
FDDI) the first bit to hit the wire is the most significant bit. The term "Big
Endian" refers to the non-canonical format. I remember this by the association
of the "Big End" equating to the most significant bit.
The least significant bit is the rightmost bit of the right nibble. The most
significant bit is the leftmost bit of the left nibble. For example, the byte
A2 (hex representation) = 10100010 (binary representation), where 1010 = left
nibble and 0010 = the right nibble. Therefore, the least significant bit of
this byte is the rightmost bit of the right nibble, which is 0 and the most
significant bit of this byte is the leftmost bit of the left nibble, which is
1. This is represented below:
-----------------------------------------
- 1 - 0 - 1 - 0 - 0 - 0 - 1 - 0 -
-----------------------------------------
^ ^
Most Significant Bit (MSB) Least Significant Bit (LSB)
A2 (hex) in canonical format is equivalent to 45 (hex) in non-canonical format.
To perform the conversion from canonical to non-canonical, use the following
conversion table:
Canonical Non-Canonical
---------- ----------------
0000 (0 - hex) = 0000 (0 - hex)
0001 (1 - hex) = 1000 (8 - hex)
0010 (2 - hex) = 0100 (4 - hex)
0011 (3 - hex) = 1100 (C - hex)
0100 (4 - hex) = 0010 (2 - hex)
0101 (5 - hex) = 1010 (A - hex)
0110 (6 - hex) = 0110 (6 - hex)
0111 (7 - hex) = 1110 (E - hex)
1000 (8 - hex) = 0001 (1 - hex)
1001 (9 - hex ) = 1001 (9 - hex)
1010 (A - hex) = 0101 (5 - hex)
1011 (B - hex) = 1101 (D - hex)
1100 (C - hex) = 0011 (3 - hex)
1101 (D - hex) = 1011 (B - hex)
1110 (E - hex) = 0111 (7 - hex)
1111 (F - hex) = 1111 (F - hex)
Perform the conversion a nibble at a time on a byte by byte basis, then swap th
e
nibbles on a byte by btye basis. For example, CD (hex) in canonical format is
equal to B3 (hex) in non-canonical format. The first step is to convert the
nibbles of the byte CD. C in canonical format is equivalent to 3 in
non-canonical format. So C=3.
D in canonical format is equivalent to B in non-canonical format. So D =B. No
w
we have CD=3B. Now swap the nibbles of 3B, which results in B3. Therefore, CD
(canonical) equals B3 (non-canonical).
The address A2-41-42-59-31-51 (canonical) equals 45-82-42-95-8C-8A
(non-canonical). Check out the conversion table above. If you treat the
conversion process as a two step conversion, the first step being converting
the nibbles and the second step being swapping the nibbles. You have at the en
d
of the first step:
A2-41-42-59-31-51 equalling 54-28-24-A9-C8-A8. Now swap the nibbles
54 becomes 45, 28 becomes 82, 24 become 42, A9 becomes 9A, C8 becomes 8C and
A8 becomes 8A. So A2-41-42-59-31-51 (canonical) equals 45-82-42-9A-8C-8A
(non-canonical).
Sorry for being so looooooong winded, but I hope this helps. Good luck in your
pursuit of the CCIE.
Aaron DuShey wrote:
> I know this issue was brought up before, but I am still confused on how to
> do this. Can someone give me a link that may help? Caslow's didn't help much
> at least for me-
> thanks,
>
> Aaron DuShey
>
This archive was generated by hypermail 2.1.4 : Thu Jun 13 2002 - 08:24:27 GMT-3