Presentation is loading. Please wait.

Presentation is loading. Please wait.

OSPF Header OSPF HEADER OSPF HEADER for this project Types we will use

Similar presentations


Presentation on theme: "OSPF Header OSPF HEADER OSPF HEADER for this project Types we will use"— Presentation transcript:

1 OSPF Header OSPF HEADER OSPF HEADER for this project Types we will use
Version (1 byte) Pkt type (1 byte) Length of Pkt (2 bytes) Source Router ID (4 bytes) Area ID (4 bytes) Checksum (2 bytes) Authentication type (2 bytes) Authentication data (8 bytes) 2 Type don’t care IP:PORT (8 bytes!!) Don’t care 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 standard this project
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) standard 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. options priority this project 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 LSA1 Advertising router 4 bytes LSA Header LS Sequence Number 4 bytes LSA2 checksum length router type 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 LSA2 Don’t care Number of Links Link ID 8 bytes Link Data 6 bytes Link 1 Link type TOS metric

6 Database Exchange 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. 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 yes yes 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 yes Delete link Set compute new routing table flag 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?


Download ppt "OSPF Header OSPF HEADER OSPF HEADER for this project Types we will use"

Similar presentations


Ads by Google