1 / 9

OSPF Header

2. Version (1 byte). Pkt type (1 byte). Type. Length of Pkt (2 bytes). don’t care. Source Router ID (4 bytes). IP:PORT (8 bytes!!). Area ID (4 bytes). don’t care. don’t care. Checksum (2 bytes). Authentication type (2 bytes). don’t care. Authentication data (8 bytes). Don’t care.

creola
Download Presentation

OSPF Header

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 2 Version (1 byte) Pkt type (1 byte) Type Length of Pkt (2 bytes) don’t care Source Router ID (4 bytes) IP:PORT (8 bytes!!) Area ID (4 bytes) don’t care don’t care Checksum (2 bytes) Authentication type (2 bytes) don’t care Authentication data (8 bytes) Don’t care OSPF Header OSPF HEADER OSPF HEADER for this project Type = 1 -> HELLO Type = 3 -> link state request Type = 4 -> link state update Type = 5 -> link state ACK Types we will use

  2. HELLO Packet OSPF Header with Type = 1 (HELLO) OSPF Header with Type = 1 (HELLO) Network Mask (4 bytes) Don’t care (4 bytes) Hello Interval (2 bytes) 10 (2 bytes) Neighbors are the Ids (IP:Port) that have been send a HELLO since the in the previous 40 seconds (dead interval). Put the senders ID last as a delimiter. standard this project options priority Don’t care Dead interval (4 bytes) 40 (4 bytes) Designated router (4 bytes) Don’t care (4 bytes) Backup designated router (4 bytes) Don’t care (4 bytes) 1st recent neighbor ID (4 bytes) 1st Neighbor ID (8 bytes) last recent neighbor ID (4 bytes) SENDER ID (8 bytes)

  3. HELLO Protocol Every hello interval (10 sec) you must send out a hello to ALL neighbors. The HELLOs are even sent across links that seem to be down. During initialization, a HELLO is sent to all neighbors. If a HELLO is received and 1. The receiving node is listed in the recent neighbors list and 2. the sending node’s BIDIRECTIONAL flag is zero, then set it to one and send immediately respond with a HELLO, with, of course, the node that just sent the HELLO on the recent neighbors list. If a HELLO is received and the receiving node is not listed in the recent neighbors list, then immediately respond with a HELLO, with, of course, the node that just sent the HELLO on the recent neighbors list. Whenever a HELLO is received, set the sending node’s LAST_HELLO_TIME to the current time.

  4. The Link State Update packet LSA OSPF Header with Type = 4 (update) LSA Age options LS type Link State ID 4 bytes Number of LSAs Advertising router 4 bytes LSA1 LSA Header LS Sequence Number 4 bytes checksum LSA2 length router type 0 Number of Links Link ID 4 bytes Link Data 6 bytes Link 1 Link type TOS metric

  5. The Link State Update Packet for Project LSA LSA Age Don’t care OSPF Header with Type = 4 (update) Link State ID 8 bytes don’t care 4 bytes Number of LSAs LSA Header LS Sequence Number 4 bytes LSA1 don’t care don’t care Don’t care LSA2 Number of Links Link ID 8 bytes Link Data 6 bytes Link 1 Link type TOS metric

  6. This is not according to the OSPF standard. It will generate more control traffic than the standard, and will not work in all situations. But, it is simpler to program and will suffice for this project. Database Exchange When a link switches to bidirectional, a full database exchange should take place. • Suppose that node A has switched its bidirectional flag to node B to one, • then node A initializes a database exchange: • Node A sends an OSPF link state request packet to node B. • Node B responds by all its LSA’s in one packet. • If A does not get a LSA from B within 2 seconds, A resends an OSPF link state request packet to node B until either it gets an LSA or the link is no longer BIDIRECTIONAL. • When A receives the LSA database, it responds with a link state ACK packet. • If B fails to get a link state ACK within 2 seconds, B retransmits the LSA database. (Remember to not miss sending and receiving HELLO messages while sending a database). • B continues to retransmit the LSA database until the link is no longer BIDIRECTIONAL or the entire database has been sent. Note, since both ends will switch the link to bidirectional, both ends will initiate a database exchange

  7. Reception of link state update A link state update is made up of one or more LSAs When an link state update arrives, send a link state ACK to sending node (not quite the standard). • For each in the LSA in the update • if the sequence number is larger than the sequence number in the current database then • If the Link State ID of in the LSA is not the same as this node’s ID, then • Update link state database • Flood this LSA to all neighbor except the one that sent it. • else • Generate a new LSA with sequence number equal to one plus the sequence number in the arrived LSA. • Flood this LSA to ALL neighbors. • If the LSA sequence number is less than or equal to the one currently in the database, then don’t do anything.

  8. Reliable Flooding • When a packet is to be flooded, put it in the ToBeFlooded list. • This list should contain the packet to be flooded, the address to where it should be sent and the time out, the next time it should be resent. • Hint: Since you should check periodically if packets need to be resent, you can initially put the packet in the list with an expired time out. • When you get an ACK, the packet should be removed from the ToBeFlooded list.

  9. Initialize Send HELLOs wait for packet arrival (but don’t wait more than 2 sec) receive LS update receive HELLO Possibly clear WaitingForUpdate flag Forward data packet receive LS ACK Clear entry on ToBeFlooded List receive LS request Reply to HELLO ? does update contains new LSAs? Reply to HELLO Set Bidirectional? update LSA database Set compute new routing table flag Set Bidirectional and Request LS update Set waiting for LS update from XXX flag0 Add to ToBeFlooded List Any LS update request need to be resent? Send HELLOs if needed Make new routing table If needed send ToBeFlooded list entries Delete link Set compute new routing table flag yes Any overdue HELLOs? Generate new LSA Add to be flooded list yes Clear LSA with MAXAGE and add ToBeFlooded list Age LSA Any overdue LSA?

More Related