PCN WG (Pre-Congestion Notification)
– a brief status update
Philip Eardley, BTTSVAREA, IETF-73 Minneapolis
18 Nov 08
http://tools.ietf.org/wg/pcn/
Main message
• The key docs are at critical stage…– Architecture (Info): about to do IETF Last Call– Baseline encoding (Std): WG Last Call very soon– Marking behaviour (Std): WG Last Call very soon– Feedback welcome asap
• … so you may want to think about how to implement and/or use it, or how it might impact on what you’re doing
What is Pre-Congestion Notification?
• Objective:– Protect the quality of service of established inelastic flows within a
single DiffServ domain,– by using flow admission and termination based on pre-congestion
information• Flow Admission (for “normal” situations) • Flow Termination (for “unusual” situations, eg failures)
• Motivation:– Admission control: there are a range of existing CAC approaches
with a range of scalability-accuracy tradeoffs• classic trade-off between flow admission ctrl (smarts) vs. generous
sizing (capacity)• PCN offers a scalable light-weight solution with strong QoS assurances
– Flow termination: typical current approach is just to wait for users to hang up
• PCN rapidly removes some flows in order to preserve QoS of the rest
BTS
MSC
PCN
V
V
PCN-boundary-node
PCN-interior-node
V
BTS
MSCPCN-boundary-node
PCN: Example scenario
• PCN-boundary-node = VoIP Trunk GW• VoIP Trunk GW handles high number of calls• All per-flow state restricted to VoIP GWs
BTS
MSC
PCN
V
V
PCN-boundary-node
PCN-interior-node
V
BTS
MSCPCN-boundary-node
PCN: Example scenario
• monitor PCN-marks (for a pair of boundary nodes)• and hence make decisions about whether to admit new flows (or terminate existing flows)
• measure current load of PCN-traffic• selectively mark packets if congestion appears imminent (hence pre-congestion)
• DiffServ forwarding• typically EF PHB
PCN Concept
• 2 levels of pre-congestion notification encoded into pkt headers• or 1 level if short of PCN codepoints
==Marking behaviour== ==PCN mechanisms== Rate of ^ PCN -traffic on | bottleneck link | (as below and also) | (as below) Drop some PCN -pkts | scheduler rate -|------------------------------------------------ (for PCN -traffic) | | Some pkts Terminate some | excess -traffic -marked admitted flows | & & | Rest of pkts Block new flows | threshold -marked | PCN -excess-rate -|------------------------------------------------ (=PCN-supportable -rate)| | All pkts Block new flows | threshold -marked | PCN-threshold -rate -|------------------------------------------------ (=PCN-admissible -rate)| | No pkts Admit new flows | PCN -marked |
Encoding• (STD) Baseline encoding
– Uses 1 DSCP • Allows re-use of other DSCPs
– Switches on PCN behaviour using ECN field– Compatible with existing tunnels (RFC 3168 & 4301)– Gives 1 level of PCN-marking
DSCP 00 10 01 11
DSCP1 Not-PCN NM(not marked)
EXP PM(PCN-
marked)
• (EXPTL) Extension encodings– Extra encoding states so can distinguish different sorts of PCN-marking
Next steps
• Complete current WG docs to RFC– Architecture; baseline encoding; marking behaviour
• Progress one or more boundary node behaviours (EXPTL)– ie methods to do flow admission & termination based
on the PCN-marked pkts– Several on the table
• Progress one or more Encoding extensions (EXPTL)– Several on the table
• Signalling reqts for PCN info (eg ingress informed about measurements made by egress)
• Spare slides
PCN motivation• flow admission ctrl (smarts) vs. generous sizing (capacity)
• classic trade-off with diseconomy of scale either way• the more hops away from admission control smarts• the more generous sizing is needed for the voice/video class
edge & interiorflow admission controlover Diffserv
edge flowadmission controlover Diffserv
Backbone provider
CustomerN/wk
CustomerN/wk AccessAccess BackhaulBackhaul CoreCore
Customerrouter
MetroNode
MSAN
Customer Access Provider
CustomerN/wk
CustomerN/wkAccessAccessBackhaulBackhaul
Customerrouter
MetroNode
MSAN
CustomerAccess Provider
€ €€ €€ €
€ €€ €
€€€ €
€€€€€
gen
erou
ssi
zing
PCN with Diffserv
Marking behaviour
+ --------- + Result + ->|Threshold| ------- + | | Meter | | | + --------- + V + --------- + + - - - - -+ | + ------ + | BA | | | | | | Marked Packet =>|Classify |==>|Condition|==?================>|Marker |==> Packet Stream | | | | | | | Stream + --------- + + - - - - -+ | + ------ + | + --------- + ^ | | Exce ss | | + ->| Traffic | ------- + | Meter | Result + --------- + PCN-interior-node
Is it a PCN-pkt? (optional)
If rate of PCN-pkts > PCN-threshold-rate then mark all pkts
Write encoding in pkt
If rate of PCN-pkts > PCN-excess-rate then mark pkts above this rate