RSVP Refresh Overhead Reduction by State Compression Lan Wang, Andreas Terzis, Lixia Zhang UCLA with...
-
Upload
lisa-lawrence -
Category
Documents
-
view
213 -
download
0
Transcript of RSVP Refresh Overhead Reduction by State Compression Lan Wang, Andreas Terzis, Lixia Zhang UCLA with...
RSVP Refresh Overhead Reductionby State Compression
Lan Wang, Andreas Terzis, Lixia ZhangUCLA
with input from Paxson, Braden, Berson, the interim meeting and
others
2
Goals
• Reduce the refresh overhead of RSVP– one refresh message per session per
refresh period --> one message per RSVP neighbor
• Minimize re-synchronization delay– when sessions added/deleted– when two neighbors discover
inconsistencies in RSVP state
• Keep the soft-state nature of RSVP– Refresh messages are sent periodically.
3
Approach• Digest
– a compressed version of the RSVP state shared between two nodes (made of a set of signatures)
• Digests sent periodically to neighbor nodes– refresh RSVP state– discover inconsistency
• Raw RSVP messages sent only when– state changes: e.g. Tspec/Rspec changes,
session addition/deletion– re-synchronizing session state
4
Digest-capable neighbor discovery
• Request ACK when sending raw RSVP msgs – Add a D-bit to MESSAGE_ID object to indicate
compression-capable
• Three cases:– Receive ACK with D-bit set in MESSAGE_ID
•neighbor is compression-capable
– Receive ACK with D-bit off in MESSAGE_ID•neighbor is compression-incapable
– Receive PathErr or ResvErr message: “legacy” RSVP neighbor
5
LimitationsLost automatic route adaptability in original
RSVP
• Rely on specific notification to adjust to– routing changes– multicast group membership changes
• do not handle non-RSVP cloud case
S AB
CDNon-RSVP Cloud
Original Route
New Route
6
Neighbor Data StructureNeighbor Struct +--------------- +| IP Address | +--------------- +| OutSession |--> Hash Table for outgoing sessions+--------------- + | OutDigest |--> top level of OutDigest tree +--------------- +|RefreshOutTimer |+----------------+| IDLastSent |+----------------+|OutDigestTimeout|+----------------+| InSession |--> Hash Table of incoming sessions+----------------+| InDigest |--> top level of InDigest tree+----------------+| CleanupInTimer |+----------------+
7
Session Signature Computation
• Objects included in computation
RSVP Structure Objects to Include
Session Session Object
PSB Sender Template, Sender Tspec,ADSPEC, Policy Data
RSB Filterspec, Flowspec, Style, PolicyData
8
digest
Hash TableM Entries
• M: number of slots in the hash table• multiple sessions may hash to the same slot• compute a signature for each slot• neighbor nodes send this list of M signatures in place of
raw RSVP refresh msgs
Digest Computation (simple version)
9
digest
Hash Table
Level-1 signatures
Level-2 signatures
M Entries
• M: number of entries in the hash table• N: number of signatures contained in a digest
(fit into one packet)• neighbors exchange digest msg periodically
Digest Computation (high compression version)
• Digest Tree:
10
MESSAGE_ID Object0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |A|D| Flags | Epoch |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message_ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
• Object format defined in draft-berger-rsvp-refresh-reduct-03.txt
• We added D-bit in flags field for neighbor discovery
11
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Level | Group |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved | Number of Signatures |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
// signature list //
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
• Class in 10bbbbbb range• Level: level of signatures in digest tree• Group: Block of signatures inside level• Number of Signatures: # of signatures in object• Signature list: a list of checksums
DIGEST Object
12
1. Digest Message (Msg Type 14)<Digest Message> ::= <Common Header> [<INTEGRITY>]<MESSAGE_ID> <DIGEST> [<TIME_VALUES>]
– Digest message must contain a MESSAGE_ID object with Ack_Requested bit set
2. DigestErr Message (Msg Type 16)<DigestErr Message> ::= <Common Header> [<INTEGRITY>]<MESSAGE_ID> <DIGEST>
– Negative ack, contains digest computed at receiver
New Messages
13
Normal Case ExamplePATH
ACK(d)
Digest
ACK
New Neighbor !Set Digest Timer
RSVP Msgs
Received digest matches with local InDigest
Digest Refresh timer times out
14
Recovery Procedure• DigestErr contains set of (top level) signatures computed at the receiving
side– Sender finds which of the N signatures differ
• Sends new Digest message(s) of next lower level rooted at mismatched signatures– Follow same procedure until reach
the bottom of the digest tree – Refresh all sessions corresponding to the mismatched signatures
15
Digest(t1)
ACK(t1)
PATH
DigestErr(t2)
Sync!
Digest(t2)
More RSVP Msgs
DigestErr
ACK msgsDigest(t3)
ACK(t3)Synchronized!
Recovery Example
ACK
Start recoveryLower-level Digest
More lower-level Digest and DigestErr msgsRaw RSVP msgs
16
• Digest Tree requires O(T+M) space.• Computation cost of signature: depend on the
compression algorithm– MD5 and CRC linear on the size of the message
• Update signature of a hash slot: f(T/M*s)– s is signature size, f() cost to compute
signature– T/M: average number of sessions in a hash slot
• Update tree: (logNM – 1)* f(N*s)
Digest Computation Costs
17
Summary of Changes Required
• Protocol– 1 new object (DIGEST)– 2 new message types (Digest,
DigestErr)
• State– Neighbor Data Structure per neighbor
•hash table•signature tree
18
Features
• Efficient state re-synchronization • Allow individual nodes to choose
original RSVP refreshes or the refresh reduction
• Backward compatibility with the current RSVP implementation
• Incremental digest computation when part of the session(s) changes state
19
PATH(Ad)
Ad Ad’
PATH(Ad’)
ADSPEC & POLICY_DATA• POLICY & ADSPEC
– These objects can change locally– Current RSVP spec keeps object received
• Need to keep copy of the forwarded object to calculate digest for that neighbor
• Digest refreshes trigger updates for these objects
• How to detect changes– always assume new– expect explicit notification