Well,
let's start by noting that while learning about the structure
of a packet can sometimes be a bit dry,
it is also an important thing to have in mind whenever you're
trying to troubleshoot these different protocols,
and in this case, EIGRP.
EIGRP is assigned with an IP protocol number of 88.
So any packets that are marked with this number are part of EIGRP.
This makes the monitoring of EIGRP packets quite simple when
using any modern packet capture utility.
Now let's take a look at the fields that exists within the EIGRP packet header,
starting with the header version.
This is an easy one because this will almost always
be two on any modern equipment.
Next, we have the Opcode.
This field indicates the type of message that is
being included within the packet.
There are a total of 11 different opcodes that are currently supported with
7 actively being used on modern equipment running IP.
These include update, request, query, reply, hello, SIA query, and SIA reply.
We will go further into the use of these specific
packet types in the next module.
The next field is used for a checksum.
A checksum, in this case, ensures that the contents of the packet,
in this case the whole packet, have not been altered from the source.
If the checksum performed by the destination device doesn't
match that contained within this field, then the packet will be discarded.
The next field is used for flags.
This field is used to define how the contents of the
packet are handled by the destination.
There are currently four defined flags: INIT,
CR, or Conditionally Received, RS, or Restart,
and EOT, or End-of-Table.
Again,
how these specific flags are used will be covered in detail in the next module.
Next, we have the Sequence Number.
To ensure the reliability of certain packet types with EIGRP,
it will use a sequence number, an acknowledgement number,
to ensure that packets have been received correctly.
When a packet requires an acknowledgement,
the sequence number will be set to a non-0 number.
If the value is 0, then the packet doesn't require acknowledgement.
The acknowledgement number is used along with a non-0
sequence number in a unicast packet exchange.
When required,
it is set to the same value as the acknowledged packet's
sequence number within an acknowledgement hello packet and
sent back to the initial sender.
Next is the virtual router ID.
Officially,
this field is used to identify the virtual router a packet is associated with.
This is typically going to be set to 0.
To be clear, however,
this is not the router ID that is configured inside the EIGRP process.
And finally, we have the autonomous system number.
This is a 16-bit number that is used to indicate the
boundaries of a specific EIGRP network.
All of the devices within a network must be configured as part of the same
autonomous system for them to form neighborships with each other.
The payload of the packet itself is variable and can be
formatted in a number of different ways.
What they all have in common is a structure that uses a type,
a length, and a value often referred to as the TLV encoding format.
Multiple combinations are possible, but in this course,
we will not get into every possible combination.
But in the next module, we will show a few of the most common TLVs that are used and for what purpose.